From patchwork Mon Mar 12 10:05:02 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tristan Gingold X-Patchwork-Id: 146053 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 9AE81B6FA8 for ; Mon, 12 Mar 2012 21:05:35 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1332151536; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:From:Content-Type:Content-Transfer-Encoding:Subject: Date:Message-Id:Cc:To:Mime-Version:Mailing-List:Precedence: List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=9ixXZ8KoaBRVzF7ECuve0ZvMAWg=; b=T68br/spvqBATTf X4tb64nfEz4VSJBgR22dcgeXFk99pOYvLACadgixdZgUtFdWv+dnNNI0rgd5x1yj +aSdyHuCHwWNzfC9FG2dOOnbrznTMG7Dq6KfXxeQ3BXFPnCD946ZvwBO30PnIfI9 Y1Ta2JSSj1br1HAsjPS66odM6ots= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:From:Content-Type:Content-Transfer-Encoding:Subject:Date:Message-Id:Cc:To:Mime-Version:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=rprSk1dluafhbKJlc32t6SrB6eMCFzpxpkCPqcoC/6OY7ch/WirGMqb9iZ0SVj itNr67I53Re9OoiL4Mph4ejVXZHWbepneQma8qw30CEgrRZx359wXmMbLPueqB0E MukkoGXnKqD7S6da3z8xmItY2UUTYyHhIR6pL0mkmP6nQ=; Received: (qmail 27264 invoked by alias); 12 Mar 2012 10:05:31 -0000 Received: (qmail 27251 invoked by uid 22791); 12 Mar 2012 10:05:28 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,TW_TJ X-Spam-Check-By: sourceware.org Received: from mel.act-europe.fr (HELO mel.act-europe.fr) (194.98.77.210) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 12 Mar 2012 10:05:04 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id 73A1C29000C; Mon, 12 Mar 2012 11:05:04 +0100 (CET) Received: from mel.act-europe.fr ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id K3S7YgyZmhRI; Mon, 12 Mar 2012 11:05:04 +0100 (CET) Received: from ulanbator.act-europe.fr (ulanbator.act-europe.fr [10.10.1.67]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mel.act-europe.fr (Postfix) with ESMTP id 5BA6E29000B; Mon, 12 Mar 2012 11:05:04 +0100 (CET) From: Tristan Gingold Subject: [Patch]: Add include hacks for VMS headers Date: Mon, 12 Mar 2012 11:05:02 +0100 Message-Id: <67DFA492-9995-4C03-8B0B-5F87B4AE8F64@adacore.com> Cc: Bruce Korb To: GCC Patches Mime-Version: 1.0 (Apple Message framework v1257) X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hi, this patch adds a few fix include entries for VMS so that: * it is possible to use a gcc for VMS to compile gcc (collisions between system and gcc headers), * no warnings when signal.h is included, * no warnings when resolv.h is included, * avoid the use of DEC-C built-ins in some standard macros, * disable getopt/optinf/opterr/optopt in 64 bit modes, * declare some structure tag outside of argument list, * use the more portable version of setjmp. Tested for a while to build gcc for ia64 and alpha VMS. 'make check' is clean. Comments are welcome! Ok for trunk ? Tristan. fixincludes/ 2012-03-12 Tristan Gingold * 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. 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 to to avoid a + * conflict while building gcc. Likewise for + */ +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'; + + test_text = "# include "; +}; + +/* + * 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++. */ diff --git a/fixincludes/tests/base/rtldef/if.h b/fixincludes/tests/base/rtldef/if.h new file mode 100644 index 0000000..836ff27 --- /dev/null +++ b/fixincludes/tests/base/rtldef/if.h @@ -0,0 +1,18 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rtldef/if.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( VMS_FORWARD_DECLARE_STRUCT_CHECK ) +/* forward decls for C++ */ +#if defined (__cplusplus) || defined (__GNUC__) +struct foo; +#endif + +#endif /* VMS_FORWARD_DECLARE_STRUCT_CHECK */ diff --git a/fixincludes/tests/base/rtldef/resolv.h b/fixincludes/tests/base/rtldef/resolv.h new file mode 100644 index 0000000..0b5b248 --- /dev/null +++ b/fixincludes/tests/base/rtldef/resolv.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rtldef/resolv.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( VMS_DO_NOT_REDECLARE_HOSTALIAS_CHECK ) +void fp_nquery (const u_char *, int, FILE *); +/* __char_ptr32 hostalias (const char *); */ + +#endif /* VMS_DO_NOT_REDECLARE_HOSTALIAS_CHECK */ diff --git a/fixincludes/tests/base/rtldef/setjmp.h b/fixincludes/tests/base/rtldef/setjmp.h new file mode 100644 index 0000000..5414efc --- /dev/null +++ b/fixincludes/tests/base/rtldef/setjmp.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rtldef/setjmp.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( VMS_USE_FAST_SETJMP_CHECK ) +# if defined(__FAST_SETJMP) || defined (__GNUC__) || defined(__UNIX_SETJMP) +#endif /* VMS_USE_FAST_SETJMP_CHECK */ diff --git a/fixincludes/tests/base/rtldef/signal.h b/fixincludes/tests/base/rtldef/signal.h new file mode 100644 index 0000000..3b5a2b8 --- /dev/null +++ b/fixincludes/tests/base/rtldef/signal.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rtldef/signal.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( VMS_ADD_MISSING_BRACES_CHECK ) +static const __sigset_t _SIG_EMPTY_SET = { {0x00000000, 0x00000000} }, + _SIG_FULL_SET = { {0xFFFFFFFF, 0xFFFFFFFF} }; + +#endif /* VMS_ADD_MISSING_BRACES_CHECK */ diff --git a/fixincludes/tests/base/rtldef/stdio.h b/fixincludes/tests/base/rtldef/stdio.h new file mode 100644 index 0000000..4835d0f --- /dev/null +++ b/fixincludes/tests/base/rtldef/stdio.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rtldef/stdio.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( VMS_NO_64BIT_GETOPT_CHECK ) +#if __INITIAL_POINTER_SIZE != 64 /* getopt is short ptr only. */ +int getopt (int, char * const [], const char *); +#endif +#endif /* VMS_NO_64BIT_GETOPT_CHECK */ diff --git a/fixincludes/tests/base/rtldef/string.h b/fixincludes/tests/base/rtldef/string.h index 1ac9b2a..6249b0c 100644 --- a/fixincludes/tests/base/rtldef/string.h +++ b/fixincludes/tests/base/rtldef/string.h @@ -13,3 +13,9 @@ #if !defined(__VAX) && !defined(__GNUC__) #endif /* VMS_DISABLE_DECC_STRING_BUILTINS_CHECK */ + + +#if defined( VMS_DECC_BUILTIN_CHECK ) +define FD_ZERO(__p) memset((__p), 0, sizeof(*(__p))) + +#endif /* VMS_DECC_BUILTIN_CHECK */ diff --git a/fixincludes/tests/base/rtldef/wait.h b/fixincludes/tests/base/rtldef/wait.h new file mode 100644 index 0000000..0587834 --- /dev/null +++ b/fixincludes/tests/base/rtldef/wait.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rtldef/wait.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( VMS_USE_QUOTED_INCLUDE_CHECK ) +# include +#endif /* VMS_USE_QUOTED_INCLUDE_CHECK */