diff options
Diffstat (limited to 'fixincludes')
-rw-r--r-- | fixincludes/ChangeLog | 7 | ||||
-rw-r--r-- | fixincludes/fixincl.x | 52 | ||||
-rw-r--r-- | fixincludes/inclhack.def | 32 | ||||
-rw-r--r-- | fixincludes/tests/base/pthread.h | 14 |
4 files changed, 100 insertions, 5 deletions
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog index 9bfa5a5e055..d32327ba4d2 100644 --- a/fixincludes/ChangeLog +++ b/fixincludes/ChangeLog @@ -1,3 +1,10 @@ +2006-10-01 Uros Bizjak <uros@kss-loka.si> + + * inclhack.def (glibc_mutex_init): New fix. + * tests/base/pthread.h: Update. + + * fixincl.x: Regenerate. + 2006-09-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * inclhack.def (solaris_mutex_init_2): Update for Solaris9. diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index e9c8b882b58..38d4f276c8b 100644 --- a/fixincludes/fixincl.x +++ b/fixincludes/fixincl.x @@ -2,11 +2,11 @@ * * DO NOT EDIT THIS FILE (fixincl.x) * - * It has been AutoGen-ed Thursday September 28, 2006 at 11:06:33 PM EDT + * It has been AutoGen-ed Saturday September 30, 2006 at 01:08:07 PM CEST * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT CVS-MERGE THIS FILE, EITHER Thu Sep 28 23:06:33 EDT 2006 +/* DO NOT CVS-MERGE THIS FILE, EITHER Sat Sep 30 13:08:07 CEST 2006 * * You must regenerate it. Use the ./genfixes script. * @@ -15,7 +15,7 @@ * certain ANSI-incompatible system header files which are fixed to work * correctly with ANSI C and placed in a directory that GNU C will search. * - * This file contains 199 fixup descriptions. + * This file contains 200 fixup descriptions. * * See README for more information. * @@ -2182,6 +2182,42 @@ static const char* apzFreebsd_Gcc4_BreakagePatch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Glibc_Mutex_Init fix + */ +tSCC zGlibc_Mutex_InitName[] = + "glibc_mutex_init"; + +/* + * File name selection pattern + */ +tSCC zGlibc_Mutex_InitList[] = + "|pthread.h|"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_Mutex_InitMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGlibc_Mutex_InitSelect0[] = + "\\{ *\\{ *0, *\\} *\\}"; + +#define GLIBC_MUTEX_INIT_TEST_CT 1 +static tTestDesc aGlibc_Mutex_InitTests[] = { + { TT_EGREP, zGlibc_Mutex_InitSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_Mutex_Init + */ +static const char* apzGlibc_Mutex_InitPatch[] = { "sed", + "-e", "/define[ \t]\\+PTHREAD_MUTEX_INITIALIZER[ \t]*\\\\/,+1s/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/", + "-e", "/define[ \t]\\+PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\/N;s/^[ \t]*#[ \t]*\\(define[ \t]\\+PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\\\)\\n[ \t]*{ { 0, } }/# if __WORDSIZE == 64\\n# \\1\\n { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }\\n# else\\n# \\1\\n { { 0, 0, 0, 0, 0, 0, 0, 0 } }\\n# endif/", + "-e", "/define[ \t]\\+PTHREAD_COND_INITIALIZER/s/{ { 0, } }/{ { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } }/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Gnu_Types fix */ tSCC zGnu_TypesName[] = @@ -8104,9 +8140,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 242 +#define REGEX_COUNT 243 #define MACH_LIST_SIZE_LIMIT 261 -#define FIX_COUNT 199 +#define FIX_COUNT 200 /* * Enumerate the fixes @@ -8162,6 +8198,7 @@ typedef enum { EXCEPTION_STRUCTURE_FIXIDX, FREEBSD_GCC3_BREAKAGE_FIXIDX, FREEBSD_GCC4_BREAKAGE_FIXIDX, + GLIBC_MUTEX_INIT_FIXIDX, GNU_TYPES_FIXIDX, HP_INLINE_FIXIDX, HP_SYSFILE_FIXIDX, @@ -8564,6 +8601,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { FREEBSD_GCC4_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aFreebsd_Gcc4_BreakageTests, apzFreebsd_Gcc4_BreakagePatch, 0 }, + { zGlibc_Mutex_InitName, zGlibc_Mutex_InitList, + apzGlibc_Mutex_InitMachs, + GLIBC_MUTEX_INIT_TEST_CT, FD_MACH_ONLY, + aGlibc_Mutex_InitTests, apzGlibc_Mutex_InitPatch, 0 }, + { zGnu_TypesName, zGnu_TypesList, apzGnu_TypesMachs, GNU_TYPES_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE, diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index acef2588c85..04c6ef5f899 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -1288,6 +1288,38 @@ fix = { }; +/* glibc-2.3.5 defines pthread mutex initializers incorrectly, + * so we replace them with versions that correspond to the + * definition. + */ +fix = { + hackname = glibc_mutex_init; + files = pthread.h; + select = '\{ *\{ *0, *\} *\}'; + sed = "/define[ \t]\\+PTHREAD_MUTEX_INITIALIZER[ \t]*\\\\/,+1" + "s/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/"; + sed = "/define[ \t]\\+PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\/" + "N;s/^[ \t]*#[ \t]*" + "\\(define[ \t]\\+PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\\\)\\n" + "[ \t]*{ { 0, } }/# if __WORDSIZE == 64\\n" + "# \\1\\n" + " { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }\\n" + "# else\\n" + "# \\1\\n" + " { { 0, 0, 0, 0, 0, 0, 0, 0 } }\\n" + "# endif/"; + sed = "/define[ \t]\\+PTHREAD_COND_INITIALIZER/" + "s/{ { 0, } }/{ { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } }/"; + + test_text = + "#define PTHREAD_MUTEX_INITIALIZER \\\\\n" + " { { 0, } }\n" + "# define PTHREAD_RWLOCK_INITIALIZER \\\\\n" + " { { 0, } }\n" + "#define PTHREAD_COND_INITIALIZER { { 0, } }"; +}; + + /* * Fix these files to use the types we think they should for * ptrdiff_t, size_t, and wchar_t. diff --git a/fixincludes/tests/base/pthread.h b/fixincludes/tests/base/pthread.h index b8366bfe51f..b1c4d517bce 100644 --- a/fixincludes/tests/base/pthread.h +++ b/fixincludes/tests/base/pthread.h @@ -56,6 +56,20 @@ #endif /* ALPHA_PTHREAD_INIT_CHECK */ +#if defined( GLIBC_MUTEX_INIT_CHECK ) +#define PTHREAD_MUTEX_INITIALIZER \ + { { 0, 0, 0, 0, 0, 0 } } +# if __WORDSIZE == 64 +# define PTHREAD_RWLOCK_INITIALIZER \ + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } +# else +# define PTHREAD_RWLOCK_INITIALIZER \ + { { 0, 0, 0, 0, 0, 0, 0, 0 } } +# endif +#define PTHREAD_COND_INITIALIZER { { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } } +#endif /* GLIBC_MUTEX_INIT_CHECK */ + + #if defined( PTHREAD_PAGE_SIZE_CHECK ) extern int __page_size; #endif /* PTHREAD_PAGE_SIZE_CHECK */ |