From: Ulrich Drepper Date: Sun, 18 Dec 2005 21:09:20 +0000 (+0000) Subject: * sysdeps/unix/sysv/linux/x86_64/sysdep.h (PTR_MANGLE): Define C X-Git-Tag: upstream/2.30~16103 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7725f8749a850972980349ca05259ea09d0b514f;p=external%2Fglibc.git * sysdeps/unix/sysv/linux/x86_64/sysdep.h (PTR_MANGLE): Define C version for inside ld.so. * elf/rtld.c (dl_main): Don't use hp timing code unless it's available. --- diff --git a/ChangeLog b/ChangeLog index 3ad8ff9..12f5cba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2005-12-18 Ulrich Drepper + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (PTR_MANGLE): Define C + version for inside ld.so. + + * elf/rtld.c (dl_main): Don't use hp timing code unless it's available. + * sysdeps/powerpc/powerpc32/setjmp-common.S [IS_IN_rtld]: Avoid call to __sigjmp_save. * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise. diff --git a/elf/rtld.c b/elf/rtld.c index 9ef58bb..aee3ea9 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1837,10 +1837,12 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", if (GLRO(dl_pointer_guard)) { // XXX If it is cheap, we should use a separate value. - uintptr_t pointer_chk_guard; + uintptr_t pointer_chk_guard = stack_chk_guard; +#ifndef HP_TIMING_NONAVAIL hp_timing_t now; HP_TIMING_NOW (now); - pointer_chk_guard = stack_chk_guard ^ now; + pointer_chk_guard ^= now; +#endif #ifdef THREAD_SET_POINTER_GUARD THREAD_SET_POINTER_GUARD (pointer_chk_guard); #endif diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h index bb0b604..5dfffca 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h @@ -320,7 +320,9 @@ # define PTR_MANGLE(reg) xorq __pointer_chk_guard_local(%rip), reg # define PTR_DEMANGLE(reg) PTR_MANGLE (reg) # else -# error "Define these if necessary" +# define PTR_MANGLE(reg) asm ("xorq __pointer_chk_guard_local(%%rip), %0"\ + : "=r" (reg) : "0" (reg)) +# define PTR_DEMANGLE(reg) PTR_MANGLE (reg) # endif #else # ifdef __ASSEMBLER__