mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
* sysdeps/unix/sysv/linux/i386/sysdep.h: Define PTR_MANGLE and
PTR_DEMANGLE for C code in libc. * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
This commit is contained in:
parent
827b70873b
commit
3467f5c369
@ -1,3 +1,9 @@
|
|||||||
|
2005-12-18 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/i386/sysdep.h: Define PTR_MANGLE and
|
||||||
|
PTR_DEMANGLE for C code in libc.
|
||||||
|
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
|
||||||
|
|
||||||
2005-12-17 Ulrich Drepper <drepper@redhat.com>
|
2005-12-17 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* elf/Versions [GLIBC_PRIVATE]: Export __pointer_chk_guard if defined.
|
* elf/Versions [GLIBC_PRIVATE]: Export __pointer_chk_guard if defined.
|
||||||
|
@ -565,8 +565,17 @@ asm (".L__X'%ebx = 1\n\t"
|
|||||||
earlier than the descriptor is initialized. Using a global variable
|
earlier than the descriptor is initialized. Using a global variable
|
||||||
is too complicated here since we have no PC-relative addressing mode. */
|
is too complicated here since we have no PC-relative addressing mode. */
|
||||||
#else
|
#else
|
||||||
# define PTR_MANGLE(reg) xorl %gs:POINTER_GUARD, reg
|
# ifdef __ASSEMBLER__
|
||||||
# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
|
# define PTR_MANGLE(reg) xorl %gs:POINTER_GUARD, reg
|
||||||
|
# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
|
||||||
|
# else
|
||||||
|
# define PTR_MANGLE(var) asm ("xorl %%gs:%c2, %0" \
|
||||||
|
: "=r" (var) \
|
||||||
|
: "0" (var), \
|
||||||
|
"i" (offsetof (tcbhead_t, \
|
||||||
|
pointer_guard)))
|
||||||
|
# define PTR_DEMANGLE(var) PTR_MANGLE (var)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* linux/i386/sysdep.h */
|
#endif /* linux/i386/sysdep.h */
|
||||||
|
@ -316,11 +316,24 @@
|
|||||||
#if defined NOT_IN_libc && defined IS_IN_rtld
|
#if defined NOT_IN_libc && defined IS_IN_rtld
|
||||||
/* We cannot use the thread descriptor because in ld.so we use setjmp
|
/* We cannot use the thread descriptor because in ld.so we use setjmp
|
||||||
earlier than the descriptor is initialized. */
|
earlier than the descriptor is initialized. */
|
||||||
# define PTR_MANGLE(reg) xorq __pointer_chk_guard_local(%rip), reg
|
# ifdef __ASSEMBLER__
|
||||||
# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
|
# define PTR_MANGLE(reg) xorq __pointer_chk_guard_local(%rip), reg
|
||||||
|
# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
|
||||||
|
# else
|
||||||
|
# error "Define these if necessary"
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
# define PTR_MANGLE(reg) xorq %fs:POINTER_GUARD, reg
|
# ifdef __ASSEMBLER__
|
||||||
# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
|
# define PTR_MANGLE(reg) xorq %fs:POINTER_GUARD, reg
|
||||||
|
# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
|
||||||
|
# else
|
||||||
|
# define PTR_MANGLE(var) asm ("xorq %%fs:%c2, %0" \
|
||||||
|
: "=r" (var) \
|
||||||
|
: "0" (var), \
|
||||||
|
"i" (offsetof (tcbhead_t, \
|
||||||
|
pointer_guard)))
|
||||||
|
# define PTR_DEMANGLE(var) PTR_MANGLE (var)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* linux/x86_64/sysdep.h */
|
#endif /* linux/x86_64/sysdep.h */
|
||||||
|
Loading…
Reference in New Issue
Block a user