inclhack.def (linux_ia64_ucontext): New fix.
authorRoger Sayle <roger@eyesopen.com>
Fri, 17 Sep 2004 22:58:40 +0000 (22:58 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Fri, 17 Sep 2004 22:58:40 +0000 (22:58 +0000)
* inclhack.def (linux_ia64_ucontext): New fix.
* fixincl.x: Regenerate.
* tests/base/sys/ucontext.h: New file.

From-SVN: r87677

fixincludes/ChangeLog
fixincludes/fixincl.x
fixincludes/inclhack.def
fixincludes/tests/base/sys/ucontext.h [new file with mode: 0644]

index e191d20fa5597052be126cb3e7861a14ebc63e6b..e710647bfe4958f0600cc2519359d86f7e31f03d 100644 (file)
@@ -1,3 +1,9 @@
+2004-09-17  Roger Sayle  <roger@eyesopen.com>
+
+       * inclhack.def (linux_ia64_ucontext): New fix.
+       * fixincl.x: Regenerate.
+       * tests/base/sys/ucontext.h: New file.
+
 2004-09-15  Roger Sayle  <roger@eyesopen.com>
 
        * tests/base/sys/time.h: Correct mismatch in 2004-09-10 check-in.
index 7faa61ec9b1a35af9876b79ba1307d05ffc0de70..f6d1300aa58e5eabc0d934cc66e6ad3625cef4c6 100644 (file)
@@ -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,
index 9a72c0b6b255763938422257ccbb3e3502d4184b..38021c33957ccd6c95d41bdff8cc5eef2890a9de 100644 (file)
@@ -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 (file)
index 0000000..6a87367
--- /dev/null
@@ -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 */