[PATCH 3/5] configure: use TEST_CC to check for -Ttext-segment
Adhemerval Zanella
adhemerval.zanella@linaro.org
Fri Dec 5 19:11:34 GMT 2025
The ld.lld does not support this option; however, it does support a
similar option (--image-base=). If the -Ttext-segment check fails, it
also checks for support for --image-base=.
---
configure | 41 +++++++++++++++++++++++++++++++++++++++++
configure.ac | 15 +++++++++++----
2 files changed, 52 insertions(+), 4 deletions(-)
diff --git a/configure b/configure
index 4cfc3daf83..7bf92aab37 100755
--- a/configure
+++ b/configure
@@ -9125,6 +9125,8 @@ libc_linker_feature=no
cat > conftest.c <<EOF
int _start (void) { return 42; }
EOF
+saved_CC="$CC"
+CC="$TEST_CC"
if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
-Wl,-Ttext-segment=$libc_cv_pde_load_address -nostdlib -nostartfiles
-fPIC -shared -o conftest.so conftest.c
@@ -9149,8 +9151,47 @@ if test $libc_linker_feature = yes; then
else
libc_cv_load_address_ldflag=
fi
+CC="$saved_CC"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
printf "%s\n" "$libc_linker_feature" >&6; }
+if test -z $libc_cv_load_address_ldflag; then
+ # ld.lld does not support -Ttext-segment, but supports a similar option
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for linker that supports --image-base=$libc_cv_pde_load_address" >&5
+printf %s "checking for linker that supports --image-base=$libc_cv_pde_load_address... " >&6; }
+libc_linker_feature=no
+cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+saved_CC="$CC"
+CC="$TEST_CC"
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -Wl,--image-base=$libc_cv_pde_load_address -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,--image-base=$libc_cv_pde_load_address -nostdlib \
+ -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
+ | grep "warning: --image-base=$libc_cv_pde_load_address ignored" > /dev/null 2>&1; then
+ true
+ else
+ libc_linker_feature=yes
+ fi
+fi
+rm -f conftest*
+if test $libc_linker_feature = yes; then
+ libc_cv_load_address_ldflag=-Wl,--image-base
+else
+ libc_cv_load_address_ldflag=
+fi
+CC="$saved_CC"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+printf "%s\n" "$libc_linker_feature" >&6; }
+fi
config_vars="$config_vars
load-address-ldflag = $libc_cv_load_address_ldflag"
diff --git a/configure.ac b/configure.ac
index c7907f48f8..92ad33f37a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2043,10 +2043,17 @@ LIBC_CONFIG_VAR([pde-load-address], [$libc_cv_pde_load_address])
# Get the linker command-line option to load executable at a non-zero
# load address. This is only used by glibc tests to verify that PIE and
# static PIE with non-zero load address work correctly.
-LIBC_LINKER_FEATURE([-Ttext-segment=$libc_cv_pde_load_address],
- [-Wl,-Ttext-segment=$libc_cv_pde_load_address],
- [libc_cv_load_address_ldflag=-Wl,-Ttext-segment],
- [libc_cv_load_address_ldflag=])
+LIBC_TEST_LINKER_FEATURE([-Ttext-segment=$libc_cv_pde_load_address],
+ [-Wl,-Ttext-segment=$libc_cv_pde_load_address],
+ [libc_cv_load_address_ldflag=-Wl,-Ttext-segment],
+ [libc_cv_load_address_ldflag=])
+if test -z $libc_cv_load_address_ldflag; then
+ # ld.lld does not support -Ttext-segment, but supports a similar option
+ LIBC_TEST_LINKER_FEATURE([--image-base=$libc_cv_pde_load_address],
+ [-Wl,--image-base=$libc_cv_pde_load_address],
+ [libc_cv_load_address_ldflag=-Wl,--image-base],
+ [libc_cv_load_address_ldflag=])
+fi
LIBC_CONFIG_VAR([load-address-ldflag], [$libc_cv_load_address_ldflag])
# Check if compiler supports -fno-fp-int-builtin-inexact
--
2.43.0
More information about the Libc-alpha
mailing list