From 0f0b799489b3b4df2c69c9a6844be6a8f294778d Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 17 Jan 2003 19:57:05 +0000 Subject: Update. 2003-01-17 Richard Henderson * sysdeps/alpha/dl-machine.h (elf_machine_type_class): Add TLS relocs for class PLT. * sysdeps/alpha/libc-tls.c: New file. * sysdeps/unix/alpha/sysdep.S (EPILOGUE, GPSAVEREG): New. (LOADGP) [!PIC]: Rewrite to preserve caller's gp. 2003-01-17 Jakub Jelinek * sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_static_init): Use __libc_lock_{,un}lock_recursive instead of __libc_lock_{,un}lock on _dl_static_lock. --- sysdeps/alpha/dl-machine.h | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'sysdeps/alpha/dl-machine.h') diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h index 5016f1353e..25359d883e 100644 --- a/sysdeps/alpha/dl-machine.h +++ b/sysdeps/alpha/dl-machine.h @@ -387,13 +387,24 @@ $fixup_stack: \n\ #define RTLD_START_SPECIAL_INIT /* nothing */ #endif -/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so - PLT entries should not be allowed to define the value. - ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one - of the main executable's symbols, as for a COPY reloc, which we don't - use. */ +/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry + or TLS variables, so undefined references should not be allowed + to define the value. + + ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve + to one of the main executable's symbols, as for a COPY reloc. + This is unused on Alpha. */ + +#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) +#define elf_machine_type_class(type) \ + (((type) == R_ALPHA_JMP_SLOT \ + || (type) == R_ALPHA_DTPMOD64 \ + || (type) == R_ALPHA_DTPREL64 \ + || (type) == R_ALPHA_TPREL64) * ELF_RTYPE_CLASS_PLT) +#else #define elf_machine_type_class(type) \ (((type) == R_ALPHA_JMP_SLOT) * ELF_RTYPE_CLASS_PLT) +#endif /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ #define ELF_MACHINE_JMP_SLOT R_ALPHA_JMP_SLOT -- cgit 1.4.1