re PR c/5059 (Compiling s/w containing the use of DIR.H fails on other stat-calls)
authorRainer Orth <ro@TechFak.Uni-Bielefeld.DE>
Mon, 24 Feb 2003 18:52:51 +0000 (18:52 +0000)
committerRainer Orth <ro@gcc.gnu.org>
Mon, 24 Feb 2003 18:52:51 +0000 (18:52 +0000)
* 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

gcc/ChangeLog
gcc/config/alpha/osf.h
gcc/doc/extend.texi
gcc/fixinc/fixincl.x
gcc/fixinc/inclhack.def
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/pragma-ep-1.C
gcc/testsuite/gcc.dg/pragma-ep-1.c

index 1cdc6428f671a720482833909ddd4097a00db008..0869b47c6daa92d597ca72351461eca581b0ae8c 100644 (file)
@@ -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
index 9fbe2b56a07dd32ef509232293381018843adeb5..871f078ea9940b90c3feab988f86a7519a89af4d 100644 (file)
@@ -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
index 86e0491125c817a63cc55872fa8087d8fa6105a4..75475266d8700833953dd11c95c10118602d5043 100644 (file)
@@ -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
index 017b748fc73b7d915696fbc626f33ff69acaef0f..2f712c7ddd527ea8ac4b837fb4b4d7c6794d70df 100644 (file)
@@ -709,6 +709,43 @@ static const char* apzAlpha___AssertPatch[] = {
     "__assert(const char *, const char *, int)",
     (char*)NULL };
 
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  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
@@ -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,
index 5ff0e9a42fb9d657ed18315943c0eb07c64d2026..619f6965809a56fde18b4d98ec07a2c6b68ec994 100644 (file)
@@ -522,6 +522,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++.
index 42df634feaf8780d82e140102ee5c125c946effc..91d515109e8b8b8a6ad43c08ce809aa23c5f88bb 100644 (file)
@@ -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
index 99450cd79e4855adeedfd4378c0e394f157bfafb..151003cb1539fb9fa521f30c5219e6ed300be697 100644 (file)
@@ -5,7 +5,7 @@
 /* { dg-final { scan-assembler "four" } } */
 /* { dg-final { scan-assembler-not "_four" } } */
 
-#ifndef __EXTERN_PREFIX
+#ifndef __PRAGMA_EXTERN_PREFIX
 #error
 #endif
 
index 91ec640ca5bc10c1516c711a5b79f9391ab9bbc2..e110ff900041db5650e3d9d7b86772b0f7772b85 100644 (file)
@@ -5,7 +5,7 @@
 /* { dg-final { scan-assembler "four" } } */
 /* { dg-final { scan-assembler-not "_four" } } */
 
-#ifndef __EXTERN_PREFIX
+#ifndef __PRAGMA_EXTERN_PREFIX
 #error
 #endif