]> sourceware.org Git - glibc.git/commit - elf/dl-lookup.c
Keep only ELF_RTYPE_CLASS_{PLT|COPY} bits for prelink
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 7 Nov 2015 14:32:30 +0000 (06:32 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 7 Nov 2015 14:32:30 +0000 (06:32 -0800)
commitf3d18efb8a720121066dc3401e822043beb98cde
tree793c9689cfaebbae954d1561332a737e28653c17
parentd699ab25d32768aaad899f9ff1e668be62c448d2
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
elf/dl-lookup.c
This page took 0.043652 seconds and 5 git commands to generate.