From: Ian Lance Taylor Date: Fri, 19 Dec 2025 19:17:48 +0000 (-0800) Subject: libgo: use -Wc,-shared-libgcc on Solaris X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15f7c5896191818a02c65f958edb5af3f527ebf0;p=thirdparty%2Fgcc.git libgo: use -Wc,-shared-libgcc on Solaris Patch from Rainer Orth. For GCC PR go/64900 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/731482 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index c1abe89afb7e..4520e543784a 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -ace35ffba59c926d401a6d3f918bd3c85f48c8fd +6e421340885c87c4987f27be4a16b7bedb86faaa The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/Makefile.am b/libgo/Makefile.am index 3eccadbac67b..d139d7818ec4 100644 --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -837,7 +837,8 @@ libgo_go_objs = \ $(golangorg_x_sys_cpu_gccgo_x86_lo) libgo_ldflags = \ - -version-info $(libtool_VERSION) $(PTHREAD_CFLAGS) $(AM_LDFLAGS) + -version-info $(libtool_VERSION) $(PTHREAD_CFLAGS) $(AM_LDFLAGS) \ + $(OSLDFLAGS) libgo_libadd = \ $(libgo_go_objs) ../libbacktrace/libbacktrace.la \ diff --git a/libgo/Makefile.in b/libgo/Makefile.in index 0a2b7ee55301..6e194d084dae 100644 --- a/libgo/Makefile.in +++ b/libgo/Makefile.in @@ -453,6 +453,7 @@ OBJCOPY = @OBJCOPY@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OSCFLAGS = @OSCFLAGS@ +OSLDFLAGS = @OSLDFLAGS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -972,7 +973,8 @@ libgo_go_objs = \ $(golangorg_x_sys_cpu_gccgo_x86_lo) libgo_ldflags = \ - -version-info $(libtool_VERSION) $(PTHREAD_CFLAGS) $(AM_LDFLAGS) + -version-info $(libtool_VERSION) $(PTHREAD_CFLAGS) $(AM_LDFLAGS) \ + $(OSLDFLAGS) libgo_libadd = \ $(libgo_go_objs) ../libbacktrace/libbacktrace.la \ diff --git a/libgo/configure b/libgo/configure index bba3c7aa7804..fa290d43ba21 100755 --- a/libgo/configure +++ b/libgo/configure @@ -658,6 +658,7 @@ GO_SPLIT_STACK USING_SPLIT_STACK_FALSE USING_SPLIT_STACK_TRUE SPLIT_STACK +OSLDFLAGS HWCAP_CFLAGS OSCFLAGS GO_SYSCALL_OS_ARCH_FILE @@ -11547,7 +11548,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11550 "configure" +#line 11551 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11653,7 +11654,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11656 "configure" +#line 11657 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -14457,6 +14458,15 @@ $as_echo "$ac_hwcap_flags" >&6; } +case "$target" in + *86*-*-solaris2.*) + # Link with -shared-libgcc on Solaris 11+/x86 as a workaround for + # PR go/64900. + OSLDFLAGS="-Wc,-shared-libgcc" + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -fsplit-stack is supported" >&5 $as_echo_n "checking whether -fsplit-stack is supported... " >&6; } if ${libgo_cv_c_split_stack_supported+:} false; then : diff --git a/libgo/configure.ac b/libgo/configure.ac index f8fe5f2ed98f..0004819d967d 100644 --- a/libgo/configure.ac +++ b/libgo/configure.ac @@ -442,6 +442,15 @@ AC_SUBST(OSCFLAGS) dnl Check if assembler supports disabling hardware capability support. GCC_CHECK_ASSEMBLER_HWCAP +case "$target" in + *86*-*-solaris2.*) + # Link with -shared-libgcc on Solaris 11+/x86 as a workaround for + # PR go/64900. + OSLDFLAGS="-Wc,-shared-libgcc" + ;; +esac +AC_SUBST(OSLDFLAGS) + dnl Use -fsplit-stack when compiling C code if available. AC_CACHE_CHECK([whether -fsplit-stack is supported], [libgo_cv_c_split_stack_supported], diff --git a/libgo/testsuite/Makefile.in b/libgo/testsuite/Makefile.in index 7c2e2e62fcf3..0b5e7263dcc3 100644 --- a/libgo/testsuite/Makefile.in +++ b/libgo/testsuite/Makefile.in @@ -202,6 +202,7 @@ OBJCOPY = @OBJCOPY@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OSCFLAGS = @OSCFLAGS@ +OSLDFLAGS = @OSLDFLAGS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@