clfs-1.2
        clfs-2.1
        clfs-3.0.0-systemd
        clfs-3.0.0-sysvinit
        systemd
        sysvinit
      
      
        
          | 
            Last change
 on this file since 489286f was             b17b911f, checked in by jim <clfs@…>, 16 years ago           | 
        
        
          | 
             
Updated eglibc fetch script. 
 
           | 
        
        
          
            
              - 
Property                 mode
 set to                 
100644
               
             
           | 
        
        
          | 
            File size:
            1.9 KB
           | 
        
      
      
| Line |   | 
|---|
| 1 | Description: Fixes Segfault when using localdef.
 | 
|---|
| 2 |              This problem is only noticed when using PaX
 | 
|---|
| 3 |              and some architectures besides x86.
 | 
|---|
| 4 |              See debian bug # 231438
 | 
|---|
| 5 | 
 | 
|---|
| 6 |              Rediffed for 2.8 by Joe Ciccone
 | 
|---|
| 7 |              Rediffed for 2.9 by Joe Ciccone
 | 
|---|
| 8 | 
 | 
|---|
| 9 | diff -Naur glibc-2.8.orig/locale/programs/3level.h glibc-2.8/locale/programs/3level.h
 | 
|---|
| 10 | --- glibc-2.8.orig/locale/programs/3level.h     2007-07-15 20:54:59.000000000 -0400
 | 
|---|
| 11 | +++ glibc-2.8/locale/programs/3level.h  2008-09-20 12:09:34.000000000 -0400
 | 
|---|
| 12 | @@ -203,6 +203,42 @@
 | 
|---|
| 13 |         }
 | 
|---|
| 14 |      }
 | 
|---|
| 15 |  }
 | 
|---|
| 16 | +
 | 
|---|
| 17 | +/* GCC ATM seems to do a poor job with pointers to nested functions passed
 | 
|---|
| 18 | +   to inlined functions.  Help it a little bit with this hack.  */
 | 
|---|
| 19 | +#define wchead_table_iterate(tp, fn) \
 | 
|---|
| 20 | +do                                                                           \
 | 
|---|
| 21 | +  {                                                                          \
 | 
|---|
| 22 | +    struct wchead_table *t = (tp);                                           \
 | 
|---|
| 23 | +    uint32_t index1;                                                         \
 | 
|---|
| 24 | +    for (index1 = 0; index1 < t->level1_size; index1++)                              \
 | 
|---|
| 25 | +      {                                                                              \
 | 
|---|
| 26 | +       uint32_t lookup1 = t->level1[index1];                                 \
 | 
|---|
| 27 | +       if (lookup1 != ((uint32_t) ~0))                                       \
 | 
|---|
| 28 | +         {                                                                   \
 | 
|---|
| 29 | +           uint32_t lookup1_shifted = lookup1 << t->q;                       \
 | 
|---|
| 30 | +           uint32_t index2;                                                  \
 | 
|---|
| 31 | +           for (index2 = 0; index2 < (1 << t->q); index2++)                  \
 | 
|---|
| 32 | +             {                                                               \
 | 
|---|
| 33 | +               uint32_t lookup2 = t->level2[index2 + lookup1_shifted];       \
 | 
|---|
| 34 | +               if (lookup2 != ((uint32_t) ~0))                               \
 | 
|---|
| 35 | +                 {                                                           \
 | 
|---|
| 36 | +                   uint32_t lookup2_shifted = lookup2 << t->p;               \
 | 
|---|
| 37 | +                   uint32_t index3;                                          \
 | 
|---|
| 38 | +                   for (index3 = 0; index3 < (1 << t->p); index3++)          \
 | 
|---|
| 39 | +                     {                                                       \
 | 
|---|
| 40 | +                       struct element_t *lookup3                             \
 | 
|---|
| 41 | +                         = t->level3[index3 + lookup2_shifted];              \
 | 
|---|
| 42 | +                       if (lookup3 != NULL)                                  \
 | 
|---|
| 43 | +                         fn ((((index1 << t->q) + index2) << t->p) + index3, \
 | 
|---|
| 44 | +                             lookup3);                                       \
 | 
|---|
| 45 | +                     }                                                       \
 | 
|---|
| 46 | +                 }                                                           \
 | 
|---|
| 47 | +             }                                                               \
 | 
|---|
| 48 | +         }                                                                   \
 | 
|---|
| 49 | +      }                                                                              \
 | 
|---|
| 50 | +  } while (0)
 | 
|---|
| 51 | +
 | 
|---|
| 52 |  #endif
 | 
|---|
| 53 |  
 | 
|---|
| 54 |  #ifndef NO_FINALIZE
 | 
|---|
| 55 | 
 | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.