x86: Add VERIFY_PLT_ENTRY
Add VERIFY_PLT_ENTRY to verify that symbol has an entry in the procedure linkage table. * elfxx-x86.h (VERIFY_PLT_ENTRY): New. * elf32-i386.c (elf_i386_finish_dynamic_symbol): Use it. * elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
This commit is contained in:
parent
e74399c47c
commit
f3180fa9ee
|
@ -1,3 +1,9 @@
|
|||
2017-10-06 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elfxx-x86.h (VERIFY_PLT_ENTRY): New.
|
||||
* elf32-i386.c (elf_i386_finish_dynamic_symbol): Use it.
|
||||
* elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
|
||||
|
||||
2017-10-06 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elfxx-x86.h (COPY_INPUT_RELOC_P): New.
|
||||
|
|
|
@ -3577,18 +3577,7 @@ elf_i386_finish_dynamic_symbol (bfd *output_bfd,
|
|||
relplt = htab->elf.irelplt;
|
||||
}
|
||||
|
||||
/* This symbol has an entry in the procedure linkage table. Set
|
||||
it up. */
|
||||
|
||||
if ((h->dynindx == -1
|
||||
&& !local_undefweak
|
||||
&& !((h->forced_local || bfd_link_executable (info))
|
||||
&& h->def_regular
|
||||
&& h->type == STT_GNU_IFUNC))
|
||||
|| plt == NULL
|
||||
|| gotplt == NULL
|
||||
|| relplt == NULL)
|
||||
abort ();
|
||||
VERIFY_PLT_ENTRY (info, h, plt, gotplt, relplt, local_undefweak)
|
||||
|
||||
/* Get the index in the procedure linkage table which
|
||||
corresponds to this symbol. This is the index of this symbol
|
||||
|
|
|
@ -3939,17 +3939,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
|
|||
relplt = htab->elf.irelplt;
|
||||
}
|
||||
|
||||
/* This symbol has an entry in the procedure linkage table. Set
|
||||
it up. */
|
||||
if ((h->dynindx == -1
|
||||
&& !local_undefweak
|
||||
&& !((h->forced_local || bfd_link_executable (info))
|
||||
&& h->def_regular
|
||||
&& h->type == STT_GNU_IFUNC))
|
||||
|| plt == NULL
|
||||
|| gotplt == NULL
|
||||
|| relplt == NULL)
|
||||
abort ();
|
||||
VERIFY_PLT_ENTRY (info, h, plt, gotplt, relplt, local_undefweak)
|
||||
|
||||
/* Get the index in the procedure linkage table which
|
||||
corresponds to this symbol. This is the index of this symbol
|
||||
|
|
|
@ -196,6 +196,18 @@
|
|||
&& (H)->dynindx == -1 \
|
||||
&& (TLS_TYPE & GOT_TLS_IE))
|
||||
|
||||
/* Verify that the symbol has an entry in the procedure linkage table. */
|
||||
#define VERIFY_PLT_ENTRY(INFO, H, PLT, GOTPLT, RELPLT, LOCAL_UNDEFWEAK) \
|
||||
if (((H)->dynindx == -1 \
|
||||
&& !LOCAL_UNDEFWEAK \
|
||||
&& !(((H)->forced_local || bfd_link_executable (INFO)) \
|
||||
&& (H)->def_regular \
|
||||
&& (H)->type == STT_GNU_IFUNC)) \
|
||||
|| (PLT) == NULL \
|
||||
|| (GOTPLT) == NULL \
|
||||
|| (RELPLT) == NULL) \
|
||||
abort ();
|
||||
|
||||
/* x86 ELF linker hash entry. */
|
||||
|
||||
struct elf_x86_link_hash_entry
|
||||
|
|
Loading…
Reference in New Issue