From 1ee9f54af1667d4e8088b16b246838a3037b1a4b Mon Sep 17 00:00:00 2001 From: Andy Fiddaman Date: Wed, 19 Feb 2020 21:30:23 +0000 Subject: -G should imply the same specs as -shared --- gcc/config/sol2.h | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h index ff34bd74e66..d48e89c4fb0 100644 --- a/gcc/config/sol2.h +++ b/gcc/config/sol2.h @@ -178,13 +178,12 @@ along with GCC; see the file COPYING3. If not see std=c++03|std=gnu++03:values-Xc.o%s; \ :values-Xa.o%s}" - #if defined(HAVE_LD_PIE) && defined(HAVE_SOLARIS_CRTS) #define STARTFILE_CRTBEGIN_SPEC "%{static:crtbegin.o%s; \ - shared|" PIE_SPEC ":crtbeginS.o%s; \ + shared|G|" PIE_SPEC ":crtbeginS.o%s; \ :crtbegin.o%s}" #else -#define STARTFILE_CRTBEGIN_SPEC "%{shared:crtbeginS.o%s;:crtbegin.o%s}" +#define STARTFILE_CRTBEGIN_SPEC "%{shared|G:crtbeginS.o%s;:crtbegin.o%s}" #endif #if ENABLE_VTABLE_VERIFY @@ -213,28 +212,28 @@ along with GCC; see the file COPYING3. If not see #ifdef HAVE_SOLARIS_CRTS /* Since Solaris 11.4, the OS delivers crt1.o, crti.o, and crtn.o, with a hook for compiler-dependent stuff like profile handling. */ -#define STARTFILE_SPEC "%{!shared:%{!symbolic: \ +#define STARTFILE_SPEC "%{!shared:%{!symbolic:%{!G: \ crt1.o%s \ %{p:%e-p is not supported; \ pg:crtpg.o%s gmon.o%s; \ - :crtp.o%s}}} \ + :crtp.o%s}}}} \ crti.o%s %(startfile_arch) %(startfile_crtbegin) \ %(startfile_vtv)" #else -#define STARTFILE_SPEC "%{!shared:%{!symbolic: \ +#define STARTFILE_SPEC "%{!shared:%{!symbolic:%{!G: \ %{p:mcrt1.o%s; \ pg:gcrt1.o%s gmon.o%s; \ - :crt1.o%s}}} \ + :crt1.o%s}}}} \ crti.o%s %(startfile_arch) %(startfile_crtbegin) \ %(startfile_vtv)" #endif #if defined(HAVE_LD_PIE) && defined(HAVE_SOLARIS_CRTS) #define ENDFILE_CRTEND_SPEC "%{static:crtend.o%s; \ - shared|" PIE_SPEC ":crtendS.o%s; \ + shared|G|" PIE_SPEC ":crtendS.o%s; \ :crtend.o%s}" #else -#define ENDFILE_CRTEND_SPEC "%{shared:crtendS.o%s;:crtend.o%s}" +#define ENDFILE_CRTEND_SPEC "%{shared|G:crtendS.o%s;:crtend.o%s}" #endif #undef ENDFILE_SPEC @@ -244,8 +243,7 @@ along with GCC; see the file COPYING3. If not see #undef LINK_ARCH32_SPEC_BASE #define LINK_ARCH32_SPEC_BASE \ - "%{G:-G} \ - %{YP,*} \ + "%{YP,*} \ %{R*} \ %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp%R/lib:%R/usr/lib} \ %{!p:%{!pg:-Y P,%R/lib:%R/usr/lib}}}" @@ -257,8 +255,7 @@ along with GCC; see the file COPYING3. If not see ARCH64_SUBDIR appended to the paths. */ #undef LINK_ARCH64_SPEC_BASE #define LINK_ARCH64_SPEC_BASE \ - "%{G:-G} \ - %{YP,*} \ + "%{YP,*} \ %{R*} \ %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/" ARCH64_SUBDIR ":%R/lib/" ARCH64_SUBDIR ":%R/usr/lib/" ARCH64_SUBDIR "} \ %{!p:%{!pg:-Y P,%R/lib/" ARCH64_SUBDIR ":%R/usr/lib/" ARCH64_SUBDIR "}}}" @@ -339,7 +336,7 @@ along with GCC; see the file COPYING3. If not see #ifndef USE_GLD /* With Sun ld, use mapfile to enforce direct binding to libgcc_s unwinder. */ #define LINK_LIBGCC_MAPFILE_SPEC \ - "%{shared|shared-libgcc:-M %slibgcc-unwind.map}" + "%{shared|shared-libgcc|G:-M %slibgcc-unwind.map}" #else /* GNU ld doesn't support direct binding. */ #define LINK_LIBGCC_MAPFILE_SPEC "" @@ -356,9 +353,9 @@ along with GCC; see the file COPYING3. If not see #undef LINK_SPEC #define LINK_SPEC \ "%{h*} %{v:-V} \ - %{!shared:%{!static:%{rdynamic: " RDYNAMIC_SPEC "}}} \ + %{!shared:%{!static:%{!G:%{rdynamic: " RDYNAMIC_SPEC "}}}} \ %{static:-dn -Bstatic} \ - %{shared:-G -dy %{!mimpure-text:-z text}} " \ + %{shared|G:-G -dy %{!mimpure-text:-z text}} " \ LINK_LIBGCC_MAPFILE_SPEC LINK_CLEARCAP_SPEC " \ %{symbolic:-Bsymbolic -G -dy -z text} \ %(link_arch) \