Fix linkage with -nodefaultlibs option.
authorJohn David Anglin <danglin@gcc.gnu.org>
Sun, 20 Sep 2020 19:37:17 +0000 (19:37 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Sun, 20 Sep 2020 19:37:17 +0000 (19:37 +0000)
2020-09-20  John David Anglin  < danglin@gcc.gnu.org>

gcc/ChangeLog
* config/pa/pa-hpux11.h (LINK_GCC_C_SEQUENCE_SPEC): Delete.
* config/pa/pa64-hpux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
(ENDFILE_SPEC): Link with libgcc_stub.a and mill.a.
* config/pa/pa32-linux.h (ENDFILE_SPEC): Link with libgcc.a.

gcc/config/pa/pa-hpux11.h
gcc/config/pa/pa32-linux.h
gcc/config/pa/pa64-hpux.h

index 794bf8e296400e6516a6813fbe7b8b1f411ef47b..28207202e424cfebf2cfc55adf186fa610048231 100644 (file)
@@ -154,11 +154,6 @@ along with GCC; see the file COPYING3.  If not see
        %{!mt:%{!pthread:-a shared -lc -a archive}}}}\
    %{shared:%{mt|pthread:-lpthread}}"
 
-/* The libgcc_stub.a library needs to come last.  */
-#undef LINK_GCC_C_SEQUENCE_SPEC
-#define LINK_GCC_C_SEQUENCE_SPEC \
-  "%G %{!nolibc:%L} %G %{!nostdlib:%{!nodefaultlibs:%{!shared:-lgcc_stub}}}"
-
 #undef STARTFILE_SPEC
 #define STARTFILE_SPEC \
   "%{!shared:%{pg:gcrt0%O%s}%{!pg:%{p:mcrt0%O%s}%{!p:crt0%O%s}} \
index f271bbf51a259404720f69e66725caaeade6e257..970722ad528c9491ac141ec8f60d2a9ea0d5e548 100644 (file)
@@ -57,6 +57,11 @@ call_ ## FUNC (void)                                 \
 }
 #endif
 
+/* We need to link against libgcc.a for __canonicalize_funcptr_for_compare
+   and $$dyncall.  */
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC GNU_USER_TARGET_ENDFILE_SPEC "libgcc.a%s"
+
 #undef  WCHAR_TYPE
 #define WCHAR_TYPE "long int"
 
index c7d127f76ace1f3ba93eb77e9f5200a121f9941b..096aa4bd4ee9eba768c43b13540527b8f62c805c 100644 (file)
@@ -103,12 +103,6 @@ along with GCC; see the file COPYING3.  If not see
    %{shared:%{mt|pthread:-lpthread}}"
 #endif
 
-/* The libgcc_stub.a and milli.a libraries need to come last.  */
-#undef LINK_GCC_C_SEQUENCE_SPEC
-#define LINK_GCC_C_SEQUENCE_SPEC "\
-  %G %{!nolibc:%L} %G %{!nostdlib:%{!nodefaultlibs:%{!shared:-lgcc_stub}\
-  milli.a%s}}"
-
 /* Under hpux11, the normal location of the `ld' and `as' programs is the
    /usr/ccs/bin directory.  */
 
@@ -335,8 +329,12 @@ do {                                                               \
    %{static:crtbeginT%O%s} %{!static:%{!shared:crtbegin%O%s} \
    %{shared:crtbeginS%O%s}}"
 #endif
+
+/* The libgcc_stub.a and milli.a libraries must come last.  We need
+   to link with these libraries whenever start files are needed.  */
 #undef ENDFILE_SPEC
-#define ENDFILE_SPEC "%{!shared:crtend%O%s} %{shared:crtendS%O%s}"
+#define ENDFILE_SPEC \
+  "%{!shared:crtend%O%s libgcc_stub.a%s} %{shared:crtendS%O%s} milli.a%s"
 
 /* Since HP uses the .init and .fini sections for array initializers
    and finalizers, we need different defines for INIT_SECTION_ASM_OP