OSDN Git Service

Android is all-PIC/PIE.
authorElliott Hughes <enh@google.com>
Thu, 7 Aug 2014 17:51:32 +0000 (10:51 -0700)
committerElliott Hughes <enh@google.com>
Thu, 7 Aug 2014 18:28:34 +0000 (11:28 -0700)
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
libc/arch-x86/bionic/setjmp.S
libc/arch-x86/bionic/sigsetjmp.S
libc/arch-x86/include/machine/asm.h
libc/arch-x86_64/bionic/setjmp.S
libc/arch-x86_64/bionic/sigsetjmp.S
libc/arch-x86_64/include/machine/asm.h

index 4f3699a..0b0fd7f 100644 (file)
@@ -26,6 +26,7 @@
  * 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
index 5b94311..8f9d67c 100644 (file)
 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
 
index 7ef732e..250c606 100644 (file)
@@ -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
 
index 913e6c8..bf77525 100644 (file)
@@ -37,7 +37,6 @@
 #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)
index c81b573..f356877 100644 (file)
 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
index 718743f..571fea3 100644 (file)
@@ -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
index 0af6dae..06da39a 100644 (file)
 #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