Missed path in ChangeLog: 2014-12-28 Evgeny Stupachenko <evstu...@gmail.com>
* config/i386/gnu-user.h (CRT_GET_RFIB_DATA): Remove EBX register usage. * config/i386/sysv4.h (CRT_GET_RFIB_DATA): Ditto. On Sun, Dec 28, 2014 at 7:46 PM, Evgeny Stupachenko <evstu...@gmail.com> 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. > > diff --git a/gcc/config/i386/gnu-user.h b/gcc/config/i386/gnu-user.h > index e1163c9..965673b 100644 > --- a/gcc/config/i386/gnu-user.h > +++ b/gcc/config/i386/gnu-user.h > @@ -131,13 +131,6 @@ along with GCC; see the file COPYING3. If not see > > /* Used by crtstuff.c to initialize the base of data-relative relocations. > These are GOT relative on x86, so return the pic register. */ > -#ifdef __PIC__ > -#define CRT_GET_RFIB_DATA(BASE) \ > - { \ > - register void *ebx_ __asm__("ebx"); \ > - BASE = ebx_; \ > - } > -#else > #define CRT_GET_RFIB_DATA(BASE) > \ > __asm__ ("call\t.LPR%=\n" \ > ".LPR%=:\n\t" \ > @@ -148,7 +141,6 @@ along with GCC; see the file COPYING3. If not see > "add{l}\t{$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \ > "|%0,_GLOBAL_OFFSET_TABLE_+(.-.LPR%=)}" \ > : "=d"(BASE)) > -#endif > > #ifdef TARGET_LIBC_PROVIDES_SSP > /* i386 glibc provides __stack_chk_guard in %gs:0x14. */ > diff --git a/gcc/config/i386/sysv4.h b/gcc/config/i386/sysv4.h > index 011b228..5167485 100644 > --- a/gcc/config/i386/sysv4.h > +++ b/gcc/config/i386/sysv4.h > @@ -52,13 +52,6 @@ along with GCC; see the file COPYING3. If not see > > /* Used by crtstuff.c to initialize the base of data-relative relocations. > These are GOT relative on x86, so return the pic register. */ > -#ifdef __PIC__ > -#define CRT_GET_RFIB_DATA(BASE) \ > - { \ > - register void *ebx_ __asm__("ebx"); \ > - BASE = ebx_; \ > - } > -#else > #define CRT_GET_RFIB_DATA(BASE) > \ > __asm__ ("call\t.LPR%=\n" \ > ".LPR%=:\n\t" \ > @@ -69,4 +62,3 @@ along with GCC; see the file COPYING3. If not see > "add{l}\t{$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \ > "|%0,_GLOBAL_OFFSET_TABLE_+(.-.LPR%=)}" \ > : "=d"(BASE)) > -#endif