summaryrefslogtreecommitdiff
path: root/fixincludes
diff options
context:
space:
mode:
authorDavid Edelsohn <dje.gcc@gmail.com>2012-09-29 21:02:42 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2012-09-29 17:02:42 -0400
commit31d206662a5603301bcd9596e86a6d76898e8344 (patch)
tree10d8b34d6739e15e44643513f948ac3ca0e8b740 /fixincludes
parentb64ca2cebde1b42fbb52b7325af823cb41989125 (diff)
inclhack.def (AAB_aix_fcntl): New fix.
* inclhack.def (AAB_aix_fcntl): New fix. * fixincl.x: Regenerate. From-SVN: r191859
Diffstat (limited to 'fixincludes')
-rw-r--r--fixincludes/ChangeLog5
-rw-r--r--fixincludes/fixincl.x70
-rw-r--r--fixincludes/inclhack.def39
3 files changed, 109 insertions, 5 deletions
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index 1b382e0dc37..dea4a96927e 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -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.
diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x
index 31c466796de..50a553fa125 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 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.
*
@@ -101,6 +101,60 @@ extern off64_t ftello(FILE *) __asm__(\"ftello64\");\n\
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * 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
*/
tSCC zAab_Darwin7_9_Long_Double_FuncsName[] =
@@ -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,
diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def
index 82792afdbe3..a615194c743 100644
--- a/fixincludes/inclhack.def
+++ b/fixincludes/inclhack.def
@@ -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.