From 43227c0b400a33dc9722269beda26313c391fb1e Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 7 Aug 2014 10:51:32 -0700 Subject: [PATCH] Android is all-PIC/PIE. 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 --- libc/arch-x86/bionic/__stack_chk_fail_local.h | 7 ++----- libc/arch-x86/bionic/setjmp.S | 8 -------- libc/arch-x86/bionic/sigsetjmp.S | 8 -------- libc/arch-x86/include/machine/asm.h | 8 -------- libc/arch-x86_64/bionic/setjmp.S | 8 -------- libc/arch-x86_64/bionic/sigsetjmp.S | 8 -------- libc/arch-x86_64/include/machine/asm.h | 5 ----- 7 files changed, 2 insertions(+), 50 deletions(-) diff --git a/libc/arch-x86/bionic/__stack_chk_fail_local.h b/libc/arch-x86/bionic/__stack_chk_fail_local.h index 4f3699a35..0b0fd7f8b 100644 --- a/libc/arch-x86/bionic/__stack_chk_fail_local.h +++ b/libc/arch-x86/bionic/__stack_chk_fail_local.h @@ -26,6 +26,7 @@ * SUCH DAMAGE. */ +#include /* __stack_chk_fail routine is runtime part of stack protector compiler @@ -48,13 +49,9 @@ */ #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 diff --git a/libc/arch-x86/bionic/setjmp.S b/libc/arch-x86/bionic/setjmp.S index 5b943118c..8f9d67c23 100644 --- a/libc/arch-x86/bionic/setjmp.S +++ b/libc/arch-x86/bionic/setjmp.S @@ -46,11 +46,7 @@ ENTRY(setjmp) PIC_PROLOGUE pushl $0 -#ifdef PIC call PIC_PLT(sigblock) -#else - call sigblock -#endif addl $4,%esp PIC_EPILOGUE @@ -71,11 +67,7 @@ ENTRY(longjmp) movl 4(%esp),%edx PIC_PROLOGUE pushl 24(%edx) -#ifdef PIC call PIC_PLT(sigsetmask) -#else - call sigsetmask -#endif addl $4,%esp PIC_EPILOGUE diff --git a/libc/arch-x86/bionic/sigsetjmp.S b/libc/arch-x86/bionic/sigsetjmp.S index 7ef732ef2..250c606d7 100644 --- a/libc/arch-x86/bionic/sigsetjmp.S +++ b/libc/arch-x86/bionic/sigsetjmp.S @@ -42,11 +42,7 @@ ENTRY(sigsetjmp) PIC_PROLOGUE pushl $0 -#ifdef PIC call PIC_PLT(sigblock) -#else - call sigblock -#endif addl $4,%esp PIC_EPILOGUE @@ -70,11 +66,7 @@ ENTRY(siglongjmp) PIC_PROLOGUE pushl 24(%edx) -#ifdef PIC call PIC_PLT(sigsetmask) -#else - call sigsetmask -#endif addl $4,%esp PIC_EPILOGUE diff --git a/libc/arch-x86/include/machine/asm.h b/libc/arch-x86/include/machine/asm.h index 913e6c840..bf77525ee 100644 --- a/libc/arch-x86/include/machine/asm.h +++ b/libc/arch-x86/include/machine/asm.h @@ -37,7 +37,6 @@ #ifndef _I386_ASM_H_ #define _I386_ASM_H_ -#ifdef PIC #define PIC_PROLOGUE \ pushl %ebx; \ call 1f; \ @@ -49,13 +48,6 @@ #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) diff --git a/libc/arch-x86_64/bionic/setjmp.S b/libc/arch-x86_64/bionic/setjmp.S index c81b5734c..f356877dd 100644 --- a/libc/arch-x86_64/bionic/setjmp.S +++ b/libc/arch-x86_64/bionic/setjmp.S @@ -52,11 +52,7 @@ 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) @@ -80,11 +76,7 @@ ENTRY(longjmp) 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 diff --git a/libc/arch-x86_64/bionic/sigsetjmp.S b/libc/arch-x86_64/bionic/sigsetjmp.S index 718743f94..571fea3f8 100644 --- a/libc/arch-x86_64/bionic/sigsetjmp.S +++ b/libc/arch-x86_64/bionic/sigsetjmp.S @@ -57,11 +57,7 @@ ENTRY(sigsetjmp) pushq %rdi xorq %rdi,%rdi -#ifdef __PIC__ call PIC_PLT(sigblock) -#else - call sigblock -#endif popq %rdi movq %rax,(_JB_SIGMASK * 8)(%rdi) @@ -86,11 +82,7 @@ ENTRY(siglongjmp) 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 diff --git a/libc/arch-x86_64/include/machine/asm.h b/libc/arch-x86_64/include/machine/asm.h index 0af6dae46..06da39aae 100644 --- a/libc/arch-x86_64/include/machine/asm.h +++ b/libc/arch-x86_64/include/machine/asm.h @@ -37,13 +37,8 @@ #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 -- 2.11.0