Clean up the x86/x86_64 assembler. The motivator (other than reducing
confusion) was that asm.h incorrectly checked PIC rather than __PIC__.
Bug:
16823325
(cherry picked from commit
6b6364a7fc7c3ba37ee907776a29bdc8c9793db9)
Change-Id: I89ca57fa0eb34a36de6cb11ea85f71054fce709d
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
/*
__stack_chk_fail routine is runtime part of stack protector compiler
*/
#ifdef __i386__
-#ifdef __PIC__
extern void __stack_chk_fail();
-__attribute__ ((visibility ("hidden")))
-void __stack_chk_fail_local()
-{
+__LIBC_HIDDEN__ void __stack_chk_fail_local() {
__stack_chk_fail();
}
#endif
-#endif
ENTRY(setjmp)
PIC_PROLOGUE
pushl $0
-#ifdef PIC
call PIC_PLT(sigblock)
-#else
- call sigblock
-#endif
addl $4,%esp
PIC_EPILOGUE
movl 4(%esp),%edx
PIC_PROLOGUE
pushl 24(%edx)
-#ifdef PIC
call PIC_PLT(sigsetmask)
-#else
- call sigsetmask
-#endif
addl $4,%esp
PIC_EPILOGUE
PIC_PROLOGUE
pushl $0
-#ifdef PIC
call PIC_PLT(sigblock)
-#else
- call sigblock
-#endif
addl $4,%esp
PIC_EPILOGUE
PIC_PROLOGUE
pushl 24(%edx)
-#ifdef PIC
call PIC_PLT(sigsetmask)
-#else
- call sigsetmask
-#endif
addl $4,%esp
PIC_EPILOGUE
#ifndef _I386_ASM_H_
#define _I386_ASM_H_
-#ifdef PIC
#define PIC_PROLOGUE \
pushl %ebx; \
call 1f; \
#define PIC_PLT(x) x@PLT
#define PIC_GOT(x) x@GOT(%ebx)
#define PIC_GOTOFF(x) x@GOTOFF(%ebx)
-#else
-#define PIC_PROLOGUE
-#define PIC_EPILOGUE
-#define PIC_PLT(x) x
-#define PIC_GOT(x) x
-#define PIC_GOTOFF(x) x
-#endif
/* let kernels and others override entrypoint alignment */
#if !defined(_ALIGN_TEXT) && !defined(_KERNEL)
ENTRY(setjmp)
pushq %rdi
xorq %rdi,%rdi
-#ifdef __PIC__
call PIC_PLT(sigblock)
-#else
- call sigblock
-#endif
popq %rdi
movq %rax,(_JB_SIGMASK * 8)(%rdi)
movq (_JB_SIGMASK * 8)(%rdi),%rdi
pushq %r8
-#ifdef __PIC__
call PIC_PLT(sigsetmask)
-#else
- call sigsetmask
-#endif
popq %r8
movq (_JB_RBX * 8)(%r12),%rbx
movq (_JB_RBP * 8)(%r12),%rbp
pushq %rdi
xorq %rdi,%rdi
-#ifdef __PIC__
call PIC_PLT(sigblock)
-#else
- call sigblock
-#endif
popq %rdi
movq %rax,(_JB_SIGMASK * 8)(%rdi)
jz 2f
movq (_JB_SIGMASK * 8)(%rdi),%rdi
-#ifdef __PIC__
call PIC_PLT(sigsetmask)
-#else
- call sigsetmask
-#endif
2: popq %rax
movq (_JB_RBX * 8)(%r12),%rbx
movq (_JB_RBP * 8)(%r12),%rbp
#ifndef _AMD64_ASM_H_
#define _AMD64_ASM_H_
-#ifdef __PIC__
#define PIC_PLT(x) x@PLT
#define PIC_GOT(x) x@GOTPCREL(%rip)
-#else
-#define PIC_PLT(x) x
-#define PIC_GOT(x) x
-#endif
/* let kernels and others override entrypoint alignment */
#ifndef _ALIGN_TEXT