This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: nptl/tst-thread-exit-clobber failure on armv7l-*-linux-gnueabihf
- From: Szabolcs Nagy <Szabolcs dot Nagy at arm dot com>
- To: Florian Weimer <fweimer at redhat dot com>, "libc-alpha at sourceware dot org" <libc-alpha at sourceware dot org>
- Cc: nd <nd at arm dot com>
- Date: Tue, 29 Jan 2019 12:52:09 +0000
- Subject: Re: nptl/tst-thread-exit-clobber failure on armv7l-*-linux-gnueabihf
- References: <87d0ogsjtu.fsf@oldenburg2.str.redhat.com>
On 28/01/2019 18:44, Florian Weimer wrote:
> The test fails because libstdc++ (probably the personality routine)
> clobbers the d8 VFP register, which is callee-saved.
>
> This bug goes away when I downgrade libstdc++ to the GCC 8 version, so I
> filed a GCC bug:
>
> <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89093>
>
> I don't plan to debug this further.
based on the discussion so far it seems a recent gcc register allocator
change makes the compiler prefer moving general regs to float regs
instead of spilling them to memory.
this should be of course fixed in the compiler/unwinder, but this
reminds me that arm lazy binding code will have issues if gcc starts
using fp regs more for spills:
the arm _dl_runtime_resolve code does not seem to preserve fp regs,
i'm not sure why that works, but we should look out for gcc-9 changes
that may start using fp regs in the arm dynamic linker.