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.
This commit is contained in:
parent
b040e1b084
commit
570c443352
@ -1,3 +1,8 @@
|
||||
2017-01-17 Stefan Liebler <stli@linux.vnet.ibm.com>
|
||||
|
||||
[BZ #21006]
|
||||
* string/Makefile (LDFLAGS-tst-xbzero-opt): New variable.
|
||||
|
||||
2017-01-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #21045]
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user