This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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, i386] Remove EBX usage from asm code


Missed path in ChangeLog:

2014-12-28  Evgeny Stupachenko  <evstupac@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 <evstupac@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  <evstupac@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


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