clfs-2.1
        clfs-3.0.0-systemd
        clfs-3.0.0-sysvinit
        systemd
        sysvinit
      
      
        
          | Last change
 on this file since ddecf9d 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.