* emulparams/elf32ppc.sh (PLT): Don't include ".iplt".
* emulparams/elf_i386.sh (IREL_IN_PLT): Define. * emulparams/elf_x86_64.sh (IREL_IN_PLT): Define. * scripttempl/elf.sc: Create separate .iplt and .rela.iplt sections when !IREL_IN_PLT.
This commit is contained in:
parent
25f231068e
commit
8dfab6dd9a
@ -1,3 +1,11 @@
|
||||
2009-07-30 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* emulparams/elf32ppc.sh (PLT): Don't include ".iplt".
|
||||
* emulparams/elf_i386.sh (IREL_IN_PLT): Define.
|
||||
* emulparams/elf_x86_64.sh (IREL_IN_PLT): Define.
|
||||
* scripttempl/elf.sc: Create separate .iplt and .rela.iplt sections
|
||||
when !IREL_IN_PLT.
|
||||
|
||||
2009-07-29 Hans-Peter Nilsson <hp@bitrange.com>
|
||||
|
||||
* scripttempl/mmo.sc: For relocateable links, set $OUTPUT_FORMAT to
|
||||
|
@ -11,7 +11,7 @@ SEPARATE_GOTPLT=0
|
||||
BSS_PLT=
|
||||
GOT=".got ${RELOCATING-0} : SPECIAL { *(.got) }"
|
||||
GOTPLT=".plt ${RELOCATING-0} : SPECIAL { *(.plt) }"
|
||||
PLT=".plt ${RELOCATING-0} : SPECIAL { *(.plt) *(.iplt) }
|
||||
PLT=".plt ${RELOCATING-0} : SPECIAL { *(.plt) }
|
||||
.iplt ${RELOCATING-0} : { *(.iplt) }"
|
||||
OTHER_TEXT_SECTIONS="*(.glink)"
|
||||
EXTRA_EM_FILE=ppc32elf
|
||||
|
@ -12,3 +12,4 @@ GENERATE_SHLIB_SCRIPT=yes
|
||||
GENERATE_PIE_SCRIPT=yes
|
||||
NO_SMALL_DATA=yes
|
||||
SEPARATE_GOTPLT=12
|
||||
IREL_IN_PLT=
|
||||
|
@ -14,6 +14,7 @@ GENERATE_PIE_SCRIPT=yes
|
||||
NO_SMALL_DATA=yes
|
||||
LARGE_SECTIONS=yes
|
||||
SEPARATE_GOTPLT=24
|
||||
IREL_IN_PLT=
|
||||
|
||||
if [ "x${host}" = "x${target}" ]; then
|
||||
case " $EMULATION_LIBPATH " in
|
||||
|
@ -113,7 +113,9 @@ 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) *(.iplt)}"
|
||||
IPLT=".iplt ${RELOCATING-0} : { *(.iplt) }"
|
||||
PLT=".plt ${RELOCATING-0} : { *(.plt)${IREL_IN_PLT+ *(.iplt)} }
|
||||
${IREL_IN_PLT-$IPLT}"
|
||||
fi
|
||||
test -n "${DATA_PLT-${BSS_PLT-text}}" && TEXT_PLT=yes
|
||||
if test -z "$GOT"; then
|
||||
@ -124,6 +126,20 @@ if test -z "$GOT"; then
|
||||
GOTPLT=".got.plt ${RELOCATING-0} : { *(.got.plt) *(.igot.plt) }"
|
||||
fi
|
||||
fi
|
||||
REL_IFUNC=".rel.ifunc ${RELOCATING-0} : { *(.rel.ifunc) }"
|
||||
RELA_IFUNC=".rela.ifunc ${RELOCATING-0} : { *(.rela.ifunc) }"
|
||||
REL_IPLT=".rel.iplt ${RELOCATING-0} :
|
||||
{
|
||||
${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_IPLT=".rela.iplt ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rela_iplt_start = .);}}
|
||||
*(.rela.iplt)
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rela_iplt_end = .);}}
|
||||
}"
|
||||
DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
|
||||
RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
|
||||
DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }"
|
||||
@ -326,8 +342,10 @@ eval $COMBRELOCCAT <<EOF
|
||||
.rel.bss ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }
|
||||
.rela.bss ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }
|
||||
${REL_LARGE}
|
||||
.rel.ifunc ${RELOCATING-0} : { *(.rel.ifunc) }
|
||||
.rela.ifunc ${RELOCATING-0} : { *(.rela.ifunc) }
|
||||
${IREL_IN_PLT+$REL_IFUNC}
|
||||
${IREL_IN_PLT+$RELA_IFUNC}
|
||||
${IREL_IN_PLT-$REL_IPLT}
|
||||
${IREL_IN_PLT-$RELA_IPLT}
|
||||
EOF
|
||||
|
||||
if [ -n "$COMBRELOC" ]; then
|
||||
@ -351,16 +369,16 @@ cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
.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 = .);}}
|
||||
${IREL_IN_PLT+${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rel_iplt_start = .);}}}
|
||||
${IREL_IN_PLT+${RELOCATING+*(.rel.iplt)}}
|
||||
${IREL_IN_PLT+${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 = .);}}
|
||||
${IREL_IN_PLT+${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rela_iplt_start = .);}}}
|
||||
${IREL_IN_PLT+${RELOCATING+*(.rela.iplt)}}
|
||||
${IREL_IN_PLT+${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rela_iplt_end = .);}}}
|
||||
}
|
||||
${OTHER_PLT_RELOC_SECTIONS}
|
||||
EOF
|
||||
|
Loading…
x
Reference in New Issue
Block a user