Skip to content

Commit

Permalink
More IA-64 removal
Browse files Browse the repository at this point in the history
  • Loading branch information
drepper committed Jan 7, 2012
1 parent 7ae81d8 commit 664f8cb
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 137 deletions.
6 changes: 6 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
2012-01-07 Ulrich Drepper <[email protected]>

* elf/tls-macros.h: Remove support for Alpha and IA-64. Should be in
files in ports.
* elf/stackguard-macros.h: Remove support for IA-64.
* elf/tst-auditmod1.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.

* sysdeps/unix/sysv/linux/configure.in: Ports should define
libc_cv_gcc_unwind_find_fde and arch_minimum_kernel in their
configure files.
Expand Down
5 changes: 1 addition & 4 deletions elf/stackguard-macros.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,7 @@
#elif defined __s390__
# define STACK_CHK_GUARD \
({ uintptr_t x; asm ("ear %0,%%a0; l %0,0x14(%0)" : "=a" (x)); x; })
#elif defined __ia64__
# define STACK_CHK_GUARD \
({ uintptr_t x; asm ("adds %0 = -8, r13;; ld8 %0 = [%0]" : "=r" (x)); x; })
#else
#elif !defined STACK_CHK_GUARD
extern uintptr_t __stack_chk_guard;
# define STACK_CHK_GUARD __stack_chk_guard
#endif
133 changes: 20 additions & 113 deletions elf/tls-macros.h
Original file line number Diff line number Diff line change
Expand Up @@ -279,99 +279,6 @@
__l; })
#endif

#elif defined __alpha__

register void *__gp __asm__("$29");

# define TLS_LE(x) \
({ int *__l; \
asm ("call_pal 158\n\tlda $0," #x "($0)\t\t!tprel" : "=v"(__l)); \
__l; })

# define TLS_IE(x) \
({ char *__tp; unsigned long __o; \
asm ("call_pal 158\n\tldq %1," #x "($gp)\t\t!gottprel" \
: "=v"(__tp), "=r"(__o) : "r"(__gp)); \
(int *)(__tp + __o); })

# define TLS_LD(x) \
({ extern void *__tls_get_addr(void *); int *__l; void *__i; \
asm ("lda %0," #x "($gp)\t\t!tlsldm" : "=r" (__i) : "r"(__gp)); \
__i = __tls_get_addr(__i); \
asm ("lda %0, " #x "(%1)\t\t!dtprel" : "=r"(__l) : "r"(__i)); \
__l; })

# define TLS_GD(x) \
({ extern void *__tls_get_addr(void *); void *__i; \
asm ("lda %0," #x "($gp)\t\t!tlsgd" : "=r" (__i) : "r"(__gp)); \
(int *) __tls_get_addr(__i); })


#elif defined __ia64__

# define TLS_LE(x) \
({ void *__l; \
asm ("mov r2=r13\n\t" \
";;\n\t" \
"addl %0=@tprel(" #x "),r2\n\t" \
: "=r" (__l) : : "r2" ); __l; })

# define TLS_IE(x) \
({ void *__l; \
register long __gp asm ("gp"); \
asm (";;\n\t" \
"addl r16=@ltoff(@tprel(" #x ")),gp\n\t" \
";;\n\t" \
"ld8 r17=[r16]\n\t" \
";;\n\t" \
"add %0=r13,r17\n\t" \
";;\n\t" \
: "=r" (__l) : "r" (__gp) : "r16", "r17" ); __l; })

# define __TLS_CALL_CLOBBERS \
"r2", "r3", "r8", "r9", "r10", "r11", "r14", "r15", "r16", "r17", \
"r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", \
"r27", "r28", "r29", "r30", "r31", \
"p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", \
"f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
"b6", "b7", \
"out0", "out1", "out2", "out3", "out4", "out5", "out6", "out7"

# define TLS_LD(x) \
({ void *__l; \
register long __gp asm ("gp"); \
asm (";;\n\t" \
"mov loc0=gp\n\t" \
"addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
"addl out1=@dtprel(" #x "),r0\n\t" \
";;\n\t" \
"ld8 out0=[r16]\n\t" \
"br.call.sptk.many b0=__tls_get_addr" \
";;\n\t" \
"mov gp=loc0\n\t" \
"mov %0=r8\n\t" \
";;\n\t" \
: "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
__l; })

# define TLS_GD(x) \
({ void *__l; \
register long __gp asm ("gp"); \
asm (";;\n\t" \
"mov loc0=gp\n\t" \
"addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
"addl r17=@ltoff(@dtprel(" #x ")),gp\n\t" \
";;\n\t" \
"ld8 out0=[r16]\n\t" \
"ld8 out1=[r17]\n\t" \
"br.call.sptk.many b0=__tls_get_addr" \
";;\n\t" \
"mov gp=loc0\n\t" \
"mov %0=r8\n\t" \
";;\n\t" \
: "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
__l; })

#elif defined __sparc__ && !defined __arch64__

# define TLS_LE(x) \
Expand Down Expand Up @@ -546,14 +453,14 @@ register void *__gp __asm__("$29");
"0:\t.quad " #x "@tlsldm\n\t" \
".quad " #x "@dtpoff\n" \
"1:\tlgr %1,%%r12\n\t" \
"larl %%r12,_GLOBAL_OFFSET_TABLE_\n\t" \
"lg %%r2,0(%0)\n\t" \
"larl %%r12,_GLOBAL_OFFSET_TABLE_\n\t" \
"lg %%r2,0(%0)\n\t" \
"brasl %%r14,__tls_get_offset@plt:tls_ldcall:" #x "\n\t" \
"lg %0,8(%0)\n\t" \
"algr %0,%%r2\n\t" \
"lgr %%r12,%1" \
"lgr %%r12,%1" \
: "=&a" (__offset), "=&a" (__save12) \
: : "cc", "0", "1", "2", "3", "4", "5", "14" ); \
: : "cc", "0", "1", "2", "3", "4", "5", "14" ); \
(int *) (__builtin_thread_pointer() + __offset); })
# else
# define TLS_LD(x) \
Expand All @@ -562,7 +469,7 @@ register void *__gp __asm__("$29");
"0:\t.quad " #x "@tlsldm\n\t" \
".quad " #x "@dtpoff\n" \
"1:\tlarl %%r12,_GLOBAL_OFFSET_TABLE_\n\t" \
"lg %%r2,0(%0)\n\t" \
"lg %%r2,0(%0)\n\t" \
"brasl %%r14,__tls_get_offset@plt:tls_ldcall:" #x "\n\t" \
"lg %0,8(%0)\n\t" \
"algr %0,%%r2" \
Expand All @@ -578,12 +485,12 @@ register void *__gp __asm__("$29");
"0:\t.quad " #x "@tlsgd\n" \
"1:\tlgr %1,%%r12\n\t" \
"larl %%r12,_GLOBAL_OFFSET_TABLE_\n\t" \
"lg %%r2,0(%0)\n\t" \
"lg %%r2,0(%0)\n\t" \
"brasl %%r14,__tls_get_offset@plt:tls_gdcall:" #x "\n\t" \
"lgr %0,%%r2\n\t" \
"lgr %%r12,%1" \
"lgr %0,%%r2\n\t" \
"lgr %%r12,%1" \
: "=&a" (__offset), "=&a" (__save12) \
: : "cc", "0", "1", "2", "3", "4", "5", "14" ); \
: : "cc", "0", "1", "2", "3", "4", "5", "14" ); \
(int *) (__builtin_thread_pointer() + __offset); })
# else
# define TLS_GD(x) \
Expand All @@ -593,7 +500,7 @@ register void *__gp __asm__("$29");
"1:\tlarl %%r12,_GLOBAL_OFFSET_TABLE_\n\t" \
"lg %%r2,0(%0)\n\t" \
"brasl %%r14,__tls_get_offset@plt:tls_gdcall:" #x "\n\t" \
"lgr %0,%%r2" \
"lgr %0,%%r2" \
: "=&a" (__offset) \
: : "cc", "0", "1", "2", "3", "4", "5", "12", "14" ); \
(int *) (__builtin_thread_pointer() + __offset); })
Expand Down Expand Up @@ -638,16 +545,16 @@ register void *__gp __asm__("$29");
".long " #x "@tlsldm\n\t" \
".long " #x "@dtpoff\n" \
"1:\tlr %1,%%r12\n\t" \
"l %%r12,0(%0)\n\t" \
"la %%r12,0(%%r12,%0)\n\t" \
"l %%r12,0(%0)\n\t" \
"la %%r12,0(%%r12,%0)\n\t" \
"l %%r1,4(%0)\n\t" \
"l %%r2,8(%0)\n\t" \
"bas %%r14,0(%%r1,%0):tls_ldcall:" #x "\n\t" \
"l %0,12(%0)\n\t" \
"alr %0,%%r2\n\t" \
"lr %%r12,%1" \
"lr %%r12,%1" \
: "=&a" (__offset), "=&a" (__save12) \
: : "cc", "0", "1", "2", "3", "4", "5" ); \
: : "cc", "0", "1", "2", "3", "4", "5" ); \
(int *) (__builtin_thread_pointer() + __offset); })
# else
# define TLS_LD(x) \
Expand Down Expand Up @@ -675,15 +582,15 @@ register void *__gp __asm__("$29");
".long __tls_get_offset@plt-0b\n\t" \
".long " #x "@tlsgd\n" \
"1:\tlr %1,%%r12\n\t" \
"l %%r12,0(%0)\n\t" \
"la %%r12,0(%%r12,%0)\n\t" \
"l %%r12,0(%0)\n\t" \
"la %%r12,0(%%r12,%0)\n\t" \
"l %%r1,4(%0)\n\t" \
"l %%r2,8(%0)\n\t" \
"bas %%r14,0(%%r1,%0):tls_gdcall:" #x "\n\t" \
"lr %0,%%r2\n\t" \
"lr %%r12,%1" \
"lr %0,%%r2\n\t" \
"lr %%r12,%1" \
: "=&a" (__offset), "=&a" (__save12) \
: : "cc", "0", "1", "2", "3", "4", "5" ); \
: : "cc", "0", "1", "2", "3", "4", "5" ); \
(int *) (__builtin_thread_pointer() + __offset); })
# else
# define TLS_GD(x) \
Expand All @@ -696,7 +603,7 @@ register void *__gp __asm__("$29");
"l %%r1,4(%0)\n\t" \
"l %%r2,8(%0)\n\t" \
"bas %%r14,0(%%r1):tls_gdcall:" #x "\n\t" \
"lr %0,%%r2" \
"lr %0,%%r2" \
: "=&a" (__offset) : : "cc", "0", "1", "2", "3", "4", "5", "12" ); \
(int *) (__builtin_thread_pointer() + __offset); })
# endif
Expand Down
6 changes: 0 additions & 6 deletions elf/tst-auditmod1.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,12 +150,6 @@ la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,
# define La_regs La_s390_64_regs
# define La_retval La_s390_64_retval
# define int_retval lrv_r2
#elif defined __ia64__
# define pltenter la_ia64_gnu_pltenter
# define pltexit la_ia64_gnu_pltexit
# define La_regs La_ia64_regs
# define La_retval La_ia64_retval
# define int_retval lrv_r8
#elif defined __sparc__ && __WORDSIZE == 32
# define pltenter la_sparc32_gnu_pltenter
# define pltexit la_sparc32_gnu_pltexit
Expand Down
12 changes: 1 addition & 11 deletions sysdeps/generic/ldsodefs.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
Copyright (C) 1995-2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (C) 1995-2009, 2010, 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
Expand Down Expand Up @@ -200,8 +200,6 @@ struct La_s390_32_regs;
struct La_s390_32_retval;
struct La_s390_64_regs;
struct La_s390_64_retval;
struct La_ia64_regs;
struct La_ia64_retval;
struct La_sparc32_regs;
struct La_sparc32_retval;
struct La_sparc64_regs;
Expand Down Expand Up @@ -254,10 +252,6 @@ struct audit_ifaces
uintptr_t *, struct La_s390_64_regs *,
unsigned int *, const char *name,
long int *framesizep);
Elf64_Addr (*ia64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *,
uintptr_t *, struct La_ia64_regs *,
unsigned int *, const char *name,
long int *framesizep);
Elf32_Addr (*sparc32_gnu_pltenter) (Elf32_Sym *, unsigned int,
uintptr_t *, uintptr_t *,
const struct La_sparc32_regs *,
Expand Down Expand Up @@ -307,10 +301,6 @@ struct audit_ifaces
const struct La_s390_64_regs *,
struct La_s390_64_retval *,
const char *);
unsigned int (*ia64_gnu_pltexit) (Elf64_Sym *, unsigned int, uintptr_t *,
uintptr_t *,
const struct La_ia64_regs *,
struct La_ia64_retval *, const char *);
unsigned int (*sparc32_gnu_pltexit) (Elf32_Sym *, unsigned int,
uintptr_t *, uintptr_t *,
const struct La_sparc32_regs *,
Expand Down
2 changes: 1 addition & 1 deletion sysdeps/unix/sysv/linux/kernel-features.h
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@
their availability with one define. The changes were made first
for i386 and the have to be done separately for the other archs.
For i386 we pick 2.5.50 as the first version with support.
For ia64, s390*, PPC, x86-64, and SH we pick 2.5.64 as the first
For s390*, PPC, x86-64, and SH we pick 2.5.64 as the first
version with support. */
#if ((__LINUX_KERNEL_VERSION >= 132402 && defined __i386__) \
|| (__LINUX_KERNEL_VERSION >= 132416 \
Expand Down
2 changes: 1 addition & 1 deletion sysdeps/unix/sysv/linux/x86_64/sigpending.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */

/* Linux/ia64 only has rt signals, thus we do not even want to try falling
/* Linux/x86_64 only has rt signals, thus we do not even want to try falling
back to the old style signals as the default Linux handler does. */

#include <errno.h>
Expand Down
2 changes: 1 addition & 1 deletion sysdeps/unix/sysv/linux/x86_64/sigprocmask.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */

/* Linux/ia64 only has rt signals, thus we do not even want to try falling
/* Linux/x86_64 only has rt signals, thus we do not even want to try falling
back to the old style signals as the default Linux handler does. */

#include <errno.h>
Expand Down

0 comments on commit 664f8cb

Please sign in to comment.