]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
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:46:26 +0000 (18:46 +0000)
committerRainer Orth <ro@gcc.gnu.org>
Mon, 24 Feb 2003 18:46:26 +0000 (18:46 +0000)
* config/alpha/osf.h (CPP_SUBTARGET_SPEC): 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: r63369

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

index cde23da87302cb1cf1b37567d0cda057f7fca263..17c26173c3b5a68195abc849ff57032abd05bc3e 100644 (file)
@@ -1,3 +1,16 @@
+2003-02-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+       * config/alpha/osf.h (CPP_SUBTARGET_SPEC): 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  David Billinghurst <David.Billinghurst@riotinto.com>
 
        Fixes PR libgcj/9652.
index efb0a16d7fd0c133c30a54812a59eb047542e6d0..69d8b2485da4c278c2517c7c2f368c16ded134b3 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)
 
@@ -48,7 +48,7 @@ Boston, MA 02111-1307, USA.  */
 #undef CPP_SUBTARGET_SPEC
 #define CPP_SUBTARGET_SPEC \
 "%{pthread|threads:-D_REENTRANT} %{threads:-D_PTHREAD_USE_D4} %(cpp_xfloat) \
--D__EXTERN_PREFIX"
+-D__PRAGMA_EXTERN_PREFIX"
 
 /* Under OSF4, -p and -pg require -lprof1, and -lprof1 requires -lpdf.  */
 
index 281e4ac932e1e61dfe64312c6e772cd6fbfd6019..19e13f4e157a723724a89fe3fb86a2f5fb985e82 100644 (file)
@@ -6072,7 +6072,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 291b7bf2ccbf456aba8987f265bb9dd646ed3b7c..63c08c6e8745e61fc96e90bfb2114b727e9a893b 100644 (file)
@@ -774,6 +774,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
@@ -5840,6 +5877,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,
@@ -6054,6 +6092,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 0da2572b78e092b02246057c92afc1a9ae0d7f36..18eaa10f930f50c72e86776efd55e89aa6a762d1 100644 (file)
@@ -602,6 +602,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 46a4623cd27267e9b52386b00fc1eb638c9af9be..9ec4079f6d0733acae37024396022e967d65a102 100644 (file)
@@ -9,6 +9,11 @@
 
 
 
+#if defined( ALPHA___EXTERN_PREFIX_CHECK )
+#   if defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX)
+#endif  /* ALPHA___EXTERN_PREFIX_CHECK */
+
+
 #if defined( M88K_BAD_S_IF_CHECK )
 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* is regular? */
 #endif  /* M88K_BAD_S_IF_CHECK */
index 88dcd59be16f5979d2388dc1a14cdef33916d5d0..14626855d2330d5c4368c03bc773489abfd7112c 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