* [PATCH roland/arm] Conditionalize test-xfail-tst-tlsalign{,-static} on ARM assembler bug.
@ 2015-06-26 20:29 Roland McGrath
2015-06-27 20:49 ` Joseph Myers
0 siblings, 1 reply; 3+ messages in thread
From: Roland McGrath @ 2015-06-26 20:29 UTC (permalink / raw)
To: GNU C. Library
With HJ's x86 fix, the only known failures for tst-tlsalign (18383)
are due to the ARM assembler bug, which is fixed in current binutils
trunk and 2.25 branch (but broken in all released versions).
This adds a configure check for the bug, and makes the tests XFAIL only if
the assembler bug is there.
Tested on arm-linux-gnueabihf that the configure check fails with
binutils-2.24 and that it (and the no-longer-XFAIL tests) succeed
with binutils-2_25-branch.
OK?
Thanks,
Roland
2015-06-26 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.
diff --git a/elf/Makefile b/elf/Makefile
index f21276c0..7fda056 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -524,10 +524,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
diff --git a/sysdeps/arm/configure b/sysdeps/arm/configure
index 52f2185..f789f61 100644
--- a/sysdeps/arm/configure
+++ b/sysdeps/arm/configure
@@ -260,6 +260,52 @@ if test $libc_cv_arm_pcrel_movw = yes; then
fi
+{ $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.
diff --git a/sysdeps/arm/configure.ac b/sysdeps/arm/configure.ac
index 168f2e7..d7b6a7a 100644
--- a/sysdeps/arm/configure.ac
+++ b/sysdeps/arm/configure.ac
@@ -79,6 +79,43 @@ if test $libc_cv_arm_pcrel_movw = yes; then
AC_DEFINE([ARM_PCREL_MOVW_OK])
fi
+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.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH roland/arm] Conditionalize test-xfail-tst-tlsalign{,-static} on ARM assembler bug.
2015-06-26 20:29 [PATCH roland/arm] Conditionalize test-xfail-tst-tlsalign{,-static} on ARM assembler bug Roland McGrath
@ 2015-06-27 20:49 ` Joseph Myers
2015-07-08 22:03 ` Roland McGrath
0 siblings, 1 reply; 3+ messages in thread
From: Joseph Myers @ 2015-06-27 20:49 UTC (permalink / raw)
To: Roland McGrath; +Cc: GNU C. Library
On Fri, 26 Jun 2015, Roland McGrath wrote:
> diff --git a/sysdeps/arm/configure.ac b/sysdeps/arm/configure.ac
> index 168f2e7..d7b6a7a 100644
> --- a/sysdeps/arm/configure.ac
> +++ b/sysdeps/arm/configure.ac
> @@ -79,6 +79,43 @@ if test $libc_cv_arm_pcrel_movw = yes; then
> AC_DEFINE([ARM_PCREL_MOVW_OK])
> fi
>
> +AC_CACHE_CHECK([whether TPOFF relocs with addends are assembled correctly],
> + libc_cv_arm_tpoff_addend, [
This should have a comment referencing the binutils bug and the versions
in which it is fixed. OK with such a comment added. (I think the glibc
bug should be closed as fixed and listed as fixed in NEWS since the only
remaining cases are a problem in binutils not glibc.)
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH roland/arm] Conditionalize test-xfail-tst-tlsalign{,-static} on ARM assembler bug.
2015-06-27 20:49 ` Joseph Myers
@ 2015-07-08 22:03 ` Roland McGrath
0 siblings, 0 replies; 3+ messages in thread
From: Roland McGrath @ 2015-07-08 22:03 UTC (permalink / raw)
To: Joseph Myers; +Cc: GNU C. Library
> This should have a comment referencing the binutils bug and the versions
> in which it is fixed. OK with such a comment added.
Right. I'd intended to have such a comment, but forgot.
> (I think the glibc bug should be closed as fixed and listed as fixed in
> NEWS since the only remaining cases are a problem in binutils not glibc.)
Yes, I'd intended to do that on commit.
I've now committed it (unchanged from posting but for comment and NEWS) and
closed the bug.
Thanks,
Roland
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-07-08 22:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-26 20:29 [PATCH roland/arm] Conditionalize test-xfail-tst-tlsalign{,-static} on ARM assembler bug Roland McGrath
2015-06-27 20:49 ` Joseph Myers
2015-07-08 22:03 ` Roland McGrath
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).