]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
bootstrap/119680 - fix cross-compiler build with --enable-host-shared
authorRichard Biener <rguenther@suse.de>
Tue, 8 Apr 2025 12:57:05 +0000 (14:57 +0200)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 9 Apr 2025 07:38:17 +0000 (09:38 +0200)
It seems that at least when cross-compiling at least collect2 pulls
in objects from libbacktrace.a which is linked via LIBDEPS.  But
libbacktrace for the host is only built -fPIC with --enable-host-shared
but not -fPIE with --enable-host-pie so this fails.  The following
teaches libbacktrace about --enable-host-pie and handles it similar
to libcpp.

PR bootstrap/119680
libbacktrace/
* configure.ac (--enable-host-pie): Handle by setting PIC_FLAG
to -fPIE.
* configure: Regenerate.

libbacktrace/configure
libbacktrace/configure.ac

index 0ecdd3ec0a3d97d6783a553be879fdf6fb6659a4..85be043009afa6742952ac01ddea85fee4081ba9 100755 (executable)
@@ -814,6 +814,7 @@ enable_largefile
 enable_cet
 enable_werror
 with_system_libunwind
+enable_host_pie
 enable_host_shared
 '
       ac_precious_vars='build_alias
@@ -1464,6 +1465,7 @@ Optional Features:
   --disable-largefile     omit support for large files
   --enable-cet            enable Intel CET in target libraries [default=auto]
   --disable-werror        disable building with -Werror
+  --enable-host-pie       build host code as PIE
   --enable-host-shared    build host code as shared libraries
   --enable-cet            enable Intel CET in host libraries [default=auto]
 
@@ -11634,7 +11636,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11637 "configure"
+#line 11639 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11740,7 +11742,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11743 "configure"
+#line 11745 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12518,12 +12520,18 @@ $as_echo "#define HAVE_GETIPINFO 1" >>confdefs.h
   fi
 fi
 
+# Enable --enable-host-pie.
+# Check whether --enable-host-pie was given.
+if test "${enable_host_pie+set}" = set; then :
+  enableval=$enable_host_pie; PIC_FLAG=-fPIE
+else
+  PIC_FLAG=
+fi
+
 # Enable --enable-host-shared.
 # Check whether --enable-host-shared was given.
 if test "${enable_host_shared+set}" = set; then :
   enableval=$enable_host_shared; PIC_FLAG=-fPIC
-else
-  PIC_FLAG=
 fi
 
 
index 75b3a7536f1e8788e08377b50d0116f006e30ad8..6549cdeacf4f1208cf5a775272a5193d6215a744 100644 (file)
@@ -175,11 +175,16 @@ else
   fi
 fi
 
+# Enable --enable-host-pie.
+AC_ARG_ENABLE(host-pie,
+[AS_HELP_STRING([--enable-host-pie],
+                [build host code as PIE])],
+[PIC_FLAG=-fPIE], [PIC_FLAG=])
 # Enable --enable-host-shared.
 AC_ARG_ENABLE(host-shared,
 [AS_HELP_STRING([--enable-host-shared],
                [build host code as shared libraries])],
-[PIC_FLAG=-fPIC], [PIC_FLAG=])
+[PIC_FLAG=-fPIC])
 AC_SUBST(PIC_FLAG)
 
 # Enable Intel CET on Intel CET enabled host if jit is enabled.