1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

Use sparc GOTDATA relocations whenever possible.

* sysdeps/sparc/crti.S: Try to use GOTDATA relocs.
	* sysdeps/sparc/sparc32/dl-machine.h (RTLD_START): Likewise.
	* sysdeps/sparc/sparc32/elf/start.S: Likewise.
	* sysdeps/sparc/sparc64/dl-machine.h (RTLD_START): Likewise.
	* sysdeps/sparc/sparc64/elf/start.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memset.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
	(SYSCALL_ERROR_HANDLER): Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/brk.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
	(SYSCALL_ERROR_HANDLER): Likewise.
This commit is contained in:
David S. Miller
2012-02-21 15:42:42 -08:00
parent c80098a9a0
commit 3d2b3019e0
13 changed files with 202 additions and 96 deletions

View File

@ -95,7 +95,17 @@ ENTRY(name); \
mov %g1, %o7;
#else
# if RTLD_PRIVATE_ERRNO
# define SYSCALL_ERROR_HANDLER \
# ifdef HAVE_BINUTILS_GOTDATA
# define SYSCALL_ERROR_HANDLER \
0: SETUP_PIC_REG_LEAF(o2,g1) \
sethi %gdop_hix22(rtld_errno), %g1; \
xor %g1, %gdop_lox10(rtld_errno), %g1;\
ldx [%o2 + %g1], %g1, %gdop(rtld_errno); \
st %o0, [%g1]; \
jmp %o7 + 8; \
mov -1, %o0;
# else
# define SYSCALL_ERROR_HANDLER \
0: SETUP_PIC_REG_LEAF(o2,g1) \
sethi %hi(rtld_errno), %g1; \
or %g1, %lo(rtld_errno), %g1; \
@ -103,6 +113,7 @@ ENTRY(name); \
st %o0, [%g1]; \
jmp %o7 + 8; \
mov -1, %o0;
# endif
# elif defined _LIBC_REENTRANT
# ifndef NOT_IN_libc
@ -119,7 +130,17 @@ ENTRY(name); \
jmp %o7 + 8; \
mov -1, %o0;
# else
# define SYSCALL_ERROR_HANDLER \
# ifdef HAVE_BINUTILS_GOTDATA
# define SYSCALL_ERROR_HANDLER \
0: SETUP_PIC_REG_LEAF(o2,g1) \
sethi %gdop_hix22(errno), %g1;\
xor %g1, %gdop_lox10(errno), %g1;\
ldx [%o2 + %g1], %g1, %gdop(errno);\
st %o0, [%g1]; \
jmp %o7 + 8; \
mov -1, %o0;
# else
# define SYSCALL_ERROR_HANDLER \
0: SETUP_PIC_REG_LEAF(o2,g1) \
sethi %hi(errno), %g1; \
or %g1, %lo(errno), %g1; \
@ -127,6 +148,7 @@ ENTRY(name); \
st %o0, [%g1]; \
jmp %o7 + 8; \
mov -1, %o0;
# endif
# endif /* _LIBC_REENTRANT */
#endif /* PIC */