aboutsummaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure100
1 files changed, 58 insertions, 42 deletions
diff --git a/configure b/configure
index 6595d6b..180e49d 100755
--- a/configure
+++ b/configure
@@ -620,8 +620,6 @@ DEFINES
static_nss
profile
libc_cv_multidir
-enable_gsframe
-READELF_SFRAME
libc_cv_test_x86_have_amx_tile
test_enable_cet
libc_cv_test_cc_mprefer_vector_width
@@ -694,6 +692,7 @@ MAKEINFO
MSGFMT
MAKE
LD
+STRIP
NM
OBJDUMP
READELF
@@ -1510,8 +1509,7 @@ Optional Features:
Use -D_FORTIFY_SOURCE=[1|2|3] to control code
hardening, defaults to highest possible value
supported by the build compiler.
- --disable-sframe Disable building with SFrame stack trace information
- [default=yes if GNU as is 2.41 or older]
+ --enable-sframe Enable building with SFrame support [default=no]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -4895,7 +4893,7 @@ if test ${enable_sframe+y}
then :
enableval=$enable_sframe; use_sframe=$enableval
else case e in #(
- e) use_sframe=notset ;;
+ e) use_sframe=no ;;
esac
fi
@@ -5142,6 +5140,10 @@ if test -z "$NM"; then
NM=`$CC -print-prog-name=nm`
fi
+if test -z "$STRIP"; then
+ STRIP=`$CC -print-prog-name=strip`
+fi
+
# Accept binutils 2.39 or newer.
@@ -9356,21 +9358,30 @@ have-libgcc_s = $libc_cv_have_libgcc_s"
-# Glibc stacktracer supports SFrame v2 or newer
-libc_cv_readelf_version_ok=yes
-# SFrame is supported from 2.41 or higher
-for ac_prog in $READELF
+enable_gsframe=no
+if test $use_sframe = yes; then
+ # SFrame requires to be explicit enabled by the architecture
+ if test -z $libc_cv_support_sframe; then
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error $? "the architecture doesn't support SFrame
+See 'config.log' for more details" "$LINENO" 5; }
+ fi
+
+ # SFrame requires binutils 2.45 or higher.
+ libc_cv_sframe_readelf_version=yes
+ for ac_prog in $READELF
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_prog_READELF_SFRAME+y}
+if test ${ac_cv_prog_READELF+y}
then :
printf %s "(cached) " >&6
else case e in #(
- e) if test -n "$READELF_SFRAME"; then
- ac_cv_prog_READELF_SFRAME="$READELF_SFRAME" # Let the user override the test.
+ e) if test -n "$READELF"; then
+ ac_cv_prog_READELF="$READELF" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
@@ -9383,7 +9394,7 @@ do
esac
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
- ac_cv_prog_READELF_SFRAME="$ac_prog"
+ ac_cv_prog_READELF="$ac_prog"
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -9394,29 +9405,29 @@ IFS=$as_save_IFS
fi ;;
esac
fi
-READELF_SFRAME=$ac_cv_prog_READELF_SFRAME
-if test -n "$READELF_SFRAME"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $READELF_SFRAME" >&5
-printf "%s\n" "$READELF_SFRAME" >&6; }
+READELF=$ac_cv_prog_READELF
+if test -n "$READELF"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
+printf "%s\n" "$READELF" >&6; }
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi
- test -n "$READELF_SFRAME" && break
+ test -n "$READELF" && break
done
-if test -z "$READELF_SFRAME"; then
+if test -z "$READELF"; then
ac_verc_fail=yes
else
# Found it, now check the version.
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking version of $READELF_SFRAME" >&5
-printf %s "checking version of $READELF_SFRAME... " >&6; }
- ac_prog_version=`$READELF_SFRAME --version 2>&1 | sed -n 's/^.*GNU readelf.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking version of $READELF" >&5
+printf %s "checking version of $READELF... " >&6; }
+ ac_prog_version=`$READELF --version 2>&1 | sed -n 's/^.*GNU readelf.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.4[1-9]*|2.[5-9][0-9]*|[3-9].*|[1-9][0-9][0-9]*)
+ 2.4[5-9]*|2.[5-9][0-9]*|2.[1-9][0-9][0-9]*|[3-9]*|[1-9][0-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
@@ -9425,12 +9436,17 @@ printf %s "checking version of $READELF_SFRAME... " >&6; }
printf "%s\n" "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
- libc_cv_readelf_version_ok=no
+ libc_cv_sframe_readelf_version=no
fi
+ if test $libc_cv_sframe_readelf_version = no; then
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error $? "binutils too old to enable SFrame
+See 'config.log' for more details" "$LINENO" 5; }
+ fi
-# Check the current toolchain for SFrame support
-if test $libc_cv_readelf_version_ok = yes; then
+ # Check if the current toolchain supports SFrame
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SFrame support" >&5
printf %s "checking for SFrame support... " >&6; }
if test ${libc_cv_default_sframe+y}
@@ -9443,32 +9459,32 @@ int test_function(void)
return 42;
}
EOF
- libc_cv_default_sframe=no
- if ${CC} -c conftest.c -o conftest.o -Wa,--gsframe >/dev/null 2>&1 && \
- # Check if .sframe section is present and if version > 1
- $READELF --sframe conftest.o | grep "SFRAME_VER" | grep -qv "VERSION_1"; then
- libc_cv_default_sframe=yes
- fi
- rm -f conftest.c conftest.o
+ libc_cv_default_sframe=no
+ if ${CC} -c conftest.c -o conftest.o -Wa,--gsframe >/dev/null 2>&1 && \
+ # Check if .sframe section is present and if version > 1
+ $READELF --sframe conftest.o | grep "SFRAME_VER" | grep -qv "VERSION_1"; then
+ libc_cv_default_sframe=yes
+ fi
+ rm -f conftest.c conftest.o
;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_default_sframe" >&5
printf "%s\n" "$libc_cv_default_sframe" >&6; }
-fi
-# Prevent enabling sframe on non-supporting toolchains
-enable_gsframe=no
-if test $use_sframe$libc_cv_default_sframe = yesyes || \
- test $use_sframe$libc_cv_default_sframe = notsetyes; then
- enable_gsframe=yes
-elif test $use_sframe = yes; then
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+ if test $libc_cv_default_sframe = no; then
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "toolchain doesn't support SFrame v2 or higher
See 'config.log' for more details" "$LINENO" 5; }
-fi
+ fi
+
+ enable_gsframe=yes
+ printf "%s\n" "#define ENABLE_SFRAME 1" >>confdefs.h
+fi
+config_vars="$config_vars
+enable-gsframe = $enable_gsframe"
# Set the `multidir' variable by grabbing the variable from the compiler.
# We do it once and save the result in a generated makefile.