forked from Imagelibrary/binutils-gdb
bfd/
2009-06-01 H.J. Lu <hongjiu.lu@intel.com> * elf-bfd.h (struct bfd_elf_section_data): Remove indirect_relocs. (_bfd_elf_make_ifunc_reloc_section): Removed. (_bfd_elf_is_ifunc_symbol): Likewise. (_bfd_elf_create_static_ifunc_sections): New. * elflink.c (_bfd_elf_adjust_dynamic_symbol): Move STT_GNU_IFUNC symbol check to ... (elf_link_add_object_symbols): Here. (_bfd_elf_link_hash_hide_symbol): Don't clean plt on STT_GNU_IFUNC symbol. (elf_link_output_extsym): Call elf_backend_finish_dynamic_symbol if a STT_GNU_IFUNC symbol is referenced in a non-shared object. (IFUNC_INFIX): Removed. (get_ifunc_reloc_section_name): Likewise. (_bfd_elf_make_ifunc_reloc_section): Likewise. (_bfd_elf_is_ifunc_symbol): Likewise. (_bfd_elf_create_static_ifunc_sections): New. ld/ 2009-06-01 H.J. Lu <hongjiu.lu@intel.com> * scripttempl/elf.sc (PLT): Add "*(.iplt)". (GOT): Add "*(.igot.plt)a" and "*(.igot)". (GOTPLT): Add "*(.igot)". (__rel_iplt_start): New. (__rel_iplt_end): Likewise. (__rela_iplt_start): Likewise. (__rela_iplt_end): Likewise.
This commit is contained in:
@@ -113,15 +113,15 @@ if test -z "${INITIAL_READONLY_SECTIONS}${CREATE_SHLIB}"; then
|
||||
INITIAL_READONLY_SECTIONS=".interp ${RELOCATING-0} : { *(.interp) }"
|
||||
fi
|
||||
if test -z "$PLT"; then
|
||||
PLT=".plt ${RELOCATING-0} : { *(.plt) }"
|
||||
PLT=".plt ${RELOCATING-0} : { *(.plt) *(.iplt)}"
|
||||
fi
|
||||
test -n "${DATA_PLT-${BSS_PLT-text}}" && TEXT_PLT=yes
|
||||
if test -z "$GOT"; then
|
||||
if test -z "$SEPARATE_GOTPLT"; then
|
||||
GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.got) }"
|
||||
GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }"
|
||||
else
|
||||
GOT=".got ${RELOCATING-0} : { *(.got) }"
|
||||
GOTPLT=".got.plt ${RELOCATING-0} : { *(.got.plt) }"
|
||||
GOT=".got ${RELOCATING-0} : { *(.got) *(.igot) }"
|
||||
GOTPLT=".got.plt ${RELOCATING-0} : { *(.got.plt) *(.igot.plt) }"
|
||||
fi
|
||||
fi
|
||||
DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
|
||||
@@ -354,8 +354,20 @@ EOF
|
||||
fi
|
||||
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
.rel.plt ${RELOCATING-0} : { *(.rel.plt) }
|
||||
.rela.plt ${RELOCATING-0} : { *(.rela.plt) }
|
||||
.rel.plt ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.plt)
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rel_iplt_start = .);}}
|
||||
*(.rel.iplt)
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rel_iplt_end = .);}}
|
||||
}
|
||||
.rela.plt ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.plt)
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rela_iplt_start = .);}}
|
||||
*(.rela.iplt)
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rela_iplt_end = .);}}
|
||||
}
|
||||
${OTHER_PLT_RELOC_SECTIONS}
|
||||
EOF
|
||||
|
||||
|
||||
Reference in New Issue
Block a user