This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH COMMITTED] Do not require memset elimination in explicit_bzero test


On 01/10/2017 09:22 AM, Stefan Liebler wrote:
On 12/30/2016 01:16 PM, Florian Weimer wrote:
On 12/21/2016 07:04 PM, Florian Weimer wrote:
On 12/20/2016 11:09 AM, Florian Weimer wrote:
Some targets fail to apply dead store elimination to the
memset call in setup_ordinary_clear.  Before this commit,
this causes the test case to fail.  Instead, the test case
now logs lack of memset elimination as an informational
message.

2016-12-20  Florian Weimer  <fweimer@redhat.com>

    Do not require memset elimination in explicit_bzero test.
    * string/tst-xbzero-opt.c (prepare_test_buffer): Force inlining.
    (enum test_expectation): Add NO_EXPECTATIONS.
    (subtests): NO_EXPECTATIONS for ordinary clear.
    (check_test_buffer): Handle NO_EXPECTATIONS.
    * string/Makefile (CFLAGS-tst-xbzero-opt.c): Compile with -O3.

Stefan, this test still fails for me on s390x:

PASS: no clear/prepare: expected 32 got 32
PASS: no clear/test: expected some got 32
PASS: ordinary clear/prepare: expected 32 got 32
INFO: ordinary clear/test: found 0 patterns (memset not eliminated)
PASS: explicit clear/prepare: expected 32 got 32
FAIL: explicit clear/test: expected 0 got 1

Do you have an idea what's going on there?

I filed bug 21006 and will add it as a release blocker.

Thanks,
Florian

Hi Florian,

the test is also failing on my system and I've had a look into it.

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.

The attached 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.

If this is okay, I'll commit this patch and clear this bug in the
release blockers list in the release-wiki.

Bye
Stefan

ChangeLog:

    [BZ #21006]
    * string/Makefile (LDFLAGS-tst-xbzero-opt): New variable.

PING


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]