From 5ad18f16abf3555582782a86cc1daa751ea8b9b8 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 20 Jan 2015 21:11:37 +1030 Subject: [PATCH 1/1] Reorder more powerpc64 sections again for -z relro .toc1 is the second level TOC section used by gcc's -mminimal-toc. It too should be read-only after relocation. Also, the last patch description mentioned .sbss moving but didn't actually do that, so fix that problem. .tocbss (whatever that is) was before .sbss previously, so move that one too. * emulparams/elf64ppc.sh (OTHER_SDATA_SECTIONS): Use in place of.. (OTHER_BSS_SYMBOLS): ..this. (OTHER_PLT_RELOC_SECTIONS): Don't define. (OTHER_GOT_RELOC_SECTIONS): Add rela.toc1 and rela.tocbss. (OTHER_READWRITE_SECTIONS): Don't define. Move .toc1 to.. (OTHER_RELRO_SECTIONS_2): ..here. * scripttempl/elf.sc: Move SBSS too when DATA_SDATA. --- ld/ChangeLog | 10 ++++++++++ ld/emulparams/elf64ppc.sh | 9 ++++----- ld/scripttempl/elf.sc | 3 ++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 4641ff06c8..5a97e32c64 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -5,6 +5,16 @@ Display a special message for PROVIDE'd symbols that are not being provided. +2015-01-20 Alan Modra + + * emulparams/elf64ppc.sh (OTHER_SDATA_SECTIONS): Use in place of.. + (OTHER_BSS_SYMBOLS): ..this. + (OTHER_PLT_RELOC_SECTIONS): Don't define. + (OTHER_GOT_RELOC_SECTIONS): Add rela.toc1 and rela.tocbss. + (OTHER_READWRITE_SECTIONS): Don't define. Move .toc1 to.. + (OTHER_RELRO_SECTIONS_2): ..here. + * scripttempl/elf.sc: Move SBSS too when DATA_SDATA. + 2015-01-20 Alan Modra * emulparams/elf64ppc.sh (BSS_PLT): Don't define. diff --git a/ld/emulparams/elf64ppc.sh b/ld/emulparams/elf64ppc.sh index 89fc699baf..b805dbed93 100644 --- a/ld/emulparams/elf64ppc.sh +++ b/ld/emulparams/elf64ppc.sh @@ -15,10 +15,8 @@ unset SBSS_END_SYMBOLS unset OTHER_END_SYMBOLS unset OTHER_RELRO_SECTIONS OTHER_TEXT_SECTIONS="*(.sfpr .glink)" -OTHER_BSS_SYMBOLS=" +OTHER_SDATA_SECTIONS=" .tocbss ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.tocbss)}" -OTHER_PLT_RELOC_SECTIONS=" - .rela.tocbss ${RELOCATING-0} : { *(.rela.tocbss) }" if test x${RELOCATING+set} = xset; then GOT=" @@ -33,11 +31,12 @@ 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_READWRITE_SECTIONS=" - .toc1 ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.toc1) }" OTHER_RELRO_SECTIONS_2=" .opd ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { KEEP (*(.opd)) } + .toc1 ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.toc1) } .branch_lt ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.branch_lt) }" # Put .got before .data DATA_GOT=" " diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index eb3312a452..c9c80b0cc3 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -582,6 +582,7 @@ cat <