The trunk was changed recently for a period to build with "gcc -std=c++98".  
This caused a build failure
on HP-UX because a non standard HP variant of the nftw function was selected.  
The attached change
revises the hpux predefines so this won't happen.  In particular, we now define 
_XOPEN_SOURCE_EXTENDED
when building with c++.

I also reviewed the existing predefines and added some new ones for c++ and 
hpux11.31.

Tested on hppa2.0w-hp-hpux11.11 and hppa64-hp-hpux11.11.  Committed to trunk 
and gcc-5 branch.

Dave
--
John David Anglin       dave.ang...@bell.net


2015-06-06  John David Anglin  <dang...@gcc.gnu.org>

        PR bootstrap/66319
        * config/pa/pa-hpux10.h (TARGET_OS_CPP_BUILTINS): Rearrange builtin
        defines.  Define _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE for c++.
        Define _XOPEN_UNIX and _XOPEN_SOURCE_EXTENDED for c++ if unix95 or
        later.
        * config/pa/pa-hpux11.h (TARGET_OS_CPP_BUILTINS): Likewise.
        Define _INCLUDE_STDC_SOURCE_PRE_199901, _INCLUDE_STDC_SOURCE_199901,
        _INCLUDE_XOPEN_SOURCE_PRE_500, _INCLUDE_XOPEN_SOURCE_520,
        _INCLUDE_XOPEN_SOURCE_PRE_600 and _INCLUDE_XOPEN_SOURCE_600 for c++
        and non iso if unix2003.

Index: config/pa/pa-hpux10.h
===================================================================
--- config/pa/pa-hpux10.h       (revision 224079)
+++ config/pa/pa-hpux10.h       (working copy)
@@ -24,7 +24,9 @@
    the definition of __cplusplus.  We define _INCLUDE_LONGLONG
    to prevent nlist.h from defining __STDC_32_MODE__ (no longlong
    support).  We define __STDCPP__ to get certain system headers
-   (notably assert.h) to assume standard preprocessor behavior in C++.  */
+   (notably assert.h) to assume standard preprocessor behavior in C++.
+   We define _XOPEN_SOURCE_EXTENDED when we define _HPUX_SOURCE to avoid
+   non standard hpux variants in _INCLUDE_XOPEN_SOURCE_EXTENDED.  */
 #undef TARGET_OS_CPP_BUILTINS
 #define TARGET_OS_CPP_BUILTINS()                                       \
   do                                                                   \
@@ -44,9 +46,21 @@
            builtin_define ("_REENTRANT");                              \
            builtin_define ("_INCLUDE_LONGLONG");                       \
            builtin_define ("__STDCPP__");                              \
+           builtin_define ("_LARGEFILE_SOURCE");                       \
+           builtin_define ("_LARGEFILE64_SOURCE");                     \
+           if (flag_pa_unix >= 1995)                                   \
+             {                                                         \
+               builtin_define ("_XOPEN_UNIX");                         \
+               builtin_define ("_XOPEN_SOURCE_EXTENDED");              \
+             }                                                         \
          }                                                             \
-       else if (!flag_iso)                                             \
+       else if (flag_iso)                                              \
          {                                                             \
+           if (flag_isoc94)                                            \
+             builtin_define ("_INCLUDE__STDC_A1_SOURCE");              \
+         }                                                             \
+       else                                                            \
+         {                                                             \
            builtin_define ("_HPUX_SOURCE");                            \
            builtin_define ("_REENTRANT");                              \
            if (preprocessing_trad_p ())                                \
@@ -59,12 +73,12 @@
                builtin_define ("_PWB");                                \
                builtin_define ("PWB");                                 \
              }                                                         \
+           if (flag_pa_unix >= 1995)                                   \
+             {                                                         \
+               builtin_define ("_XOPEN_UNIX");                         \
+               builtin_define ("_XOPEN_SOURCE_EXTENDED");              \
+             }                                                         \
          }                                                             \
-       if (flag_pa_unix >= 1995)                                       \
-         {                                                             \
-           builtin_define ("_XOPEN_UNIX");                             \
-           builtin_define ("_XOPEN_SOURCE_EXTENDED");                  \
-         }                                                             \
        if (TARGET_SIO)                                                 \
          builtin_define ("_SIO");                                      \
        else                                                            \
Index: config/pa/pa-hpux11.h
===================================================================
--- config/pa/pa-hpux11.h       (revision 224079)
+++ config/pa/pa-hpux11.h       (working copy)
@@ -23,7 +23,9 @@
    the definition of __cplusplus.  We define _INCLUDE_LONGLONG
    to prevent nlist.h from defining __STDC_32_MODE__ (no longlong
    support).  We define __STDCPP__ to get certain system headers
-   (notably assert.h) to assume standard preprocessor behavior in C++.  */
+   (notably assert.h) to assume standard preprocessor behavior in C++.
+   We define _XOPEN_SOURCE_EXTENDED when we define _HPUX_SOURCE to avoid
+   non standard hpux variants in _INCLUDE_XOPEN_SOURCE_EXTENDED.  */
 #undef TARGET_OS_CPP_BUILTINS
 #define TARGET_OS_CPP_BUILTINS()                                       \
   do                                                                   \
@@ -43,46 +45,69 @@
            builtin_define ("_REENTRANT");                              \
            builtin_define ("_INCLUDE_LONGLONG");                       \
            builtin_define ("__STDCPP__");                              \
-         }                                                             \
-       else                                                            \
-         {                                                             \
-           if (!flag_iso)                                              \
+           builtin_define ("_LARGEFILE_SOURCE");                       \
+           builtin_define ("_LARGEFILE64_SOURCE");                     \
+           if (flag_pa_unix >= 1995)                                   \
              {                                                         \
-               builtin_define ("_HPUX_SOURCE");                        \
-               builtin_define ("_REENTRANT");                          \
-               if (preprocessing_trad_p ())                            \
-                 {                                                     \
-                   builtin_define ("hp9000s800");                      \
-                   builtin_define ("hppa");                            \
-                   builtin_define ("hpux");                            \
-                   builtin_define ("unix");                            \
-                   builtin_define ("__CLASSIC_C__");                   \
-                   builtin_define ("_PWB");                            \
-                   builtin_define ("PWB");                             \
-                 }                                                     \
+               builtin_define ("_XOPEN_UNIX");                         \
+               builtin_define ("_XOPEN_SOURCE_EXTENDED");              \
              }                                                         \
+           if (flag_pa_unix >= 1998)                                   \
+             {                                                         \
+               builtin_define ("_INCLUDE__STDC_A1_SOURCE");            \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_500");           \
+             }                                                         \
+           if (flag_pa_unix >= 2003)                                   \
+             {                                                         \
+               builtin_define ("_INCLUDE_STDC_SOURCE_PRE_199901");     \
+               builtin_define ("_INCLUDE_STDC_SOURCE_199901");         \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_PRE_500");       \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_520");           \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_PRE_600");       \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_600");           \
+             }                                                         \
          }                                                             \
-       if (!TARGET_64BIT)                                              \
-         builtin_define ("_ILP32");                                    \
-       if (flag_pa_unix >= 1995 && !flag_iso)                          \
+       else if (flag_iso)                                              \
          {                                                             \
-           builtin_define ("_XOPEN_UNIX");                             \
-           builtin_define ("_XOPEN_SOURCE_EXTENDED");                  \
+           if (flag_isoc94)                                            \
+             builtin_define ("_INCLUDE__STDC_A1_SOURCE");              \
          }                                                             \
-       if (TARGET_HPUX_11_11)                                          \
+       else                                                            \
          {                                                             \
+           builtin_define ("_HPUX_SOURCE");                            \
+           builtin_define ("_REENTRANT");                              \
+           if (preprocessing_trad_p ())                                \
+             {                                                         \
+               builtin_define ("hp9000s800");                          \
+               builtin_define ("hppa");                                \
+               builtin_define ("hpux");                                \
+               builtin_define ("unix");                                \
+               builtin_define ("__CLASSIC_C__");                       \
+               builtin_define ("_PWB");                                \
+               builtin_define ("PWB");                                 \
+             }                                                         \
+           if (flag_pa_unix >= 1995)                                   \
+             {                                                         \
+               builtin_define ("_XOPEN_UNIX");                         \
+               builtin_define ("_XOPEN_SOURCE_EXTENDED");              \
+             }                                                         \
            if (flag_pa_unix >= 1998)                                   \
              {                                                         \
-               if (flag_isoc94 || flag_isoc99 || c_dialect_cxx()       \
-                   || !flag_iso)                                       \
-                 builtin_define ("_INCLUDE__STDC_A1_SOURCE");          \
-               if (!flag_iso)                                          \
-                 builtin_define ("_INCLUDE_XOPEN_SOURCE_500");         \
+               builtin_define ("_INCLUDE__STDC_A1_SOURCE");            \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_500");           \
              }                                                         \
-           else if (flag_isoc94 || flag_isoc99 || c_dialect_cxx ())    \
-             warning (0, "-munix=98 option required for C89 "          \
-                      "Amendment 1 features.\n");                      \
+           if (flag_pa_unix >= 2003)                                   \
+             {                                                         \
+               builtin_define ("_INCLUDE_STDC_SOURCE_PRE_199901");     \
+               builtin_define ("_INCLUDE_STDC_SOURCE_199901");         \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_PRE_500");       \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_520");           \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_PRE_600");       \
+               builtin_define ("_INCLUDE_XOPEN_SOURCE_600");           \
+             }                                                         \
          }                                                             \
+       if (!TARGET_64BIT)                                              \
+         builtin_define ("_ILP32");                                    \
        if (TARGET_SIO)                                                 \
          builtin_define ("_SIO");                                      \
        else                                                            \

Reply via email to