*
* 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.
*
* 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.
*
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * 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[] =
*
* 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
EXCEPTION_STRUCTURE_FIXIDX,
FREEBSD_GCC3_BREAKAGE_FIXIDX,
FREEBSD_GCC4_BREAKAGE_FIXIDX,
+ GLIBC_MUTEX_INIT_FIXIDX,
GNU_TYPES_FIXIDX,
HP_INLINE_FIXIDX,
HP_SYSFILE_FIXIDX,
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,
};
+/* 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.
#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 */