This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] nptl: Add test for callee-saved register restore in pthread_exit
- From: Carlos O'Donell <carlos at redhat dot com>
- To: Florian Weimer <fweimer at redhat dot com>, libc-alpha at sourceware dot org
- Date: Fri, 5 Jan 2018 10:36:12 -0800
- Subject: Re: [PATCH] nptl: Add test for callee-saved register restore in pthread_exit
- Authentication-results: sourceware.org; auth=none
- References: <20171231192400.46AB7401BC22B@oldenburg.str.redhat.com>
On 12/31/2017 11:24 AM, Florian Weimer wrote:
> GCC PR 83641 results in a miscompilation of libpthread, which
> causes pthread_exit not to restore callee-saved registers before
> running destructors for objects on the stack. This test detects
> this situation:
>
> info: unsigned int, direct pthread_exit call
> tst-thread-exit-clobber.cc:80: numeric comparison failure
> left: 4148288912 (0xf741dd90); from: value
> right: 1600833940 (0x5f6ac994); from: magic_values.v2
> info: double, direct pthread_exit call
> info: unsigned int, indirect pthread_exit call
> info: double, indirect pthread_exit call
> error: 1 test failures
>
> 2017-12-31 Florian Weimer <fweimer@redhat.com>
>
> * nptl/tst-thread-exit-clobber.cc: New file.
> * nptl/Makefile (CFLAGS-tst-thread-exit-clobber.o): Compile in
> C++11 mode.
> (LDLIBS-tst-thread-exit-clobber): Link with libstdc++.
> (tests): Add tst-thread-exit-clobber.
> [!CXX] (tests-unsupported): Add tst-thread-exit-clobber.
>
OK, with comment expansion in the test case.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
> +/* These constants are magic values which are used to detect whether
> + registers have been clobbered. The idea is that these values are
> + hidden behind a compiler barrier and only present in .rodata
> + initially, so that it is less likely that they are in a register by
> + accident. */
This comment needs to be expanded to explain *how* the test detects the
registers have been clobbered.
--
Cheers,
Carlos.