]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
ld: Force SHELL=/bin/bash in ld for Solaris [PR32580]
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Fri, 25 Jul 2025 07:49:13 +0000 (09:49 +0200)
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Fri, 25 Jul 2025 07:49:13 +0000 (09:49 +0200)
As described in PR ld/32580, when using SHELL=/bin/sh or /bin/ksh on
Solaris, the generated linker scripts get corrupted.  So far, the only
workaround is to enforce /bin/bash instead.

This is a major nuisance for developers and users alike, so this patch
automates this by overriding SHELL in ld/configure.ac.

Tested on amd64-pc-solaris2.11 in three configurations:

* CONFIG_SHELL unset

* CONFIG_SHELL=/bin/ksh

* CONFIG_SHELL='/bin/bash --norc'

In the first two cases, SHELL was set to /bin/bash as desired, while in
the third it was left unchanged.

2025-07-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

ld:
PR ld/32580
* configure.ac <*-*-solaris2*>: Enforce SHELL=/bin/bash.
* configure: Regenerate.

ld/ChangeLog
ld/configure
ld/configure.ac

index 52bbeda444b0ba02f9c7badc73db1082141c71c2..96960ab08e05ff678320ba5de8afcf6048e386d5 100644 (file)
@@ -1,3 +1,9 @@
+2025-07-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR ld/32580
+       * configure.ac <*-*-solaris2*>: Enforce SHELL=/bin/bash.
+       * configure: Regenerate.
+
 2025-07-13  Nick Clifton  <nickc@redhat.com>
 
        * 2.45 Branch point.
index 015666d30a6e2dc3e53773aefc3c169c4a447bee..124b44182bc3e64750d32bdb6362621a64f94dbb 100755 (executable)
@@ -3362,6 +3362,19 @@ fi
 
 
 
+case $target in
+  *-*-solaris2*)
+    case "$SHELL" in
+      *bash*)
+        ;;
+      *)
+        # PR 32580: Force use of bash to avoid corrupt linker scripts.
+        SHELL=/bin/bash
+        ;;
+    esac
+    ;;
+esac
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -11501,7 +11514,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11504 "configure"
+#line 11517 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11607,7 +11620,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11610 "configure"
+#line 11623 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
index af065fe7d4f3a6f09666251ed25af3b69bf4b22b..e306c1ded4afcea834eeb3b1970b80f58959a2cd 100644 (file)
@@ -28,6 +28,19 @@ AM_INIT_AUTOMAKE
 AM_SILENT_RULES([yes])
 AM_MAINTAINER_MODE
 
+case $target in
+  *-*-solaris2*)
+    case "$SHELL" in
+      *bash*)
+        ;;
+      *)
+        # PR 32580: Force use of bash to avoid corrupt linker scripts.
+        SHELL=/bin/bash
+        ;;
+    esac
+    ;;
+esac
+
 AC_PROG_CC
 AC_PROG_CXX
 AC_PROG_GREP