diff options
author | Ulrich Drepper <drepper@redhat.com> | 2005-12-18 06:58:22 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2005-12-18 06:58:22 +0000 |
commit | 827b70873b41363c864fb65e99829204595d0f85 (patch) | |
tree | 5d2e3811b6b0da44f18a7c8920dffdc524e3cd66 /nptl/sysdeps/x86_64/tls.h | |
parent | 8292f6fc71a60e92a23be053c500f504c6802c54 (diff) | |
download | glibc-827b70873b41363c864fb65e99829204595d0f85.tar.gz |
* elf/Versions [GLIBC_PRIVATE]: Export __pointer_chk_guard if defined.
* elf/rtld.c: Define __pointer_chk_guard_local and if necessary
__pointer_chk_guard.
(_rtld_global_ro): Initialize _dl_pointer_guard.
(dl_main): Initialize __pointer_chk_guard_local and either
__pointer_chk_guard or TLS value if necessary.
(process_envvars): Recognize and handle LD_POINTER_GUARD.
* sysdeps/generic/ldsodefs.h (rtld_global_ro): Add _dl_pointer_guard.
* sysdeps/i386/__longjmp.S: Use PTR_DEMANGLE for PC if defined.
* sysdeps/x86_64/__longjmp.S: Likewise.
* sysdeps/i386/bsd-_setjmp.S: Use PTR_MANGLE for PC if defined.
* sysdeps/i386/bsd-_setjmp.S: Likewise.
* sysdeps/i386/setjmp.S: Likewise.
[IS_IN_rtld]: Avoid call to __sigjmp_save.
* sysdeps/i386/setjmp.S: Likewise.
* sysdeps/unix/sysv/linux/i386/sysdep.h: Define PTR_MANGLE and
PTR_DEMANGLE.
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
* sysdeps/i386/elf/setjmp.S: Removed.
* sysdeps/i386/elf/bsd-setjmp.S: Removed.
Diffstat (limited to 'nptl/sysdeps/x86_64/tls.h')
-rw-r--r-- | nptl/sysdeps/x86_64/tls.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h index 516827b8e1..13cf6fb3f5 100644 --- a/nptl/sysdeps/x86_64/tls.h +++ b/nptl/sysdeps/x86_64/tls.h @@ -49,6 +49,7 @@ typedef struct int multiple_threads; uintptr_t sysinfo; uintptr_t stack_guard; + uintptr_t pointer_guard; } tcbhead_t; #else /* __ASSEMBLER__ */ @@ -329,6 +330,15 @@ typedef struct ((descr)->header.stack_guard \ = THREAD_GETMEM (THREAD_SELF, header.stack_guard)) + +/* Set the pointer guard field in the TCB head. */ +#define THREAD_SET_POINTER_GUARD(value) \ + THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value) +#define THREAD_COPY_POINTER_GUARD(descr) \ + ((descr)->header.pointer_guard \ + = THREAD_GETMEM (THREAD_SELF, header.pointer_guard)) + + #endif /* __ASSEMBLER__ */ #endif /* tls.h */ |