This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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] |
2014-11-27 20:23 GMT+03:00 H.J. Lu <hjl.tools@gmail.com>: > We should also undef SETUP_PIC_REG_STR and > LOAD_PIC_REG_STR in sysdeps/i386/sysdep.h > for GCC 5, which are defined for C sources and will > be wrong for GCC 5. Fixed. ChangeLog 2014-11-27 Andrew Senkevich <andrew.n.senkevich@gmail.com> * sysdeps/i386/tls-macros.h (TLS_IE, TLS_LD, TLS_GD): Keep define in PIC mode only if gcc version < 5.0 * sysdeps/i386/sysdep.h (SETUP_PIC_REG_STR, LOAD_PIC_REG_STR): Keep define only if gcc version < 5.0 * sysdeps/unix/sysv/linux/i386/sysdep.h (check_consistency): Likewise. diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h index 217e746..5bebc13 100644 --- a/sysdeps/i386/sysdep.h +++ b/sysdeps/i386/sysdep.h @@ -146,22 +146,24 @@ GET_PC_THUNK(reg): \ #else /* __ASSEMBLER__ */ -# define SETUP_PIC_REG_STR(reg) \ - ".ifndef " GET_PC_THUNK_STR (reg) "\n" \ - ".section .gnu.linkonce.t." GET_PC_THUNK_STR (reg) ",\"ax\",@progbits\n" \ - ".globl " GET_PC_THUNK_STR (reg) "\n" \ - ".hidden " GET_PC_THUNK_STR (reg) "\n" \ - ".p2align 4\n" \ - ".type " GET_PC_THUNK_STR (reg) ",@function\n" \ +# if !__GNUC_PREREQ (5, 0) +# define SETUP_PIC_REG_STR(reg) \ + ".ifndef " GET_PC_THUNK_STR (reg) "\n" \ + ".section .gnu.linkonce.t." GET_PC_THUNK_STR (reg) ",\"ax\",@progbits\n" \ + ".globl " GET_PC_THUNK_STR (reg) "\n" \ + ".hidden " GET_PC_THUNK_STR (reg) "\n" \ + ".p2align 4\n" \ + ".type " GET_PC_THUNK_STR (reg) ",@function\n" \ GET_PC_THUNK_STR (reg) ":" \ - "movl (%%esp), %%e" #reg "\n" \ - "ret\n" \ - ".size " GET_PC_THUNK_STR (reg) ", . - " GET_PC_THUNK_STR (reg) "\n" \ - ".previous\n" \ - ".endif\n" \ - "call " GET_PC_THUNK_STR (reg) - -# define LOAD_PIC_REG_STR(reg) \ - SETUP_PIC_REG_STR (reg) "\naddl $_GLOBAL_OFFSET_TABLE_, %%e" #reg + "movl (%%esp), %%e" #reg "\n" \ + "ret\n" \ + ".size " GET_PC_THUNK_STR (reg) ", . - " GET_PC_THUNK_STR (reg) "\n" \ + ".previous\n" \ + ".endif\n" \ + "call " GET_PC_THUNK_STR (reg) + +# define LOAD_PIC_REG_STR(reg) \ + SETUP_PIC_REG_STR (reg) "\naddl $_GLOBAL_OFFSET_TABLE_, %%e" #reg +# endif #endif /* __ASSEMBLER__ */ diff --git a/sysdeps/i386/tls-macros.h b/sysdeps/i386/tls-macros.h index 0b85738..053cba0 100644 --- a/sysdeps/i386/tls-macros.h +++ b/sysdeps/i386/tls-macros.h @@ -1,3 +1,5 @@ +#include <features.h> /* For __GNUC_PREREQ. */ + #define TLS_LE(x) \ ({ int *__l; \ asm ("movl %%gs:0,%0\n\t" \ @@ -5,7 +7,7 @@ : "=r" (__l)); \ __l; }) -#ifdef PIC +#if defined PIC && !__GNUC_PREREQ (5,0) # define TLS_IE(x) \ ({ int *__l; \ asm ("movl %%gs:0,%0\n\t" \ @@ -27,7 +29,7 @@ __l; }) #endif -#ifdef PIC +#if defined PIC && !__GNUC_PREREQ (5,0) # define TLS_LD(x) \ ({ int *__l, __c, __d; \ asm ("leal " #x "@tlsldm(%%ebx),%%eax\n\t" \ @@ -51,7 +53,7 @@ __l; }) #endif -#ifdef PIC +#if defined PIC && !__GNUC_PREREQ (5,0) # define TLS_GD(x) \ ({ int *__l, __c, __d; \ asm ("leal " #x "@tlsgd(%%ebx),%%eax\n\t" \ diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index d751c58..b574418 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -502,7 +502,7 @@ asm (".L__X'%ebx = 1\n\t" #endif /* Consistency check for position-independent code. */ -#ifdef __PIC__ +#if defined __PIC__ && !__GNUC_PREREQ (5,0) # define check_consistency() \ ({ int __res; \ __asm__ __volatile__ \ -- WBR, Andrew
Attachment:
ebx_glibc_v2.patch
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |