diff options
author | Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> | 2003-02-24 18:52:51 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2003-02-24 18:52:51 +0000 |
commit | f8dc212b5deccabd4f3f32beb4459ba944cfca98 (patch) | |
tree | b75b02a1b40335aa83b4aaebc6fdb4ed8f808707 | |
parent | 391cd0955eb2a5018af9fb791ffeeac171ebb9b9 (diff) | |
download | gcc-f8dc212b5deccabd4f3f32beb4459ba944cfca98.zip gcc-f8dc212b5deccabd4f3f32beb4459ba944cfca98.tar.gz gcc-f8dc212b5deccabd4f3f32beb4459ba944cfca98.tar.bz2 |
re PR c/5059 (Compiling s/w containing the use of DIR.H fails on other stat-calls)
* config/alpha/osf.h (TARGET_OS_CPP_BUILTINS): Rename
__EXTERN_PREFIX to __PRAGMA_EXTERN_PREFIX.
* doc/extend.texi (Tru64 Pragmas): Reflect this.
* fixinc/inclhack.def (alpha___extern_prefix): Indicate #pragma
extern_prefix support for Tru64 UNIX V5 <sys/stat.h>.
* fixinc/fixincl.x: Regenerate.
* fixinc/tests/base/sys/stat.h [ALPHA___EXTERN_PREFIX_CHECK]: New
testcase.
Fixes PR c/5059, c/6126, other/9671.
testsuite:
* g++.dg/other/pragma-ep-1.C: Test for __PRAGMA_EXTERN_PREFIX.
* gcc.dg/pragma-ep-1.c: Likewise.
From-SVN: r63370
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/config/alpha/osf.h | 32 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 3 | ||||
-rw-r--r-- | gcc/fixinc/fixincl.x | 43 | ||||
-rw-r--r-- | gcc/fixinc/inclhack.def | 16 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/pragma-ep-1.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pragma-ep-1.c | 2 |
8 files changed, 97 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1cdc642..0869b47 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2003-02-24 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + * config/alpha/osf.h (TARGET_OS_CPP_BUILTINS): Rename + __EXTERN_PREFIX to __PRAGMA_EXTERN_PREFIX. + * doc/extend.texi (Tru64 Pragmas): Reflect this. + + * fixinc/inclhack.def (alpha___extern_prefix): Indicate #pragma + extern_prefix support for Tru64 UNIX V5 <sys/stat.h>. + * fixinc/fixincl.x: Regenerate. + * fixinc/tests/base/sys/stat.h [ALPHA___EXTERN_PREFIX_CHECK]: New + testcase. + Fixes PR c/5059, c/6126, other/9671. + 2003-02-24 Roger Sayle <roger@eyesopen.com> * gcc.c (do_spec_1) ['{']: Handle pending argument upon return diff --git a/gcc/config/alpha/osf.h b/gcc/config/alpha/osf.h index 9fbe2b5..871f078 100644 --- a/gcc/config/alpha/osf.h +++ b/gcc/config/alpha/osf.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for DEC Alpha on OSF/1. - Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001 + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) @@ -32,21 +32,21 @@ Boston, MA 02111-1307, USA. */ /* Names to predefine in the preprocessor for this target machine. */ -#define TARGET_OS_CPP_BUILTINS() \ - do { \ - builtin_define_std ("unix"); \ - builtin_define_std ("SYSTYPE_BSD"); \ - builtin_define ("_SYSTYPE_BSD"); \ - builtin_define ("__osf__"); \ - builtin_define ("_LONGLONG"); \ - builtin_define ("__EXTERN_PREFIX"); \ - builtin_assert ("system=unix"); \ - builtin_assert ("system=xpg4"); \ - /* Tru64 UNIX V5 has a 16 byte long \ - double type and requires __X_FLOAT \ - to be defined for <math.h>. */ \ - if (LONG_DOUBLE_TYPE_SIZE == 128) \ - builtin_define ("__X_FLOAT"); \ +#define TARGET_OS_CPP_BUILTINS() \ + do { \ + builtin_define_std ("unix"); \ + builtin_define_std ("SYSTYPE_BSD"); \ + builtin_define ("_SYSTYPE_BSD"); \ + builtin_define ("__osf__"); \ + builtin_define ("_LONGLONG"); \ + builtin_define ("__PRAGMA_EXTERN_PREFIX"); \ + builtin_assert ("system=unix"); \ + builtin_assert ("system=xpg4"); \ + /* Tru64 UNIX V5 has a 16 byte long \ + double type and requires __X_FLOAT \ + to be defined for <math.h>. */ \ + if (LONG_DOUBLE_TYPE_SIZE == 128) \ + builtin_define ("__X_FLOAT"); \ } while (0) /* Accept DEC C flags for multithreaded programs. We use _PTHREAD_USE_D4 diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 86e0491..7547526 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -6588,7 +6588,8 @@ empty string. This pragma is similar in intent to to the asm labels extension (@pxref{Asm Labels}) in that the system programmer wants to change the assembly-level ABI without changing the source-level API. The -preprocessor defines @code{__EXTERN_PREFIX} if the pragma is available. +preprocessor defines @code{__PRAGMA_EXTERN_PREFIX} if the pragma is +available. @end table @node Unnamed Fields diff --git a/gcc/fixinc/fixincl.x b/gcc/fixinc/fixincl.x index 017b748..2f712c7 100644 --- a/gcc/fixinc/fixincl.x +++ b/gcc/fixinc/fixincl.x @@ -711,6 +711,43 @@ static const char* apzAlpha___AssertPatch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Alpha___Extern_Prefix fix + */ +tSCC zAlpha___Extern_PrefixName[] = + "alpha___extern_prefix"; + +/* + * File name selection pattern + */ +tSCC zAlpha___Extern_PrefixList[] = + "|sys/stat.h|"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAlpha___Extern_PrefixMachs[] = { + "alpha*-dec-osf5*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha___Extern_PrefixSelect0[] = + "#[ \t]*if[ \t]*defined\\(__DECC\\)"; + +#define ALPHA___EXTERN_PREFIX_TEST_CT 1 +static tTestDesc aAlpha___Extern_PrefixTests[] = { + { TT_EGREP, zAlpha___Extern_PrefixSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha___Extern_Prefix + */ +static const char* apzAlpha___Extern_PrefixPatch[] = { + "format", + "%0 || defined(__PRAGMA_EXTERN_PREFIX)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Alpha_Assert fix */ tSCC zAlpha_AssertName[] = @@ -5788,6 +5825,7 @@ typedef enum { AIX_SYSWAIT_FIXIDX, AIX_VOLATILE_FIXIDX, ALPHA___ASSERT_FIXIDX, + ALPHA___EXTERN_PREFIX_FIXIDX, ALPHA_ASSERT_FIXIDX, ALPHA_GETOPT_FIXIDX, ALPHA_PARENS_FIXIDX, @@ -5993,6 +6031,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { ALPHA___ASSERT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aAlpha___AssertTests, apzAlpha___AssertPatch, 0 }, + { zAlpha___Extern_PrefixName, zAlpha___Extern_PrefixList, + apzAlpha___Extern_PrefixMachs, + ALPHA___EXTERN_PREFIX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha___Extern_PrefixTests, apzAlpha___Extern_PrefixPatch, 0 }, + { zAlpha_AssertName, zAlpha_AssertList, apzAlpha_AssertMachs, ALPHA_ASSERT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, diff --git a/gcc/fixinc/inclhack.def b/gcc/fixinc/inclhack.def index 5ff0e9a..619f696 100644 --- a/gcc/fixinc/inclhack.def +++ b/gcc/fixinc/inclhack.def @@ -523,6 +523,22 @@ fix = { /* + * Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V5 <sys/stat.h>. + */ +fix = { + hackname = alpha___extern_prefix; + files = sys/stat.h; + select = "#[ \t]*if[ \t]*defined\\(__DECC\\)"; + + mach = "alpha*-dec-osf5*"; + c_fix = format; + c_fix_arg = "%0 || defined(__PRAGMA_EXTERN_PREFIX)"; + + test_text = "# if defined(__DECC)"; +}; + + +/* * Fix assert macro in assert.h on Alpha OSF/1. * The superfluous int cast breaks C++. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 42df634..91d5151 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-02-24 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + * g++.dg/other/pragma-ep-1.C: Test for __PRAGMA_EXTERN_PREFIX. + * gcc.dg/pragma-ep-1.c: Likewise. + 2003-02-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> PR c++/9602 diff --git a/gcc/testsuite/g++.dg/other/pragma-ep-1.C b/gcc/testsuite/g++.dg/other/pragma-ep-1.C index 99450cd..151003c 100644 --- a/gcc/testsuite/g++.dg/other/pragma-ep-1.C +++ b/gcc/testsuite/g++.dg/other/pragma-ep-1.C @@ -5,7 +5,7 @@ /* { dg-final { scan-assembler "four" } } */ /* { dg-final { scan-assembler-not "_four" } } */ -#ifndef __EXTERN_PREFIX +#ifndef __PRAGMA_EXTERN_PREFIX #error #endif diff --git a/gcc/testsuite/gcc.dg/pragma-ep-1.c b/gcc/testsuite/gcc.dg/pragma-ep-1.c index 91ec640..e110ff9 100644 --- a/gcc/testsuite/gcc.dg/pragma-ep-1.c +++ b/gcc/testsuite/gcc.dg/pragma-ep-1.c @@ -5,7 +5,7 @@ /* { dg-final { scan-assembler "four" } } */ /* { dg-final { scan-assembler-not "_four" } } */ -#ifndef __EXTERN_PREFIX +#ifndef __PRAGMA_EXTERN_PREFIX #error #endif |