am d994622e: Merge "Android is all-PIC/PIE."
				
					
				
			* commit 'd994622ebf2c4b7e918d9e1f1840f9df88ee7222': Android is all-PIC/PIE.
This commit is contained in:
		@@ -26,6 +26,7 @@
 | 
				
			|||||||
 * SUCH DAMAGE.
 | 
					 * SUCH DAMAGE.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <sys/cdefs.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
   __stack_chk_fail routine is runtime part of stack protector compiler
 | 
					   __stack_chk_fail routine is runtime part of stack protector compiler
 | 
				
			||||||
@@ -48,13 +49,9 @@
 | 
				
			|||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __i386__
 | 
					#ifdef __i386__
 | 
				
			||||||
#ifdef __PIC__
 | 
					 | 
				
			||||||
extern void __stack_chk_fail();
 | 
					extern void __stack_chk_fail();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__ ((visibility ("hidden")))
 | 
					__LIBC_HIDDEN__ void __stack_chk_fail_local() {
 | 
				
			||||||
void __stack_chk_fail_local()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  __stack_chk_fail();
 | 
					  __stack_chk_fail();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,11 +46,7 @@
 | 
				
			|||||||
ENTRY(setjmp)
 | 
					ENTRY(setjmp)
 | 
				
			||||||
	PIC_PROLOGUE
 | 
						PIC_PROLOGUE
 | 
				
			||||||
	pushl	$0
 | 
						pushl	$0
 | 
				
			||||||
#ifdef PIC
 | 
					 | 
				
			||||||
	call	PIC_PLT(sigblock)
 | 
						call	PIC_PLT(sigblock)
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	call	sigblock
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	addl	$4,%esp
 | 
						addl	$4,%esp
 | 
				
			||||||
	PIC_EPILOGUE
 | 
						PIC_EPILOGUE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -71,11 +67,7 @@ ENTRY(longjmp)
 | 
				
			|||||||
	movl	4(%esp),%edx
 | 
						movl	4(%esp),%edx
 | 
				
			||||||
	PIC_PROLOGUE
 | 
						PIC_PROLOGUE
 | 
				
			||||||
	pushl	24(%edx)
 | 
						pushl	24(%edx)
 | 
				
			||||||
#ifdef PIC
 | 
					 | 
				
			||||||
	call	PIC_PLT(sigsetmask)
 | 
						call	PIC_PLT(sigsetmask)
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	call	sigsetmask
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	addl	$4,%esp
 | 
						addl	$4,%esp
 | 
				
			||||||
	PIC_EPILOGUE
 | 
						PIC_EPILOGUE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,11 +42,7 @@ ENTRY(sigsetjmp)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	PIC_PROLOGUE
 | 
						PIC_PROLOGUE
 | 
				
			||||||
	pushl	$0
 | 
						pushl	$0
 | 
				
			||||||
#ifdef PIC
 | 
					 | 
				
			||||||
	call	PIC_PLT(sigblock)
 | 
						call	PIC_PLT(sigblock)
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	call	sigblock
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	addl	$4,%esp
 | 
						addl	$4,%esp
 | 
				
			||||||
	PIC_EPILOGUE
 | 
						PIC_EPILOGUE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -70,11 +66,7 @@ ENTRY(siglongjmp)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	PIC_PROLOGUE
 | 
						PIC_PROLOGUE
 | 
				
			||||||
	pushl	24(%edx)
 | 
						pushl	24(%edx)
 | 
				
			||||||
#ifdef PIC
 | 
					 | 
				
			||||||
	call	PIC_PLT(sigsetmask)
 | 
						call	PIC_PLT(sigsetmask)
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	call	sigsetmask
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	addl	$4,%esp
 | 
						addl	$4,%esp
 | 
				
			||||||
	PIC_EPILOGUE
 | 
						PIC_EPILOGUE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,6 @@
 | 
				
			|||||||
#ifndef _I386_ASM_H_
 | 
					#ifndef _I386_ASM_H_
 | 
				
			||||||
#define _I386_ASM_H_
 | 
					#define _I386_ASM_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PIC
 | 
					 | 
				
			||||||
#define PIC_PROLOGUE	\
 | 
					#define PIC_PROLOGUE	\
 | 
				
			||||||
	pushl	%ebx;	\
 | 
						pushl	%ebx;	\
 | 
				
			||||||
	call	1f;	\
 | 
						call	1f;	\
 | 
				
			||||||
@@ -49,13 +48,6 @@
 | 
				
			|||||||
#define PIC_PLT(x)	x@PLT
 | 
					#define PIC_PLT(x)	x@PLT
 | 
				
			||||||
#define PIC_GOT(x)	x@GOT(%ebx)
 | 
					#define PIC_GOT(x)	x@GOT(%ebx)
 | 
				
			||||||
#define PIC_GOTOFF(x)	x@GOTOFF(%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 */
 | 
					/* let kernels and others override entrypoint alignment */
 | 
				
			||||||
#if !defined(_ALIGN_TEXT) && !defined(_KERNEL)
 | 
					#if !defined(_ALIGN_TEXT) && !defined(_KERNEL)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,11 +52,7 @@
 | 
				
			|||||||
ENTRY(setjmp)
 | 
					ENTRY(setjmp)
 | 
				
			||||||
	pushq	%rdi
 | 
						pushq	%rdi
 | 
				
			||||||
	xorq	%rdi,%rdi
 | 
						xorq	%rdi,%rdi
 | 
				
			||||||
#ifdef __PIC__
 | 
					 | 
				
			||||||
	call	PIC_PLT(sigblock)
 | 
						call	PIC_PLT(sigblock)
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	call	sigblock
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	popq	%rdi
 | 
						popq	%rdi
 | 
				
			||||||
	movq	%rax,(_JB_SIGMASK * 8)(%rdi)
 | 
						movq	%rax,(_JB_SIGMASK * 8)(%rdi)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -80,11 +76,7 @@ ENTRY(longjmp)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	movq	(_JB_SIGMASK * 8)(%rdi),%rdi
 | 
						movq	(_JB_SIGMASK * 8)(%rdi),%rdi
 | 
				
			||||||
	pushq	%r8
 | 
						pushq	%r8
 | 
				
			||||||
#ifdef __PIC__
 | 
					 | 
				
			||||||
	call	PIC_PLT(sigsetmask)
 | 
						call	PIC_PLT(sigsetmask)
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	call	sigsetmask
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	popq	%r8
 | 
						popq	%r8
 | 
				
			||||||
	movq	(_JB_RBX * 8)(%r12),%rbx
 | 
						movq	(_JB_RBX * 8)(%r12),%rbx
 | 
				
			||||||
	movq	(_JB_RBP * 8)(%r12),%rbp
 | 
						movq	(_JB_RBP * 8)(%r12),%rbp
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,11 +57,7 @@ ENTRY(sigsetjmp)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	pushq	%rdi
 | 
						pushq	%rdi
 | 
				
			||||||
	xorq	%rdi,%rdi
 | 
						xorq	%rdi,%rdi
 | 
				
			||||||
#ifdef __PIC__
 | 
					 | 
				
			||||||
	call	PIC_PLT(sigblock)
 | 
						call	PIC_PLT(sigblock)
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	call	sigblock
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	popq	%rdi
 | 
						popq	%rdi
 | 
				
			||||||
	movq	%rax,(_JB_SIGMASK * 8)(%rdi)
 | 
						movq	%rax,(_JB_SIGMASK * 8)(%rdi)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -86,11 +82,7 @@ ENTRY(siglongjmp)
 | 
				
			|||||||
	jz      2f
 | 
						jz      2f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	movq	(_JB_SIGMASK * 8)(%rdi),%rdi
 | 
						movq	(_JB_SIGMASK * 8)(%rdi),%rdi
 | 
				
			||||||
#ifdef __PIC__
 | 
					 | 
				
			||||||
	call	PIC_PLT(sigsetmask)
 | 
						call	PIC_PLT(sigsetmask)
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	call	sigsetmask
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
2:	popq	%rax
 | 
					2:	popq	%rax
 | 
				
			||||||
	movq	(_JB_RBX * 8)(%r12),%rbx
 | 
						movq	(_JB_RBX * 8)(%r12),%rbx
 | 
				
			||||||
	movq	(_JB_RBP * 8)(%r12),%rbp
 | 
						movq	(_JB_RBP * 8)(%r12),%rbp
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,13 +37,8 @@
 | 
				
			|||||||
#ifndef _AMD64_ASM_H_
 | 
					#ifndef _AMD64_ASM_H_
 | 
				
			||||||
#define _AMD64_ASM_H_
 | 
					#define _AMD64_ASM_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __PIC__
 | 
					 | 
				
			||||||
#define PIC_PLT(x)	x@PLT
 | 
					#define PIC_PLT(x)	x@PLT
 | 
				
			||||||
#define PIC_GOT(x)	x@GOTPCREL(%rip)
 | 
					#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 */
 | 
					/* let kernels and others override entrypoint alignment */
 | 
				
			||||||
#ifndef _ALIGN_TEXT
 | 
					#ifndef _ALIGN_TEXT
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user