From 31d206662a5603301bcd9596e86a6d76898e8344 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Sat, 29 Sep 2012 21:02:42 +0000 Subject: inclhack.def (AAB_aix_fcntl): New fix. * inclhack.def (AAB_aix_fcntl): New fix. * fixincl.x: Regenerate. From-SVN: r191859 --- fixincludes/ChangeLog | 5 ++++ fixincludes/fixincl.x | 70 ++++++++++++++++++++++++++++++++++++++++++++---- fixincludes/inclhack.def | 39 +++++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 5 deletions(-) (limited to 'fixincludes') 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 + + * inclhack.def (AAB_aix_fcntl): New fix. + * fixincl.x: Regenerate. + 2012-06-19 David Edelsohn * 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. * @@ -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, 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. -- cgit v1.2.3