https://gcc.gnu.org/g:faff25435b0d23b2ac4deef5a9434c8cd098c0d2

commit r15-9327-gfaff25435b0d23b2ac4deef5a9434c8cd098c0d2
Author: Richard Biener <rguent...@suse.de>
Date:   Tue Apr 8 14:57:05 2025 +0200

    bootstrap/119680 - fix cross-compiler build with --enable-host-shared
    
    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.

Diff:
---
 libbacktrace/configure    | 16 ++++++++++++----
 libbacktrace/configure.ac |  7 ++++++-
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/libbacktrace/configure b/libbacktrace/configure
index 0ecdd3ec0a3d..85be043009af 100755
--- a/libbacktrace/configure
+++ b/libbacktrace/configure
@@ -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
 
 
diff --git a/libbacktrace/configure.ac b/libbacktrace/configure.ac
index 75b3a7536f1e..6549cdeacf4f 100644
--- a/libbacktrace/configure.ac
+++ b/libbacktrace/configure.ac
@@ -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.

Reply via email to