From f3d18efb8a720121066dc3401e822043beb98cde Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sat, 7 Nov 2015 06:32:30 -0800 Subject: Keep only ELF_RTYPE_CLASS_{PLT|COPY} bits for prelink prelink runs ld.so with the environment variable LD_TRACE_PRELINKING set to dump the relocation type class from _dl_debug_bindings. prelink has the following relocation type classes: #define RTYPE_CLASS_VALID 8 #define RTYPE_CLASS_PLT (8|1) #define RTYPE_CLASS_COPY (8|2) #define RTYPE_CLASS_TLS (8|4) where ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA has a conflict with RTYPE_CLASS_TLS. Since prelink only uses ELF_RTYPE_CLASS_PLT and ELF_RTYPE_CLASS_COPY bits, we should clear the other bits when the DL_DEBUG_PRELINK bit is set. [BZ #19178] * elf/dl-lookup.c (RTYPE_CLASS_VALID): New. (RTYPE_CLASS_PLT): Likewise. (RTYPE_CLASS_COPY): Likewise. (RTYPE_CLASS_TLS): Likewise. (_dl_debug_bindings): Use RTYPE_CLASS_TLS and RTYPE_CLASS_VALID to set relocation type class for DL_DEBUG_PRELINK. Keep only ELF_RTYPE_CLASS_PLT and ELF_RTYPE_CLASS_COPY bits for DL_DEBUG_PRELINK. --- ChangeLog | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index da6c7dd2f1..a18dfd076f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2015-11-07 H.J. Lu + + [BZ #19178] + * elf/dl-lookup.c (RTYPE_CLASS_VALID): New. + (RTYPE_CLASS_PLT): Likewise. + (RTYPE_CLASS_COPY): Likewise. + (RTYPE_CLASS_TLS): Likewise. + (_dl_debug_bindings): Use RTYPE_CLASS_TLS and RTYPE_CLASS_VALID + to set relocation type class for DL_DEBUG_PRELINK. Keep only + ELF_RTYPE_CLASS_PLT and ELF_RTYPE_CLASS_COPY bits for + DL_DEBUG_PRELINK. + 2015-11-06 Joseph Myers * math/test-signgam-finite.c (RUN_TESTS): Correct messages about -- cgit 1.4.1