i386: Remove build support for GCC older than GCC 6

Since GCC 6.2 or later is required to build glibc, remove build support
for GCC older than GCC 6.

Testd with GCC 6.4 and GCC 9.3.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
This commit is contained in:
H.J. Lu 2020-04-07 06:44:37 -07:00
parent 10b2cdc3b3
commit 93a0959ef2
3 changed files with 4 additions and 52 deletions

View File

@ -18,8 +18,6 @@
#include <sysdeps/x86/sysdep.h> #include <sysdeps/x86/sysdep.h>
#include <features.h> /* For __GNUC_PREREQ. */
/* It is desirable that the names of PIC thunks match those used by /* It is desirable that the names of PIC thunks match those used by
GCC so that multiple copies are eliminated by the linker. Because GCC so that multiple copies are eliminated by the linker. Because
GCC 4.6 and earlier use __i686 in the names, it is necessary to GCC 4.6 and earlier use __i686 in the names, it is necessary to

View File

@ -1,5 +1,3 @@
#include <features.h> /* For __GNUC_PREREQ. */
#define TLS_LE(x) \ #define TLS_LE(x) \
({ int *__l; \ ({ int *__l; \
asm ("movl %%gs:0,%0\n\t" \ asm ("movl %%gs:0,%0\n\t" \
@ -7,14 +5,6 @@
: "=r" (__l)); \ : "=r" (__l)); \
__l; }) __l; })
#if defined PIC && !__GNUC_PREREQ (5,0)
# define TLS_IE(x) \
({ int *__l; \
asm ("movl %%gs:0,%0\n\t" \
"subl " #x "@gottpoff(%%ebx),%0" \
: "=r" (__l)); \
__l; })
#else
#define TLS_IE(x) \ #define TLS_IE(x) \
({ int *__l, __b; \ ({ int *__l, __b; \
asm ("call 1f\n\t" \ asm ("call 1f\n\t" \
@ -27,17 +17,7 @@
"subl " #x "@gottpoff(%%ebx),%0" \ "subl " #x "@gottpoff(%%ebx),%0" \
: "=r" (__l), "=&b" (__b)); \ : "=r" (__l), "=&b" (__b)); \
__l; }) __l; })
#endif
#if defined PIC && !__GNUC_PREREQ (5,0)
# define TLS_LD(x) \
({ int *__l, __c, __d; \
asm ("leal " #x "@tlsldm(%%ebx),%%eax\n\t" \
"call ___tls_get_addr@plt\n\t" \
"leal " #x "@dtpoff(%%eax), %%eax" \
: "=a" (__l), "=&c" (__c), "=&d" (__d)); \
__l; })
#else
#define TLS_LD(x) \ #define TLS_LD(x) \
({ int *__l, __b, __c, __d; \ ({ int *__l, __b, __c, __d; \
asm ("call 1f\n\t" \ asm ("call 1f\n\t" \
@ -51,17 +31,7 @@
"leal " #x "@dtpoff(%%eax), %%eax" \ "leal " #x "@dtpoff(%%eax), %%eax" \
: "=a" (__l), "=&b" (__b), "=&c" (__c), "=&d" (__d)); \ : "=a" (__l), "=&b" (__b), "=&c" (__c), "=&d" (__d)); \
__l; }) __l; })
#endif
#if defined PIC && !__GNUC_PREREQ (5,0)
# define TLS_GD(x) \
({ int *__l, __c, __d; \
asm ("leal " #x "@tlsgd(%%ebx),%%eax\n\t" \
"call ___tls_get_addr@plt\n\t" \
"nop" \
: "=a" (__l), "=&c" (__c), "=&d" (__d)); \
__l; })
#else
#define TLS_GD(x) \ #define TLS_GD(x) \
({ int *__l, __b, __c, __d; \ ({ int *__l, __b, __c, __d; \
asm ("call 1f\n\t" \ asm ("call 1f\n\t" \
@ -75,4 +45,3 @@
"nop" \ "nop" \
: "=a" (__l), "=&b" (__b), "=&c" (__c), "=&d" (__d)); \ : "=a" (__l), "=&b" (__b), "=&c" (__c), "=&d" (__d)); \
__l; }) __l; })
#endif

View File

@ -48,7 +48,7 @@
to compile glibc. Disable GCC 5 optimization when compiling for to compile glibc. Disable GCC 5 optimization when compiling for
profiling or when -fno-omit-frame-pointer is used since asm ("ebp") profiling or when -fno-omit-frame-pointer is used since asm ("ebp")
can't be used to put the 6th argument in %ebp for syscall. */ can't be used to put the 6th argument in %ebp for syscall. */
#if __GNUC_PREREQ (5,0) && !defined PROF && CAN_USE_REGISTER_ASM_EBP #if !defined PROF && CAN_USE_REGISTER_ASM_EBP
# define OPTIMIZE_FOR_GCC_5 # define OPTIMIZE_FOR_GCC_5
#endif #endif
@ -580,21 +580,6 @@ struct libc_do_syscall_args
# define EXTRAVAR_5 # define EXTRAVAR_5
#endif #endif
/* Consistency check for position-independent code. Disabled for GCC 5
and above since there is no fixed PIC register in GCC 5 and above. */
#if defined __PIC__ && !__GNUC_PREREQ (5,0)
# define check_consistency() \
({ int __res; \
__asm__ __volatile__ \
(LOAD_PIC_REG_STR (cx) ";" \
"subl %%ebx, %%ecx;" \
"je 1f;" \
"ud2;" \
"1:\n" \
: "=c" (__res)); \
__res; })
#endif
#endif /* __ASSEMBLER__ */ #endif /* __ASSEMBLER__ */