about summary refs log tree commit diff
path: root/sysdeps/sparc
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-02-18 22:31:42 -0800
committerDavid S. Miller <davem@davemloft.net>2012-02-18 22:31:42 -0800
commitdd54084dd9549ae15c12db248571ad76946b8712 (patch)
tree5ca8baa1ff74716ac8fa735cee0a0f169f985e39 /sysdeps/sparc
parent2bcc53a3378d6e8782e1655cc18c8ac60e031a5d (diff)
downloadglibc-dd54084dd9549ae15c12db248571ad76946b8712.tar.gz
glibc-dd54084dd9549ae15c12db248571ad76946b8712.tar.xz
glibc-dd54084dd9549ae15c12db248571ad76946b8712.zip
Rework sparc PIC macros so crt{i,n}.S can use them too.
	* sysdeps/unix/sparc/sysdep.h (SPARC_PIC_THUNK): New macro.
	(SETUP_PIC_REG): Use SPARC_PIC_THUNK and don't save and restore
	%o7 across the call.
	(SETUP_PIC_REG_LEAF): Do %o7 save/restore in this new macro
	instead.
	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Use
	SETUP_PIC_REG_LEAF.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.
	* sysdeps/sparc/crti.S: Use SETUP_PIC_REG.
	* sysdeps/sparc/crtn.S: Likewise.
Diffstat (limited to 'sysdeps/sparc')
-rw-r--r--sysdeps/sparc/crti.S13
1 files changed, 1 insertions, 12 deletions
diff --git a/sysdeps/sparc/crti.S b/sysdeps/sparc/crti.S
index adb1b29557..6ec4e9a5b3 100644
--- a/sysdeps/sparc/crti.S
+++ b/sysdeps/sparc/crti.S
@@ -70,9 +70,7 @@
 _init:
 	save		%sp, -STACKFRAME_SIZE, %sp
 #if PREINIT_FUNCTION_WEAK
-	sethi		%hi(_GLOBAL_OFFSET_TABLE_-4), %l7
-	call		__sparc_get_pc_thunk.l7
-	 add		%l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
+	SETUP_PIC_REG(l7)
 	sethi		%hi(PREINIT_FUNCTION), %g1
 	or		%g1, %lo(PREINIT_FUNCTION), %g1
 	GOT_LOAD	[%l7 + %g1], %g1
@@ -93,12 +91,3 @@ _init:
 	.type		_fini, @function
 _fini:
 	save		%sp, -STACKFRAME_SIZE, %sp
-
-	.section	.text.__sparc_get_pc_thunk.l7,"axG",@progbits,__sparc_get_pc_thunk.l7,comdat
-	.p2align	2
-	.weak		__sparc_get_pc_thunk.l7
-	.hidden		__sparc_get_pc_thunk.l7
-	.type		__sparc_get_pc_thunk.l7, #function
-__sparc_get_pc_thunk.l7:
-	jmp		%o7 + 8
-	 add		%o7, %l7, %l7