mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
98ffc1bfeb
As discussed at the patch review meeting Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org> Reviewed-by: Simon Chopin <simon.chopin@canonical.com>
404 lines
13 KiB
Plaintext
Executable File
404 lines
13 KiB
Plaintext
Executable File
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
|
# Local configure fragment for sysdeps/aarch64.
|
|
|
|
# Static PIE is supported.
|
|
printf "%s\n" "#define SUPPORT_STATIC_PIE 1" >>confdefs.h
|
|
|
|
|
|
# We check to see if the compiler and flags are
|
|
# selecting the big endian ABI and if they are then
|
|
# we set libc_cv_aarch64_be to yes which causes
|
|
# HAVE_AARCH64_BE to be defined in config.h and
|
|
# in include/libc-symbols.h and thus available to
|
|
# shlib-versions to select the appropriate name for
|
|
# the dynamic linker via %ifdef.
|
|
|
|
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
|
|
printf %s "checking for egrep -e... " >&6; }
|
|
if test ${ac_cv_path_EGREP_TRADITIONAL+y}
|
|
then :
|
|
printf %s "(cached) " >&6
|
|
else case e in #(
|
|
e) if test -z "$EGREP_TRADITIONAL"; then
|
|
ac_path_EGREP_TRADITIONAL_found=false
|
|
# Loop through the user's path and test for each of PROGNAME-LIST
|
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
|
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
|
do
|
|
IFS=$as_save_IFS
|
|
case $as_dir in #(((
|
|
'') as_dir=./ ;;
|
|
*/) ;;
|
|
*) as_dir=$as_dir/ ;;
|
|
esac
|
|
for ac_prog in grep ggrep
|
|
do
|
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
|
ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
|
|
as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
|
|
# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
|
|
# Check for GNU $ac_path_EGREP_TRADITIONAL
|
|
case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
|
|
*GNU*)
|
|
ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
|
|
#(
|
|
*)
|
|
ac_count=0
|
|
printf %s 0123456789 >"conftest.in"
|
|
while :
|
|
do
|
|
cat "conftest.in" "conftest.in" >"conftest.tmp"
|
|
mv "conftest.tmp" "conftest.in"
|
|
cp "conftest.in" "conftest.nl"
|
|
printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
|
|
"$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
|
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
|
as_fn_arith $ac_count + 1 && ac_count=$as_val
|
|
if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
|
|
# Best one so far, save it but keep looking for a better one
|
|
ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
|
|
ac_path_EGREP_TRADITIONAL_max=$ac_count
|
|
fi
|
|
# 10*(2^10) chars as input seems more than enough
|
|
test $ac_count -gt 10 && break
|
|
done
|
|
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
|
esac
|
|
|
|
$ac_path_EGREP_TRADITIONAL_found && break 3
|
|
done
|
|
done
|
|
done
|
|
IFS=$as_save_IFS
|
|
if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
|
|
:
|
|
fi
|
|
else
|
|
ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
|
|
fi
|
|
|
|
if test "$ac_cv_path_EGREP_TRADITIONAL"
|
|
then :
|
|
ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
|
|
else case e in #(
|
|
e) if test -z "$EGREP_TRADITIONAL"; then
|
|
ac_path_EGREP_TRADITIONAL_found=false
|
|
# Loop through the user's path and test for each of PROGNAME-LIST
|
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
|
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
|
do
|
|
IFS=$as_save_IFS
|
|
case $as_dir in #(((
|
|
'') as_dir=./ ;;
|
|
*/) ;;
|
|
*) as_dir=$as_dir/ ;;
|
|
esac
|
|
for ac_prog in egrep
|
|
do
|
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
|
ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
|
|
as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
|
|
# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
|
|
# Check for GNU $ac_path_EGREP_TRADITIONAL
|
|
case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
|
|
*GNU*)
|
|
ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
|
|
#(
|
|
*)
|
|
ac_count=0
|
|
printf %s 0123456789 >"conftest.in"
|
|
while :
|
|
do
|
|
cat "conftest.in" "conftest.in" >"conftest.tmp"
|
|
mv "conftest.tmp" "conftest.in"
|
|
cp "conftest.in" "conftest.nl"
|
|
printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
|
|
"$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
|
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
|
as_fn_arith $ac_count + 1 && ac_count=$as_val
|
|
if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
|
|
# Best one so far, save it but keep looking for a better one
|
|
ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
|
|
ac_path_EGREP_TRADITIONAL_max=$ac_count
|
|
fi
|
|
# 10*(2^10) chars as input seems more than enough
|
|
test $ac_count -gt 10 && break
|
|
done
|
|
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
|
esac
|
|
|
|
$ac_path_EGREP_TRADITIONAL_found && break 3
|
|
done
|
|
done
|
|
done
|
|
IFS=$as_save_IFS
|
|
if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
|
|
as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
|
|
fi
|
|
else
|
|
ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
|
|
fi
|
|
;;
|
|
esac
|
|
fi ;;
|
|
esac
|
|
fi
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
|
|
printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
|
|
EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
|
|
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5
|
|
printf %s "checking for big endian... " >&6; }
|
|
if test ${libc_cv_aarch64_be+y}
|
|
then :
|
|
printf %s "(cached) " >&6
|
|
else case e in #(
|
|
e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
/* end confdefs.h. */
|
|
#ifdef __AARCH64EB__
|
|
yes
|
|
#endif
|
|
|
|
_ACEOF
|
|
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
|
$EGREP_TRADITIONAL "yes" >/dev/null 2>&1
|
|
then :
|
|
libc_cv_aarch64_be=yes
|
|
else case e in #(
|
|
e) libc_cv_aarch64_be=no ;;
|
|
esac
|
|
fi
|
|
rm -rf conftest*
|
|
;;
|
|
esac
|
|
fi
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_be" >&5
|
|
printf "%s\n" "$libc_cv_aarch64_be" >&6; }
|
|
if test $libc_cv_aarch64_be = yes; then
|
|
printf "%s\n" "#define HAVE_AARCH64_BE 1" >>confdefs.h
|
|
|
|
config_vars="$config_vars
|
|
default-abi = lp64_be"
|
|
else
|
|
config_vars="$config_vars
|
|
default-abi = lp64"
|
|
fi
|
|
|
|
# Only consider BTI supported if -mbranch-protection=bti is
|
|
# on by default in the compiler and the linker produces
|
|
# binaries with GNU property notes in PT_GNU_PROPERTY segment.
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BTI support" >&5
|
|
printf %s "checking for BTI support... " >&6; }
|
|
if test ${libc_cv_aarch64_bti+y}
|
|
then :
|
|
printf %s "(cached) " >&6
|
|
else case e in #(
|
|
e) cat > conftest.c <<EOF
|
|
void foo (void) { }
|
|
EOF
|
|
libc_cv_aarch64_bti=no
|
|
if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles $no_ssp -shared -fPIC -o conftest.so conftest.c'
|
|
{ { 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; }; } \
|
|
&& { ac_try='$READELF -lW conftest.so | grep -q GNU_PROPERTY'
|
|
{ { 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; }; } \
|
|
&& { ac_try='$READELF -nW conftest.so | grep -q "NT_GNU_PROPERTY_TYPE_0.*AArch64 feature:.* BTI"'
|
|
{ { 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
|
|
libc_cv_aarch64_bti=yes
|
|
fi
|
|
rm -rf conftest.* ;;
|
|
esac
|
|
fi
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_bti" >&5
|
|
printf "%s\n" "$libc_cv_aarch64_bti" >&6; }
|
|
config_vars="$config_vars
|
|
aarch64-bti = $libc_cv_aarch64_bti"
|
|
if test $libc_cv_aarch64_bti = yes; then
|
|
printf "%s\n" "#define HAVE_AARCH64_BTI 1" >>confdefs.h
|
|
|
|
fi
|
|
|
|
# Check if glibc is built with return address signing, i.e.
|
|
# if -mbranch-protection=pac-ret is on. We need this because
|
|
# pac-ret relies on unwinder support so it's not safe to use
|
|
# it in assembly code unconditionally, but there is no
|
|
# feature test macro for it in gcc.
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if pac-ret is enabled" >&5
|
|
printf %s "checking if pac-ret is enabled... " >&6; }
|
|
if test ${libc_cv_aarch64_pac_ret+y}
|
|
then :
|
|
printf %s "(cached) " >&6
|
|
else case e in #(
|
|
e) cat > conftest.c <<EOF
|
|
int bar (void);
|
|
int foo (void) { return bar () + 1; }
|
|
EOF
|
|
libc_cv_aarch64_pac_ret=no
|
|
if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -o conftest.s conftest.c'
|
|
{ { 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; }; } \
|
|
&& { ac_try='grep -q -E '\''(hint( | )+25|paciasp)'\'' conftest.s'
|
|
{ { 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
|
|
libc_cv_aarch64_pac_ret=yes
|
|
fi
|
|
rm -rf conftest.* ;;
|
|
esac
|
|
fi
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_pac_ret" >&5
|
|
printf "%s\n" "$libc_cv_aarch64_pac_ret" >&6; }
|
|
if test $libc_cv_aarch64_pac_ret = yes; then
|
|
printf "%s\n" "#define HAVE_AARCH64_PAC_RET 1" >>confdefs.h
|
|
|
|
fi
|
|
|
|
# Check if binutils supports variant PCS symbols.
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for variant PCS support" >&5
|
|
printf %s "checking for variant PCS support... " >&6; }
|
|
if test ${libc_cv_aarch64_variant_pcs+y}
|
|
then :
|
|
printf %s "(cached) " >&6
|
|
else case e in #(
|
|
e) cat > conftest.S <<EOF
|
|
.global foo
|
|
.type foo, %function
|
|
.variant_pcs foo
|
|
foo:
|
|
ret
|
|
.global bar
|
|
.type bar, %function
|
|
bar:
|
|
b foo
|
|
EOF
|
|
libc_cv_aarch64_variant_pcs=no
|
|
if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles $no_ssp -shared -fPIC -o conftest.so conftest.S'
|
|
{ { 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; }; } \
|
|
&& { ac_try='$READELF -dW conftest.so | grep -q AARCH64_VARIANT_PCS'
|
|
{ { 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
|
|
libc_cv_aarch64_variant_pcs=yes
|
|
fi
|
|
rm -rf conftest.* ;;
|
|
esac
|
|
fi
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_variant_pcs" >&5
|
|
printf "%s\n" "$libc_cv_aarch64_variant_pcs" >&6; }
|
|
config_vars="$config_vars
|
|
aarch64-variant-pcs = $libc_cv_aarch64_variant_pcs"
|
|
|
|
# Check if asm support armv8.2-a+sve
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SVE support in assembler" >&5
|
|
printf %s "checking for SVE support in assembler... " >&6; }
|
|
if test ${libc_cv_aarch64_sve_asm+y}
|
|
then :
|
|
printf %s "(cached) " >&6
|
|
else case e in #(
|
|
e) cat > conftest.s <<\EOF
|
|
.arch armv8.2-a+sve
|
|
ptrue p0.b
|
|
EOF
|
|
if { ac_try='${CC-cc} -c conftest.s 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
|
|
libc_cv_aarch64_sve_asm=yes
|
|
else
|
|
libc_cv_aarch64_sve_asm=no
|
|
fi
|
|
rm -f conftest* ;;
|
|
esac
|
|
fi
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_sve_asm" >&5
|
|
printf "%s\n" "$libc_cv_aarch64_sve_asm" >&6; }
|
|
if test $libc_cv_aarch64_sve_asm = yes; then
|
|
printf "%s\n" "#define HAVE_AARCH64_SVE_ASM 1" >>confdefs.h
|
|
|
|
fi
|
|
|
|
if test x"$build_mathvec" = xnotset; then
|
|
build_mathvec=yes
|
|
fi
|
|
|
|
# Check if compiler supports SVE ACLE.
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for availability of SVE ACLE" >&5
|
|
printf %s "checking for availability of SVE ACLE... " >&6; }
|
|
if test ${libc_cv_aarch64_sve_acle+y}
|
|
then :
|
|
printf %s "(cached) " >&6
|
|
else case e in #(
|
|
e) cat > conftest.c <<EOF
|
|
#include <arm_sve.h>
|
|
EOF
|
|
if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fsyntax-only -ffreestanding conftest.c'
|
|
{ { 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
|
|
libc_cv_aarch64_sve_acle=yes
|
|
else
|
|
libc_cv_aarch64_sve_acle=no
|
|
fi
|
|
rm conftest.c ;;
|
|
esac
|
|
fi
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_sve_acle" >&5
|
|
printf "%s\n" "$libc_cv_aarch64_sve_acle" >&6; }
|
|
|
|
# Check if compiler is sufficient to build mathvec
|
|
if test $build_mathvec = yes; then
|
|
fail=no
|
|
if test $libc_cv_aarch64_variant_pcs = no; then
|
|
fail=yes
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: mathvec is enabled but linker does not support variant PCS." >&5
|
|
printf "%s\n" "$as_me: WARNING: mathvec is enabled but linker does not support variant PCS." >&2;}
|
|
fi
|
|
if test $libc_cv_aarch64_sve_asm = no; then
|
|
fail=yes
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: mathvec is enabled but assembler does not support SVE." >&5
|
|
printf "%s\n" "$as_me: WARNING: mathvec is enabled but assembler does not support SVE." >&2;}
|
|
fi
|
|
if test $libc_cv_aarch64_sve_acle = no; then
|
|
fail=yes
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: mathvec is enabled but compiler does not have SVE ACLE." >&5
|
|
printf "%s\n" "$as_me: WARNING: mathvec is enabled but compiler does not have SVE ACLE." >&2;}
|
|
fi
|
|
if test $fail = yes; then
|
|
as_fn_error $? "use a compatible toolchain or configure with --disable-mathvec (this results in incomplete ABI)." "$LINENO" 5
|
|
fi
|
|
else
|
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: mathvec is disabled, this results in incomplete ABI." >&5
|
|
printf "%s\n" "$as_me: WARNING: mathvec is disabled, this results in incomplete ABI." >&2;}
|
|
fi
|
|
|