On Fri, May 15, 2020 at 6:42 AM Rainer Orth <r...@cebitec.uni-bielefeld.de> 
wrote:
>
> > On Thu, May 14, 2020 at 12:43 PM Rainer Orth
> > <r...@cebitec.uni-bielefeld.de> wrote:
> >>
> >> > This libgo patch builds the syscall test with -static.  This avoids
> >> > problems finding libgo.so when running the test as root, which invokes
> >> > the test as a child process in various limited environments.  This
> >> > fixes GCC PR 95061.  Bootstrapped and ran Go tests on
> >> > x86_64-pc-linux-gnu.  Committed to mainline.
> >>
> >> this patch broke the syscall test on Solaris:
> >>
> >> ld: fatal: library -lpthread: not found
> >> ld: fatal: library -lm: not found
> >> ld: fatal: library -lc: not found
> >> ld: fatal: library -lc: not found
> >> collect2: error: ld returned 1 exit status
> >> FAIL: syscall
> >>
> >> There are no static versions of system libraries.
> >
> > Sorry about that.  The issue only arises on GNU/Linux, so committed
> > this patch after testing to at least fix the problem on Solaris.
>
> thanks.  However, during today's Linux/x86_64 bootstrap I see that the
> test fails there and indeed glibc-static isn't installed.

Ah, well.  Committed following to mainline.  This time for sure.

Ian
e210e6a965f65a7ae70e1bd8744e024999172a35
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index 4776f78e5fa..bc9c1f07eda 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-cae8d4c388d4cc701c7f8fc221c9f6431760d93a
+bc27341f245a5cc54ac7530d037a609db72b677c
 
 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 0bbe54cfe1b..5b1807228ad 100644
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -967,8 +967,8 @@ endif
 # Also use -fno-inline to get better results from the memory profiler.
 runtime_pprof_check_GOCFLAGS = -static-libgo -fno-inline
 
-if LIBGO_IS_LINUX
-# Use -static for the syscall tests, because otherwise when
+if HAVE_STATIC_LINK
+# Use -static for the syscall tests if possible, because otherwise when
 # running as root the re-execs ignore LD_LIBRARY_PATH.
 syscall_check_GOCFLAGS = -static
 endif
diff --git a/libgo/configure.ac b/libgo/configure.ac
index f800d44a0e9..235d867ccda 100644
--- a/libgo/configure.ac
+++ b/libgo/configure.ac
@@ -881,6 +881,17 @@ if test "x$libgo_cv_as_x86_aes" = xyes; then
            [Define if your assembler supports AES instructions.])
 fi
 
+dnl Test whether the linker supports the -static option.
+AC_CACHE_CHECK([whether -static is supported],
+[libgo_cv_ld_static],
+[LDFLAGS_hold=$LDFLAGS
+LDFLAGS="$LDFLAGS -static"
+AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
+[libgo_cv_ld_static=yes],
+[libgo_cv_ld_static=no])
+LDFLAGS=$LDFLAGS_hold])
+AM_CONDITIONAL(HAVE_STATIC_LINK, test "$libgo_cv_ld_static" = yes)
+
 AC_CACHE_SAVE
 
 if test ${multilib} = yes; then

Reply via email to