diff options
author | Stefan Liebler <stli@linux.vnet.ibm.com> | 2017-01-17 08:54:58 +0100 |
---|---|---|
committer | Stefan Liebler <stli@linux.vnet.ibm.com> | 2017-01-17 08:54:58 +0100 |
commit | 570c443352023691f4f7c9ed40199f18c746568c (patch) | |
tree | 90d5ce413d18bbfdde1651e3fb92b3bf8f54fc85 /string | |
parent | b040e1b0842c35ab444e8502db6ae59389d1e3d5 (diff) | |
download | glibc-570c443352023691f4f7c9ed40199f18c746568c.zip glibc-570c443352023691f4f7c9ed40199f18c746568c.tar.gz glibc-570c443352023691f4f7c9ed40199f18c746568c.tar.bz2 |
S390: Fix FAIL in test string/tst-xbzero-opt [BZ #21006]
On s390x this test failed with:
FAIL: explicit clear/test: expected 0 got 1
In setup_explicit_clear, the buffer is filled with the test_pattern.
On s390x the memcpy in prepare_test_buffer is done by loading
r4 / r5 with the test_pattern and using store multiple instruction
to store r4 / r5 to buf.
If explicit_bzero is resolved in setup_explicit_clear, r4 / r5 is
stored to stack by _dl_runtime_resolve and the call to memmem in
count_test_patterns finds a hit of the test_pattern on the stack.
This patch resolves all symbols at program startup by linking with
-z now. This omits the call of _dl_runtime_resolve within
setup_explicit_clear and the test passes.
ChangeLog:
[BZ #21006]
* string/Makefile (LDFLAGS-tst-xbzero-opt): New variable.
Diffstat (limited to 'string')
-rw-r--r-- | string/Makefile | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/string/Makefile b/string/Makefile index 7b3afa0..901c4d4 100644 --- a/string/Makefile +++ b/string/Makefile @@ -74,6 +74,14 @@ CFLAGS-stratcliff.c = -fno-builtin CFLAGS-test-ffs.c = -fno-builtin CFLAGS-tst-inlcall.c = -fno-builtin CFLAGS-tst-xbzero-opt.c = -O3 +# BZ 21006: Resolve all functions but at least explicit_bzero at startup. +# Otherwise the test fails on s390x as the memcpy in prepare_test_buffer is +# done by loading r4 / r5 with the test_pattern and using store multiple +# instruction to store r4 / r5 to buf. If explicit_bzero would be resolved in +# setup_explicit_clear, r4 / r5 would be stored to stack by _dl_runtime_resolve +# and the call to memmem in count_test_patterns will find a hit of the +# test_pattern on the stack. +LDFLAGS-tst-xbzero-opt = -z now # Called during TLS initialization. CFLAGS-memcpy.c = $(no-stack-protector) |