mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-15 12:33:30 +08:00
Use macro for PIC setup in inline asm.
This commit is contained in:
parent
b1da7dd99d
commit
d8e0ca509a
@ -1,3 +1,10 @@
|
||||
2012-02-05 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/i386/sysdep.h (SETUP_PIC_REG_STR, LOAD_PIC_REG_STR):
|
||||
Define.
|
||||
* sysdeps/unix/sysv/linux/i386/sysdep.h (check_consistency): Use
|
||||
LOAD_PIC_REG_STR.
|
||||
|
||||
2012-02-03 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/i386/sysdep.h (GET_PC_THUNK, GET_PC_THUNK_STR): Define.
|
||||
|
@ -156,4 +156,24 @@ GET_PC_THUNK(reg): \
|
||||
|
||||
#define atom_text_section .section ".text.atom", "ax"
|
||||
|
||||
#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" \
|
||||
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
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
@ -514,20 +514,11 @@ asm (".L__X'%ebx = 1\n\t"
|
||||
# define check_consistency() \
|
||||
({ int __res; \
|
||||
__asm__ __volatile__ \
|
||||
("call "GET_PC_THUNK_STR(cx)";" \
|
||||
"addl $_GLOBAL_OFFSET_TABLE_, %%ecx;" \
|
||||
(LOAD_PIC_REG_STR (cx) ";" \
|
||||
"subl %%ebx, %%ecx;" \
|
||||
"je 1f;" \
|
||||
"ud2;" \
|
||||
"1:\n" \
|
||||
".section .gnu.linkonce.t."GET_PC_THUNK_STR(cx)",\"ax\",@progbits;" \
|
||||
".globl "GET_PC_THUNK_STR(cx)";" \
|
||||
".hidden "GET_PC_THUNK_STR(cx)";" \
|
||||
".type "GET_PC_THUNK_STR(cx)",@function;" \
|
||||
GET_PC_THUNK_STR(cx)":" \
|
||||
"movl (%%esp), %%ecx;" \
|
||||
"ret;" \
|
||||
".previous" \
|
||||
: "=c" (__res)); \
|
||||
__res; })
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user