From fa71a5c3eb2243e5f94dd593966693a36470f35d Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Fri, 17 Sep 2004 22:58:40 +0000 Subject: [PATCH] inclhack.def (linux_ia64_ucontext): New fix. * inclhack.def (linux_ia64_ucontext): New fix. * fixincl.x: Regenerate. * tests/base/sys/ucontext.h: New file. From-SVN: r87677 --- fixincludes/ChangeLog | 6 +++ fixincludes/fixincl.x | 53 ++++++++++++++++++++++++--- fixincludes/inclhack.def | 17 +++++++++ fixincludes/tests/base/sys/ucontext.h | 16 ++++++++ 4 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 fixincludes/tests/base/sys/ucontext.h diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog index e191d20fa55..e710647bfe4 100644 --- a/fixincludes/ChangeLog +++ b/fixincludes/ChangeLog @@ -1,3 +1,9 @@ +2004-09-17 Roger Sayle + + * inclhack.def (linux_ia64_ucontext): New fix. + * fixincl.x: Regenerate. + * tests/base/sys/ucontext.h: New file. + 2004-09-15 Roger Sayle * tests/base/sys/time.h: Correct mismatch in 2004-09-10 check-in. diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index 7faa61ec9b1..f6d1300aa58 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 Monday September 13, 2004 at 09:38:32 PM CDT + * It has been AutoGen-ed Saturday September 18, 2004 at 10:59:03 AM MDT * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT CVS-MERGE THIS FILE, EITHER Mon Sep 13 21:38:32 CDT 2004 +/* DO NOT CVS-MERGE THIS FILE, EITHER Sat Sep 18 10:59:03 MDT 2004 * * 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 178 fixup descriptions. + * This file contains 179 fixup descriptions. * * See README for more information. * @@ -3368,6 +3368,43 @@ static const char* apzLimits_IfndefsPatch[] = { #endif", (char*)NULL }; +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Linux_Ia64_Ucontext fix + */ +tSCC zLinux_Ia64_UcontextName[] = + "linux_ia64_ucontext"; + +/* + * File name selection pattern + */ +tSCC zLinux_Ia64_UcontextList[] = + "|sys/ucontext.h|"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzLinux_Ia64_UcontextMachs[] = { + "ia64-*-linux*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zLinux_Ia64_UcontextSelect0[] = + "\\(\\(\\(char \\*\\) &\\(\\(struct sigcontext \\*\\) 0\\)->sc_gr\\[0\\]\\) - \\(char \\*\\) 0\\)"; + +#define LINUX_IA64_UCONTEXT_TEST_CT 1 +static tTestDesc aLinux_Ia64_UcontextTests[] = { + { TT_EGREP, zLinux_Ia64_UcontextSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Linux_Ia64_Ucontext + */ +static const char* apzLinux_Ia64_UcontextPatch[] = { + "format", + "__builtin_offsetof (struct sigcontext, sc_gr[0])", + (char*)NULL }; + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Lynxos_No_Warning_In_Sys_Time_H fix @@ -7065,9 +7102,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 201 +#define REGEX_COUNT 202 #define MACH_LIST_SIZE_LIMIT 261 -#define FIX_COUNT 178 +#define FIX_COUNT 179 /* * Enumerate the fixes @@ -7155,6 +7192,7 @@ typedef enum { LIBC1_G_VA_LIST_FIXIDX, LIBC1_IFDEFD_MEMX_FIXIDX, LIMITS_IFNDEFS_FIXIDX, + LINUX_IA64_UCONTEXT_FIXIDX, LYNXOS_NO_WARNING_IN_SYS_TIME_H_FIXIDX, LYNXOS_MISSING_PUTENV_FIXIDX, MACHINE_ANSI_H_VA_LIST_FIXIDX, @@ -7664,6 +7702,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { LIMITS_IFNDEFS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aLimits_IfndefsTests, apzLimits_IfndefsPatch, 0 }, + { zLinux_Ia64_UcontextName, zLinux_Ia64_UcontextList, + apzLinux_Ia64_UcontextMachs, + LINUX_IA64_UCONTEXT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aLinux_Ia64_UcontextTests, apzLinux_Ia64_UcontextPatch, 0 }, + { zLynxos_No_Warning_In_Sys_Time_HName, zLynxos_No_Warning_In_Sys_Time_HList, apzLynxos_No_Warning_In_Sys_Time_HMachs, LYNXOS_NO_WARNING_IN_SYS_TIME_H_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 9a72c0b6b25..38021c33957 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -1872,6 +1872,23 @@ fix = { }; +/* The /usr/include/sys/ucontext.h on ia64-*linux-gnu systems defines + * an _SC_GR0_OFFSET macro using an idiom that isn't a compile time + * constant on recent versions of g++. + */ +fix = { + hackname = linux_ia64_ucontext; + files = "sys/ucontext.h"; + mach = "ia64-*-linux*"; + select = '\(\(\(char \*\) &\(\(struct sigcontext \*\) 0\)' + '->sc_gr\[0\]\) - \(char \*\) 0\)'; + c_fix = format; + c_fix_arg = "__builtin_offsetof \(struct sigcontext, sc_gr[0]\)"; + test_text = "# define _SC_GR0_OFFSET\t\\\\\n" + "\t(((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)\n"; +}; + + /* * Apparently some SVR4 systems typedef longlong_t to long ? */ diff --git a/fixincludes/tests/base/sys/ucontext.h b/fixincludes/tests/base/sys/ucontext.h new file mode 100644 index 00000000000..6a873672d6c --- /dev/null +++ b/fixincludes/tests/base/sys/ucontext.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/ucontext.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( LINUX_IA64_UCONTEXT_CHECK ) +# define _SC_GR0_OFFSET \ + __builtin_offsetof (struct sigcontext, sc_gr[0]) + +#endif /* LINUX_IA64_UCONTEXT_CHECK */ -- 2.30.2