diff options
author | Tristan Gingold <gingold@adacore.com> | 2012-03-12 14:23:03 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@gcc.gnu.org> | 2012-03-12 14:23:03 +0000 |
commit | 24219d389088db7eb34f492e89643a5246ec12a5 (patch) | |
tree | ee4cda9111a43f3915ac816d9575da013601c050 /fixincludes/inclhack.def | |
parent | 21fa2faf26529ce8b1265a8d02409a727df35221 (diff) | |
download | gcc-24219d389088db7eb34f492e89643a5246ec12a5.zip gcc-24219d389088db7eb34f492e89643a5246ec12a5.tar.gz gcc-24219d389088db7eb34f492e89643a5246ec12a5.tar.bz2 |
2012-03-12 Tristan Gingold <gingold@adacore.com>
* inclhack.def (vms_use_quoted_include,vms_add_missing_braces)
(vms_do_not_redeclare_hostalias, vms_decc_builtin)
(vms_no_64bit_getopt, vms_forward_declare_struct)
(vms_use_fast_setjmp): New fixes.
* fixincl.x: Regenerate.
* tests/base/rtldef/string.h: Update.
* tests/base/rtldef/if.h, tests/base/rtldef/resolv.h,
* tests/base/rtldef/setjmp.h, tests/base/rtldef/signal.h,
* tests/base/rtldef/stdio.h, tests/base/rtldef/wait.h: New files.
From-SVN: r185230
Diffstat (limited to 'fixincludes/inclhack.def')
-rw-r--r-- | fixincludes/inclhack.def | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 40e7805..1a5cd8d 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -4611,6 +4611,129 @@ fix = { }; /* + * On VMS, change <resource.h> to <sys/resource.h> to avoid a + * conflict while building gcc. Likewise for <builtins.h> + */ +fix = { + hackname = vms_use_quoted_include; + select = "(#[ \t]*include[ \t]+)<(resource|builtins)\\.h>"; + mach = "*-*-*vms*"; + files = rtldef/wait.h, starlet_c/pthread.h; + c_fix = format; + + c_fix_arg = '%1<sys/%2.h>'; + + test_text = "# include <resource.h>"; +}; + +/* + * On VMS, add missing braces around sigset_t constants. + */ +fix = { + hackname = vms_add_missing_braces; + select = "(_SIG_[A-Z]+_SET[ \t]+= \\{)(0x[0F]+, 0x[0F]+)"; + mach = "*-*-*vms*"; + files = "rtldef/signal.h"; + c_fix = format; + + c_fix_arg = '%1 {%2} '; + + test_text = "static const __sigset_t _SIG_EMPTY_SET = " + "{0x00000000, 0x00000000},\n" + " _SIG_FULL_SET = {0xFFFFFFFF, 0xFFFFFFFF};\n"; +}; + +/* + * On VMS, fix incompatible redeclaration of hostalias. + */ +fix = { + hackname = vms_do_not_redeclare_hostalias; + select = "(void[ \t]+fp_nquery \\(const u_char \\*, int, FILE \\*\\);)\n" + "(__char_ptr32[ \t]+hostalias \\(const char \\*\\);)"; + mach = "*-*-*vms*"; + files = "rtldef/resolv.h"; + c_fix = format; + + c_fix_arg = "%1\n" + "/* %2 */"; + + test_text = "void fp_nquery (const u_char *, int, FILE *);\n" + "__char_ptr32 hostalias (const char *);\n"; +}; + +/* + * On VMS, some DEC-C builtins are directly used. + */ +fix = { + hackname = vms_decc_builtin; + select = "(__MEMSET|__MEMMOVE|__MEMCPY|__STRLEN|__STRCPY)"; + mach = "*-*-*vms*"; + files = rtldef/string.h, rtldef/time.h, rtldef/strings.h, + rtldef/socket.h; + sed = "s@__MEMSET@memset@"; + sed = "s@__MEMMOVE@memmove@"; + sed = "s@__MEMCPY@memcpy@"; + sed = "s@__STRLEN@strlen@"; + sed = "s@__STRCPY@strcpy@"; + + test_text = "define FD_ZERO(__p) __MEMSET((__p), 0, sizeof(*(__p)))\n"; +}; + +/* + * On VMS, do not declare getopt and al if pointers are 64 bit. + */ +fix = { + hackname = vms_no_64bit_getopt; + select = "^[ \t]*(extern[ \t]*)?(int[ \t]*(getopt|optind|opterr|optopt)|(char \\*optarg))([ \t]*\\(.*\\))?;\n"; + /* select = "^[ \t](extern[ \t))?(int[ \t](getopt|optind|opterr|optopt))|(char *optarg).*;\n"; */ + mach = "*-*-*vms*"; + files = rtldef/stdio.h, rtldef/unistd.h; + c_fix = format; + + c_fix_arg = "#if __INITIAL_POINTER_SIZE != 64 /* getopt is short ptr only. */\n" + "%0" + "#endif\n"; + + test_text = "int getopt (int, char * const [], const char *);"; +}; + +/* + * On VMS, forward declare structure before referencing them in prototypes. + */ +fix = { + hackname = vms_forward_declare_struct; + select = "(/\\* forward decls for C\\+\\+ \\*/\n)" + "#ifdef __cplusplus\n"; + mach = "*-*-*vms*"; + files = rtldef/if.h; + c_fix = format; + + c_fix_arg = "%1" + "#if defined (__cplusplus) || defined (__GNUC__)\n"; + + test_text = "/* forward decls for C++ */\n" + "#ifdef __cplusplus\n" + "struct foo;\n" + "#endif\n"; +}; + +/* + * On VMS, force the use of fast setjmp, as the normal setjmp uses conditions + * which is not yet fully supported by gcc. + */ +fix = { + hackname = vms_use_fast_setjmp; + select = "(#[ \t]*if[ \t]*defined\\(__FAST_SETJMP\\)[ \t]*\\|\\|)"; + mach = "*-*-*vms*"; + files = rtldef/setjmp.h; + c_fix = format; + + c_fix_arg = "%0 defined (__GNUC__) ||"; + + test_text = "# if defined(__FAST_SETJMP) || defined(__UNIX_SETJMP)"; +}; + +/* * AIX and Interix headers define NULL to be cast to a void pointer, * which is illegal in ANSI C++. */ |