]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
inclhack.def (AAB_aix_fcntl): New fix.
authorDavid Edelsohn <dje.gcc@gmail.com>
Sat, 29 Sep 2012 21:02:42 +0000 (21:02 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Sat, 29 Sep 2012 21:02:42 +0000 (17:02 -0400)
        * inclhack.def (AAB_aix_fcntl): New fix.
        * fixincl.x: Regenerate.

From-SVN: r191859

fixincludes/ChangeLog
fixincludes/fixincl.x
fixincludes/inclhack.def

index 1b382e0dc377546339e9ff9c97172175c4f13141..dea4a96927e67e284f4ce7e719b9c505058ae035 100644 (file)
@@ -1,3 +1,8 @@
+2012-09-29  David Edelsohn  <dje.gcc@gmail.com>
+
+       * inclhack.def (AAB_aix_fcntl): New fix.
+       * fixincl.x: Regenerate.
+
 2012-06-19  David Edelsohn  <dje.gcc@gmail.com>
 
        * inclhack.def (aix_mutex_initializer_1): New fix.
index 31c466796de369ca0389f4ac93a4095f34a2b813..50a553fa125dfdae5493a2cae19aec75b3a6965d 100644 (file)
@@ -2,11 +2,11 @@
  * 
  * DO NOT EDIT THIS FILE   (fixincl.x)
  * 
- * It has been AutoGen-ed  June 19, 2012 at 09:23:54 AM by AutoGen 5.10
+ * It has been AutoGen-ed  Saturday September 29, 2012 at 01:58:03 PM PDT
  * From the definitions    inclhack.def
  * and the template file   fixincl
  */
-/* DO NOT SVN-MERGE THIS FILE, EITHER Tue Jun 19 09:23:54 EDT 2012
+/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Sep 29 13:58:03 PDT 2012
  *
  * 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 215 fixup descriptions.
+ * This file contains 216 fixup descriptions.
  *
  * See README for more information.
  *
@@ -99,6 +99,60 @@ extern off64_t ftello(FILE *) __asm__(\"ftello64\");\n\
 #endif\n",
     (char*)NULL };
 
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Description of Aab_Aix_Fcntl fix
+ */
+tSCC zAab_Aix_FcntlName[] =
+     "AAB_aix_fcntl";
+
+/*
+ *  File name selection pattern
+ */
+tSCC zAab_Aix_FcntlList[] =
+  "fcntl.h\0";
+/*
+ *  Machine/OS name selection pattern
+ */
+tSCC* apzAab_Aix_FcntlMachs[] = {
+        "*-*-aix*",
+        (const char*)NULL };
+
+/*
+ *  content selection pattern - do fix if pattern found
+ */
+tSCC zAab_Aix_FcntlSelect0[] =
+       "define open[ \t]open64";
+
+#define    AAB_AIX_FCNTL_TEST_CT  1
+static tTestDesc aAab_Aix_FcntlTests[] = {
+  { TT_EGREP,    zAab_Aix_FcntlSelect0, (regex_t*)NULL }, };
+
+/*
+ *  Fix Command Arguments for Aab_Aix_Fcntl
+ */
+static const char* apzAab_Aix_FcntlPatch[] = {
+    "wrap",
+    "",
+    "\n\
+#if defined __GNUG__ && defined _LARGE_FILES && defined __cplusplus\n\
+#define __need__aix_fcntl_h_fix\n\
+#ifdef __need__aix_fcntl_h_fix\n\
+#undef open\n\
+#undef creat\n\
+#undef openat\n\
+/* Alias the symbols using asm */\n\
+extern \"C\" {\n\
+extern int open(const char *, int, ...) __asm__(\"open64\");\n\
+extern int creat(const char *, mode_t) __asm__(\"creat64\");\n\
+#if (_XOPEN_SOURCE >= 700)\n\
+extern int openat(int, const char *, int, ...) __asm__(\"open64at\");\n\
+#endif\n\
+}\n\
+#endif\n\
+#endif\n",
+    (char*)NULL };
+
 /* * * * * * * * * * * * * * * * * * * * * * * * * *
  *
  *  Description of Aab_Darwin7_9_Long_Double_Funcs fix
@@ -8746,15 +8800,16 @@ static const char* apzX11_SprintfPatch[] = {
  *
  *  List of all fixes
  */
-#define REGEX_COUNT          258
+#define REGEX_COUNT          259
 #define MACH_LIST_SIZE_LIMIT 181
-#define FIX_COUNT            215
+#define FIX_COUNT            216
 
 /*
  *  Enumerate the fixes
  */
 typedef enum {
     AAB_AIX_STDIO_FIXIDX,
+    AAB_AIX_FCNTL_FIXIDX,
     AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_FIXIDX,
     AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_2_FIXIDX,
     AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX,
@@ -8977,6 +9032,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
      AAB_AIX_STDIO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
      aAab_Aix_StdioTests,   apzAab_Aix_StdioPatch, 0 },
 
+  {  zAab_Aix_FcntlName,    zAab_Aix_FcntlList,
+     apzAab_Aix_FcntlMachs,
+     AAB_AIX_FCNTL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+     aAab_Aix_FcntlTests,   apzAab_Aix_FcntlPatch, 0 },
+
   {  zAab_Darwin7_9_Long_Double_FuncsName,    zAab_Darwin7_9_Long_Double_FuncsList,
      apzAab_Darwin7_9_Long_Double_FuncsMachs,
      AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
index 82792afdbe37e9e99726415816b2d1e3ccf8ef74..a615194c743f685abb95e586f00b792fd8d71a02 100644 (file)
@@ -65,6 +65,45 @@ fix = {
 };
 
 
+/* On AIX when _LARGE_FILES is defined fcntl.h defines open to
+ * open64 and creat to creat64.  This fixes fcntl.h to
+ * undef those defines and use __asm__ to alias the symbols if
+ * building with g++ and -D_LARGE_FILES
+ */
+fix = {
+    hackname  = AAB_aix_fcntl;
+    files     = fcntl.h;
+    select    = "define open[ \t]open64";
+    mach      = "*-*-aix*";
+    test-text = ''; /* no way to test */
+
+    c_fix     = wrap;
+
+    c_fix_arg = "";
+
+    c_fix_arg = <<- _EOArg_
+
+       #if defined __GNUG__ && defined _LARGE_FILES && defined __cplusplus
+       #define __need__aix_fcntl_h_fix
+       #ifdef __need__aix_fcntl_h_fix
+       #undef open
+       #undef creat
+       #undef openat
+       /* Alias the symbols using asm */
+       extern "C" {
+       extern int open(const char *, int, ...) __asm__("open64");
+       extern int creat(const char *, mode_t) __asm__("creat64");
+       #if (_XOPEN_SOURCE >= 700)
+       extern int openat(int, const char *, int, ...) __asm__("open64at");
+       #endif
+       }
+       #endif
+       #endif
+
+       _EOArg_;
+};
+
+
 /*
  *  On Mac OS 10.3.9, the 'long double' functions are available in
  *  libSystem, but are not prototyped in math.h.