BZ#18383: Conditionalize test-xfail-tst-tlsalign{,-static} on ARM assembler bug.
This commit is contained in:
parent
85ee9a0d19
commit
95af4cffdb
|
@ -1,5 +1,12 @@
|
|||
2015-07-08 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
[BZ #18383]
|
||||
* sysdeps/arm/configure.ac (libc_cv_arm_tpoff_addend): New check.
|
||||
Emit test-xfail-tst-tlsalign{,-static}=yes if it fails.
|
||||
* sysdeps/arm/configure: Regenerated.
|
||||
* elf/Makefile (test-xfail-tst-tlsalign): Variable removed.
|
||||
(test-xfail-tst-tlsalign-static): Variable removed.
|
||||
|
||||
* Makerules (do-install-so): Use $(LN_S) rather than explicit 'ln -s'.
|
||||
* elf/Makefile ($(objpfx)$(rtld-installed-name)): Use $(make-link)
|
||||
rather than explicit 'ln -s'.
|
||||
|
|
14
NEWS
14
NEWS
|
@ -21,13 +21,13 @@ Version 2.22
|
|||
18049, 18068, 18080, 18093, 18100, 18104, 18110, 18111, 18116, 18125,
|
||||
18128, 18138, 18185, 18196, 18197, 18206, 18210, 18211, 18217, 18219,
|
||||
18220, 18221, 18234, 18244, 18245, 18247, 18287, 18319, 18324, 18333,
|
||||
18346, 18371, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18435,
|
||||
18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498,
|
||||
18502, 18507, 18508, 18512, 18513, 18519, 18520, 18522, 18527, 18528,
|
||||
18529, 18530, 18532, 18533, 18534, 18536, 18539, 18540, 18542, 18544,
|
||||
18545, 18546, 18547, 18549, 18553, 18557, 18558, 18569, 18583, 18585,
|
||||
18586, 18592, 18593, 18594, 18602, 18612, 18613, 18619, 18633, 18641.
|
||||
18643.
|
||||
18346, 18371, 18383, 18397, 18409, 18410, 18412, 18418, 18422, 18434,
|
||||
18435, 18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497,
|
||||
18498, 18502, 18507, 18508, 18512, 18513, 18519, 18520, 18522, 18527,
|
||||
18528, 18529, 18530, 18532, 18533, 18534, 18536, 18539, 18540, 18542,
|
||||
18544, 18545, 18546, 18547, 18549, 18553, 18557, 18558, 18569, 18583,
|
||||
18585, 18586, 18592, 18593, 18594, 18602, 18612, 18613, 18619, 18633,
|
||||
18641, 18643.
|
||||
|
||||
* Cache information can be queried via sysconf() function on s390 e.g. with
|
||||
_SC_LEVEL1_ICACHE_SIZE as argument.
|
||||
|
|
|
@ -525,10 +525,6 @@ $(objpfx)tst-initorder: $(objpfx)tst-initordera4.so $(objpfx)tst-initordera1.so
|
|||
$(objpfx)tst-null-argv: $(objpfx)tst-null-argv-lib.so
|
||||
$(objpfx)tst-tlsalign: $(objpfx)tst-tlsalign-lib.so
|
||||
|
||||
# BZ#18383: broken on at least ARM (both).
|
||||
test-xfail-tst-tlsalign = yes
|
||||
test-xfail-tst-tlsalign-static = yes
|
||||
|
||||
$(objpfx)tst-tlsalign-extern: $(objpfx)tst-tlsalign-vars.o
|
||||
$(objpfx)tst-tlsalign-extern-static: $(objpfx)tst-tlsalign-vars.o
|
||||
|
||||
|
|
49
sysdeps/arm/configure
vendored
49
sysdeps/arm/configure
vendored
|
@ -260,6 +260,55 @@ if test $libc_cv_arm_pcrel_movw = yes; then
|
|||
|
||||
fi
|
||||
|
||||
# This was buggy in assemblers from GNU binutils versions before 2.25.1
|
||||
# (it's known to be broken in 2.24 and 2.25; see
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=18383).
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether TPOFF relocs with addends are assembled correctly" >&5
|
||||
$as_echo_n "checking whether TPOFF relocs with addends are assembled correctly... " >&6; }
|
||||
if ${libc_cv_arm_tpoff_addend+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
|
||||
cat > conftest.s <<\EOF
|
||||
.syntax unified
|
||||
.arm
|
||||
.arch armv7-a
|
||||
|
||||
.text
|
||||
foo:
|
||||
.word tbase(tpoff)+4
|
||||
|
||||
.section .tdata,"awT",%progbits
|
||||
.word -4
|
||||
tbase: .word 0
|
||||
.word 4
|
||||
EOF
|
||||
libc_cv_arm_tpoff_addend=no
|
||||
${CC-cc} -c $CFLAGS $CPPFLAGS \
|
||||
-o conftest.o conftest.s 1>&5 2>&5 &&
|
||||
LC_ALL=C $READELF -x.text conftest.o > conftest.x 2>&5 &&
|
||||
{
|
||||
cat conftest.x 1>&5
|
||||
$AWK 'BEGIN { result = 2 }
|
||||
$1 ~ /0x0+/ && $2 ~ /[0-9a-f]+/ {
|
||||
# Check for little-endian or big-endian encoding of 4 in the in-place addend.
|
||||
result = ($2 == "04000000" || $2 == "00000004") ? 0 : 1
|
||||
}
|
||||
END { exit(result) }
|
||||
' conftest.x 2>&5 && libc_cv_arm_tpoff_addend=yes
|
||||
}
|
||||
rm -f conftest*
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arm_tpoff_addend" >&5
|
||||
$as_echo "$libc_cv_arm_tpoff_addend" >&6; }
|
||||
if test $libc_cv_arm_tpoff_addend = no; then
|
||||
config_vars="$config_vars
|
||||
test-xfail-tst-tlsalign = yes"
|
||||
config_vars="$config_vars
|
||||
test-xfail-tst-tlsalign-static = yes"
|
||||
fi
|
||||
|
||||
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
|
||||
# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac.
|
||||
|
|
|
@ -79,6 +79,46 @@ if test $libc_cv_arm_pcrel_movw = yes; then
|
|||
AC_DEFINE([ARM_PCREL_MOVW_OK])
|
||||
fi
|
||||
|
||||
# This was buggy in assemblers from GNU binutils versions before 2.25.1
|
||||
# (it's known to be broken in 2.24 and 2.25; see
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=18383).
|
||||
AC_CACHE_CHECK([whether TPOFF relocs with addends are assembled correctly],
|
||||
libc_cv_arm_tpoff_addend, [
|
||||
cat > conftest.s <<\EOF
|
||||
.syntax unified
|
||||
.arm
|
||||
.arch armv7-a
|
||||
|
||||
.text
|
||||
foo:
|
||||
.word tbase(tpoff)+4
|
||||
|
||||
.section .tdata,"awT",%progbits
|
||||
.word -4
|
||||
tbase: .word 0
|
||||
.word 4
|
||||
EOF
|
||||
libc_cv_arm_tpoff_addend=no
|
||||
${CC-cc} -c $CFLAGS $CPPFLAGS \
|
||||
-o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD &&
|
||||
LC_ALL=C $READELF -x.text conftest.o > conftest.x 2>&AS_MESSAGE_LOG_FD &&
|
||||
{
|
||||
cat conftest.x 1>&AS_MESSAGE_LOG_FD
|
||||
$AWK 'BEGIN { result = 2 }
|
||||
$1 ~ /0x0+/ && $2 ~ /[[0-9a-f]]+/ {
|
||||
# Check for little-endian or big-endian encoding of 4 in the in-place addend.
|
||||
result = ($2 == "04000000" || $2 == "00000004") ? 0 : 1
|
||||
}
|
||||
END { exit(result) }
|
||||
' conftest.x 2>&AS_MESSAGE_LOG_FD && libc_cv_arm_tpoff_addend=yes
|
||||
}
|
||||
rm -f conftest*])
|
||||
if test $libc_cv_arm_tpoff_addend = no; then
|
||||
LIBC_CONFIG_VAR([test-xfail-tst-tlsalign], [yes])
|
||||
LIBC_CONFIG_VAR([test-xfail-tst-tlsalign-static], [yes])
|
||||
fi
|
||||
|
||||
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
|
||||
# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac.
|
||||
|
|
Loading…
Reference in a new issue