libgo: use -Wc,-shared-libgcc on Solaris Patch from Rainer Orth. For https://gcc.gnu.org/PR64900 Change-Id: I1d8c059009b2956b6e6d4f675fde79e72842ae11 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/731482 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
diff --git a/libgo/Makefile.am b/libgo/Makefile.am index 3eccadb..d139d78 100644 --- a/libgo/Makefile.am +++ b/libgo/Makefile.am
@@ -837,7 +837,8 @@ $(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 0a2b7ee..6e194d0 100644 --- a/libgo/Makefile.in +++ b/libgo/Makefile.in
@@ -453,6 +453,7 @@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OSCFLAGS = @OSCFLAGS@ +OSLDFLAGS = @OSLDFLAGS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -972,7 +973,8 @@ $(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 bba3c7a..fa290d4 100755 --- a/libgo/configure +++ b/libgo/configure
@@ -658,6 +658,7 @@ USING_SPLIT_STACK_FALSE USING_SPLIT_STACK_TRUE SPLIT_STACK +OSLDFLAGS HWCAP_CFLAGS OSCFLAGS GO_SYSCALL_OS_ARCH_FILE @@ -11547,7 +11548,7 @@ 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 @@ 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 @@ +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 f8fe5f2..0004819 100644 --- a/libgo/configure.ac +++ b/libgo/configure.ac
@@ -442,6 +442,15 @@ 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 7c2e2e6..0b5e726 100644 --- a/libgo/testsuite/Makefile.in +++ b/libgo/testsuite/Makefile.in
@@ -202,6 +202,7 @@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OSCFLAGS = @OSCFLAGS@ +OSLDFLAGS = @OSLDFLAGS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@