In HP-UX 10, the _r suffix routines are only declared when _REENTRANT
is defined.  Previously, we only defined _REENTRANT when -threads was
specified (DCE thread model).  However, we also need the reentrant
functions in the single thread model for libgfortran.  As far as I
can tell, the reentrant functions work fine without linking with
-lcma.  This similar to the situation on HP-UX 11 where the _REENTRANT
guard has been removed.  The only remaining guard is on `errno'.

In studying this, I learned that libc had been enhanced so that libc_r
was no longer needed on HP-UX 10.  Indeed, libc has a couple of additional
reentrant functions.  In HP-UX 10.30, the library changed to a POSIX 1c
implementations  libc_r was provided in HP-UX 10 for HP-UX 9 compatibility.
So, I've changed the thread linkage to use libc on HP-UX 10.

Tested on hppa1.1.-hp-hpux10.20 with no regressions.  Committed to trunk.

Dave
-- 
J. David Anglin                                  dave.ang...@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)

2011-03-10  John David Anglin  <dave.ang...@nrc-cnrc.gc.ca>

        * config/pa/pa-hpux10.h (TARGET_OS_CPP_BUILTINS): Define _REENTRANT
        when _HPUX_SOURCE is defined.
        (LIB_SPEC): Use -lc instead of -lc_r when -threads is specified.

Index: config/pa/pa-hpux10.h
===================================================================
--- config/pa/pa-hpux10.h       (revision 170562)
+++ config/pa/pa-hpux10.h       (working copy)
@@ -42,12 +42,14 @@
        if (c_dialect_cxx ())                                           \
          {                                                             \
            builtin_define ("_HPUX_SOURCE");                            \
+           builtin_define ("_REENTRANT");                              \
            builtin_define ("_INCLUDE_LONGLONG");                       \
            builtin_define ("__STDCPP__");                              \
          }                                                             \
        else if (!flag_iso)                                             \
          {                                                             \
            builtin_define ("_HPUX_SOURCE");                            \
+           builtin_define ("_REENTRANT");                              \
            if (preprocessing_trad_p ())                                \
              {                                                         \
                builtin_define ("hp9000s800");                          \
@@ -111,7 +113,7 @@
   "%{!shared:\
      %{!p:%{!pg:\
        %{!threads:-lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}\
-       %{threads:-lcma -lc_r}}}\
+       %{threads:-lcma -lc}}}\
      %{p:%{!pg:-lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
      %{pg:-lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}"
 

Reply via email to