*
* 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.
*
* 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.
*
#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
*
* 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,
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,
};
+/* 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.