On 12/28/14 09:46, Evgeny Stupachenko wrote:
Hi,

The patch removes EBX usage from asm code used in libgcc/crtstuff.c
It is safe now, but potentially buggy when glibc is rebuild with GCC
5.0 as EBX is not GOT register any more.

x86 bootstrap, make check passed.

Is it ok?

Evgeny

2014-12-28  Evgeny Stupachenko  <evstu...@gmail.com>

         * gnu-user.h (CRT_GET_RFIB_DATA): Remove EBX register usage.
         * config/i386/sysv4.h (CRT_GET_RFIB_DATA): Ditto.
I don't understand the glibc reference above.

Ultimately what matters here, AFAICT is the value assigned to the parameter to CRT_GET_RFIB_DATA which should be the base of the data relative relocations. So the comment "It is safe now" seems wrong as well.

ISTM this is a critical fix as it would be possible for the PIC pseudo to be assigned to something other than %ebx when compiling libgcc/crtstuff.c. And if that happens, we'll pass in a junk value to register_frame_info_bases.

Evgeny, can you clarify why you think things are safe now, but would not be safe if glibc were to be built with the current GCC trunk?

Jeff

Reply via email to