mirror of
https://sourceware.org/git/glibc.git
synced 2025-12-20 01:12:17 +08:00
configure: use TEST_CC to check for --no-error-execstack
The ld.lld does not support the --no-error-execstack option, and it is required only to suppress the linker warning while building tests. A new configure macro, LIBC_TEST_LINKER_FEATURE, is added to check for linker features using TEST_CC instead of CC. Checked on x86_64-linux-gnu and aarch64-linux-gnu with gcc and TEST_CC set to clang-18 and clan-21. Reviewed-by: Sam James <sam@gentoo.org>
This commit is contained in:
32
aclocal.m4
vendored
32
aclocal.m4
vendored
@@ -268,6 +268,38 @@ else
|
||||
fi
|
||||
AC_MSG_RESULT($libc_linker_feature)])
|
||||
|
||||
dnl Check linker option support.
|
||||
dnl LIBC_TEST_LINKER_FEATURE([ld_option], [cc_option], [action-if-true], [action-if-false])
|
||||
AC_DEFUN([LIBC_TEST_LINKER_FEATURE],
|
||||
[AC_MSG_CHECKING([for linker that supports $1])
|
||||
libc_linker_feature=no
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
saved_CC="$CC"
|
||||
CC="$TEST_CC"
|
||||
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
|
||||
$2 -nostdlib -nostartfiles
|
||||
-fPIC -shared -o conftest.so conftest.c
|
||||
1>&AS_MESSAGE_LOG_FD])
|
||||
then
|
||||
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp $2 -nostdlib \
|
||||
-nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
|
||||
| grep "warning: $1 ignored" > /dev/null 2>&1; then
|
||||
true
|
||||
else
|
||||
libc_linker_feature=yes
|
||||
fi
|
||||
fi
|
||||
rm -f conftest*
|
||||
if test $libc_linker_feature = yes; then
|
||||
$3
|
||||
else
|
||||
$4
|
||||
fi
|
||||
CC="$saved_CC"
|
||||
AC_MSG_RESULT($libc_linker_feature)])
|
||||
|
||||
dnl Add a makefile variable, with value set from a shell string
|
||||
dnl (expanded by the shell inside double quotes), to config.make.
|
||||
dnl LIBC_CONFIG_VAR(make-variable, shell-value)
|
||||
|
||||
9
configure
vendored
9
configure
vendored
@@ -659,7 +659,7 @@ libc_cv_has_glob_dat
|
||||
libc_cv_fpie
|
||||
libc_cv_test_static_pie
|
||||
libc_cv_z_execstack
|
||||
libc_cv_no_error_execstack
|
||||
libc_cv_test_no_error_execstack
|
||||
ASFLAGS_config
|
||||
libc_cv_cc_with_libunwind
|
||||
libc_cv_insert
|
||||
@@ -7142,6 +7142,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,--no-error-execstack -nostdlib -nostartfiles
|
||||
-fPIC -shared -o conftest.so conftest.c
|
||||
@@ -7162,10 +7164,11 @@ then
|
||||
fi
|
||||
rm -f conftest*
|
||||
if test $libc_linker_feature = yes; then
|
||||
libc_cv_no_error_execstack=yes
|
||||
libc_cv_test_no_error_execstack=yes
|
||||
else
|
||||
libc_cv_no_error_execstack=no
|
||||
libc_cv_test_no_error_execstack=no
|
||||
fi
|
||||
CC="$saved_CC"
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
|
||||
printf "%s\n" "$libc_linker_feature" >&6; }
|
||||
|
||||
|
||||
@@ -1328,9 +1328,9 @@ if test $libc_cv_as_noexecstack = yes; then
|
||||
fi
|
||||
AC_SUBST(ASFLAGS_config)
|
||||
|
||||
LIBC_LINKER_FEATURE([--no-error-execstack], [-Wl,--no-error-execstack],
|
||||
[libc_cv_no_error_execstack=yes], [libc_cv_no_error_execstack=no])
|
||||
AC_SUBST(libc_cv_no_error_execstack)
|
||||
LIBC_TEST_LINKER_FEATURE([--no-error-execstack], [-Wl,--no-error-execstack],
|
||||
[libc_cv_test_no_error_execstack=yes], [libc_cv_test_no_error_execstack=no])
|
||||
AC_SUBST(libc_cv_test_no_error_execstack)
|
||||
|
||||
LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
|
||||
[libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
|
||||
|
||||
Reference in New Issue
Block a user