diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-01-17 19:57:05 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-01-17 19:57:05 +0000 |
commit | 0f0b799489b3b4df2c69c9a6844be6a8f294778d (patch) | |
tree | eb3e992ccc2b6635acfb7828bd8a00f4a69049ac /sysdeps/alpha/dl-machine.h | |
parent | d1852dbb73b0ceb21cd132bb57ac2cee2364d786 (diff) | |
download | glibc-0f0b799489b3b4df2c69c9a6844be6a8f294778d.tar glibc-0f0b799489b3b4df2c69c9a6844be6a8f294778d.tar.gz glibc-0f0b799489b3b4df2c69c9a6844be6a8f294778d.tar.bz2 glibc-0f0b799489b3b4df2c69c9a6844be6a8f294778d.zip |
Update.
2003-01-17 Richard Henderson <rth@redhat.com>
* 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 <jakub@redhat.com>
* 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.
Diffstat (limited to 'sysdeps/alpha/dl-machine.h')
-rw-r--r-- | sysdeps/alpha/dl-machine.h | 21 |
1 files changed, 16 insertions, 5 deletions
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 |