mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
0d8fb090a7
.branch_lt is really an extension of .plt, as is .iplt. We'd like all of the PLT sections to be fixed relative to .TOC. after stub sizing, because changes in offset to PLT entries might mean a change in stub sizes. When -z relro, the relro layout does this by laying out sections from the end of the relro segment. So for example, a change in .eh_frame (which happens after stub sizing) will keep the same GOT to PLT offset when -z relro. Not so when -z norelro, because then the usual forward layout of section is done and .got is more aligned than .branch_lt. * emulparams/elf64ppc.sh: Set .branch_lt address fixed relative to .got. * testsuite/ld-powerpc/elfv2exe.d: Adjust to suit.
52 lines
1.7 KiB
Bash
52 lines
1.7 KiB
Bash
source_sh ${srcdir}/emulparams/elf32ppccommon.sh
|
|
source_sh ${srcdir}/emulparams/plt_unwind.sh
|
|
source_sh ${srcdir}/emulparams/dt-relr.sh
|
|
EXTRA_EM_FILE=ppc64elf
|
|
ELFSIZE=64
|
|
OUTPUT_FORMAT="elf64-powerpc"
|
|
TEXT_START_ADDR=0x10000000
|
|
#SEGMENT_SIZE=0x10000000
|
|
ARCH=powerpc:common64
|
|
unset EXECUTABLE_SYMBOLS
|
|
unset SDATA_START_SYMBOLS
|
|
unset SDATA2_START_SYMBOLS
|
|
unset SBSS_START_SYMBOLS
|
|
unset SBSS_END_SYMBOLS
|
|
unset OTHER_END_SYMBOLS
|
|
unset OTHER_RELRO_SECTIONS
|
|
OTHER_TEXT_SECTIONS="*(.sfpr .glink)"
|
|
OTHER_SDATA_SECTIONS="
|
|
.tocbss ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.tocbss)}"
|
|
|
|
if test x${RELOCATING+set} = xset; then
|
|
GOT="
|
|
.got : ALIGN(256) { *(.got .toc) }"
|
|
else
|
|
GOT="
|
|
.got 0 : { *(.got) }
|
|
.toc 0 : { *(.toc) }"
|
|
fi
|
|
# Put .opd relocs first so ld.so will process them before any ifunc relocs.
|
|
INITIAL_RELOC_SECTIONS="
|
|
.rela.opd ${RELOCATING-0} : { *(.rela.opd) }"
|
|
OTHER_GOT_RELOC_SECTIONS="
|
|
.rela.toc ${RELOCATING-0} : { *(.rela.toc) }
|
|
.rela.toc1 ${RELOCATING-0} : { *(.rela.toc1) }
|
|
.rela.tocbss ${RELOCATING-0} : { *(.rela.tocbss) }
|
|
.rela.branch_lt ${RELOCATING-0} : { *(.rela.branch_lt) }"
|
|
OTHER_RELRO_SECTIONS_2="
|
|
.opd ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { KEEP (*(.opd)) }
|
|
.toc1 ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.toc1) }
|
|
.branch_lt ${RELOCATING-0}${RELOCATING+(SIZEOF(.got) != 0 ? . + 255 - (255 & (. - 1 + ALIGN(SIZEOF(.branch_lt),8)${RELRO_NOW+ + ALIGN(SIZEOF(.plt),8) + ALIGN(SIZEOF(.iplt),8)})) : ALIGN(8))} : { *(.branch_lt) }"
|
|
INITIAL_READWRITE_SECTIONS="
|
|
.toc ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.toc) }"
|
|
# Put .got before .data
|
|
DATA_GOT=" "
|
|
# Always make .got read-only after relocation
|
|
SEPARATE_GOTPLT=0
|
|
# Also put .sdata before .data
|
|
DATA_SDATA=" "
|
|
# and .plt/.iplt before .data
|
|
DATA_PLT=
|
|
PLT_BEFORE_GOT=" "
|