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 /* 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__ \