diff options
-rw-r--r-- | ld/ChangeLog | 9 | ||||
-rw-r--r-- | ld/emulparams/elf32_x86_64.sh | 1 | ||||
-rw-r--r-- | ld/emulparams/elf_k1om.sh | 1 | ||||
-rw-r--r-- | ld/emulparams/elf_l1om.sh | 1 | ||||
-rw-r--r-- | ld/emulparams/elf_x86_64.sh | 1 | ||||
-rw-r--r-- | ld/scripttempl/elf.sc | 5 |
6 files changed, 16 insertions, 2 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 67788df..5ae45a7 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,12 @@ +2013-01-09 Alan Modra <amodra@gmail.com> + + * emulparams/elf_x86_64.sh (LARGE_BSS_AFTER_BSS): Define. + * emulparams/elf32_x86_64.sh: Likewise. + * emulparams/elf_k1om.sh: Likewise. + * emulparams/elf_l1om.sh: Likewise. + * scripttempl/elf.sc (LARGE_BSS): Define rather than appending to + OTHER_BSS_SECTIONS. Substitute in script. + 2013-01-08 Leif Ekblad <leif@rdos.net> * scripttempl/elf.sc (RODATA_ADDR): Typo fix. diff --git a/ld/emulparams/elf32_x86_64.sh b/ld/emulparams/elf32_x86_64.sh index bc77c85..d34297b 100644 --- a/ld/emulparams/elf32_x86_64.sh +++ b/ld/emulparams/elf32_x86_64.sh @@ -13,6 +13,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes LARGE_SECTIONS=yes +LARGE_BSS_AFTER_BSS= SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" IREL_IN_PLT= diff --git a/ld/emulparams/elf_k1om.sh b/ld/emulparams/elf_k1om.sh index e77b2b0..a5351e0 100644 --- a/ld/emulparams/elf_k1om.sh +++ b/ld/emulparams/elf_k1om.sh @@ -14,6 +14,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes LARGE_SECTIONS=yes +LARGE_BSS_AFTER_BSS= SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" if [ "x${host}" = "x${target}" ]; then diff --git a/ld/emulparams/elf_l1om.sh b/ld/emulparams/elf_l1om.sh index 624f4b3..a090d21 100644 --- a/ld/emulparams/elf_l1om.sh +++ b/ld/emulparams/elf_l1om.sh @@ -14,6 +14,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes LARGE_SECTIONS=yes +LARGE_BSS_AFTER_BSS= SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" if [ "x${host}" = "x${target}" ]; then diff --git a/ld/emulparams/elf_x86_64.sh b/ld/emulparams/elf_x86_64.sh index f1b60cb..ae849e0 100644 --- a/ld/emulparams/elf_x86_64.sh +++ b/ld/emulparams/elf_x86_64.sh @@ -13,6 +13,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes LARGE_SECTIONS=yes +LARGE_BSS_AFTER_BSS= SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" IREL_IN_PLT= diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index 7b390b4..cf3f6d8 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -213,8 +213,7 @@ test "${LARGE_SECTIONS}" = "yes" && REL_LARGE=" .rela.lbss ${RELOCATING-0} : { *(.rela.lbss${RELOCATING+ .rela.lbss.* .rela.gnu.linkonce.lb.*}) } .rel.lrodata ${RELOCATING-0} : { *(.rel.lrodata${RELOCATING+ .rel.lrodata.* .rel.gnu.linkonce.lr.*}) } .rela.lrodata ${RELOCATING-0} : { *(.rela.lrodata${RELOCATING+ .rela.lrodata.* .rela.gnu.linkonce.lr.*}) }" -test "${LARGE_SECTIONS}" = "yes" && OTHER_BSS_SECTIONS=" - ${OTHER_BSS_SECTIONS} +test "${LARGE_SECTIONS}" = "yes" && LARGE_BSS=" .lbss ${RELOCATING-0} : { *(.dynlbss) @@ -606,9 +605,11 @@ cat <<EOF ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);} } ${OTHER_BSS_SECTIONS} + ${LARGE_BSS_AFTER_BSS+${LARGE_BSS}} ${RELOCATING+${OTHER_BSS_END_SYMBOLS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} ${LARGE_SECTIONS} + ${LARGE_BSS_AFTER_BSS-${LARGE_BSS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} ${RELOCATING+${OTHER_END_SYMBOLS}} ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}} |