ELF ld -r scripts
"ld -r" generally should not combine object file sections with
different names. For example, "ld -r" should not combine ".text",
".text.hot" and ".text.cold" into an output ".text" section. An
exception needs to be made for linker created sections, for example,
branch trampoline sections that might be created even for ld -r.
"ld -r" also should not define symbols in linker scripts. Any
definitions are likely to conflict with those defined at final link.
A MEMORY spec is also not needed for ld -r.
* Makefile.am (eelf32btsmip_fbsd.c, eelf32btsmipn32_fbsd.c),
(eelf32epiphany.c, eelf32epiphany_4x4.c, eelf32ltsmip_fbsd.c),
(eelf32ltsmipn32_fbsd.c, eelf32xc16x.c, eelf32xc16xl.c),
(eelf32xc16xs.c, emcorepe.c, enios2elf.c, enios2linux.c),
(eelf64btsmip_fbsd.c, eelf64ltsmip_fbsd.c): Correct dependencies.
* Makefile.in: Regenerate.
* emulparams/aarch64cloudabi.sh, * emulparams/aarch64fbsd.sh,
* emulparams/aarch64linux.sh, * emulparams/aarch64linux32.sh,
* emulparams/arc-nps.sh, * emulparams/elf32_spu.sh,
* emulparams/elf32_tic6x_le.sh, * emulparams/elf32bmip.sh,
* emulparams/elf32btsmipn32.sh, * emulparams/elf32lr5900n32.sh,
* emulparams/elf32mep.sh, * emulparams/elf32metag.sh,
* emulparams/elf64btsmip.sh, * emulparams/shelf_vxworks.sh,
* emulparams/shlelf_fd.sh, * scripttempl/DWARF.sc,
* scripttempl/alpha.sc, * scripttempl/alphavms.sc,
* scripttempl/arclinux.sc, * scripttempl/armbpabi.sc,
* scripttempl/avr.sc, * scripttempl/dlx.sc, * scripttempl/elf.sc,
* scripttempl/elf32cr16.sc, * scripttempl/elf32cr16c.sc,
* scripttempl/elf32crx.sc, * scripttempl/elf32msp430.sc,
* scripttempl/elf32msp430_3.sc, * scripttempl/elf32xc16x.sc,
* scripttempl/elf32xc16xl.sc, * scripttempl/elf32xc16xs.sc,
* scripttempl/elf64hppa.sc, * scripttempl/elf_chaos.sc,
* scripttempl/elfarc.sc, * scripttempl/elfarcv2.sc,
* scripttempl/elfd10v.sc, * scripttempl/elfd30v.sc,
* scripttempl/elfm68hc11.sc, * scripttempl/elfm68hc12.sc,
* scripttempl/elfm9s12z.sc, * scripttempl/elfmicroblaze.sc,
* scripttempl/elfxgate.sc, * scripttempl/elfxtensa.sc,
* scripttempl/epiphany_4x4.sc, * scripttempl/ft32.sc,
* scripttempl/hppaelf.sc, * scripttempl/ia64vms.sc,
* scripttempl/ip2k.sc, * scripttempl/iq2000.sc,
* scripttempl/mep.sc, * scripttempl/mmo.sc,
* scripttempl/nds32elf.sc, * scripttempl/pru.sc,
* scripttempl/sh.sc, * scripttempl/v850.sc,
* scripttempl/v850_rh850.sc, * scripttempl/visium.sc,
* scripttempl/xstormy16.sc: Condition various parts of scripts on
${RELOCATABLE} in order to prevent ld -r merging sections or
defining symbols. Remove MEMORY and VERSION definitions from
ld -r scripts too.
* testsuite/ld-elf/group2.d, * testsuite/ld-elf/group4.d,
* testsuite/ld-elf/group5.d, * testsuite/ld-elf/group6.d,
* testsuite/ld-elf/group7.d, * testsuite/ld-elf/group8a.d,
* testsuite/ld-elf/group8b.d, * testsuite/ld-elf/group9a.d,
* testsuite/ld-elf/group9b.d, * testsuite/ld-elf/pr17550a.d,
* testsuite/ld-elf/pr17550b.d,
* testsuite/ld-elf/pr17550d.d: Don't xfail cr16 and crx.
* testsuite/ld-elf/init-fini-arrays.d,
* testsuite/ld-elf/pr22677.d: Likewise, and dont' xfail mep.
2018-10-12 03:36:40 +02:00
|
|
|
if test -n "${RELOCATING}"; then
|
2016-12-08 17:58:23 +01:00
|
|
|
OTHER_SECTIONS="
|
|
|
|
/* Start of symbols and sections required to support CMEM instructions
|
|
|
|
on NPS targets. */
|
|
|
|
|
|
|
|
PROVIDE (_cmem_start = ADDR (.cmem) );
|
|
|
|
PROVIDE (_cmem_alter_start = ADDR (.cmem_alter) );
|
|
|
|
PROVIDE (_cmem_shared_start = ADDR (.cmem_shared) );
|
|
|
|
PROVIDE (_cmem_shared_alter_start = ADDR (.cmem_shared_alter) );
|
|
|
|
PROVIDE (_fmt_slot0_start = ADDR (.fmt_slot0) );
|
|
|
|
PROVIDE (_fmt_slot1_start = ADDR (.fmt_slot1) );
|
|
|
|
PROVIDE (_fmt_slot2_start = ADDR (.fmt_slot2) );
|
|
|
|
PROVIDE (_fmt_slot3_start = ADDR (.fmt_slot3) );
|
|
|
|
PROVIDE (_fmt_slot4_start = ADDR (.fmt_slot4) );
|
|
|
|
PROVIDE (_fmt_slot5_start = ADDR (.fmt_slot5) );
|
|
|
|
PROVIDE (_fmt_slot6_start = ADDR (.fmt_slot6) );
|
|
|
|
PROVIDE (_fmt_slot7_start = ADDR (.fmt_slot7) );
|
|
|
|
PROVIDE (_fmt_slot8_start = ADDR (.fmt_slot8) );
|
|
|
|
PROVIDE (_fmt_slot9_start = ADDR (.fmt_slot9) );
|
|
|
|
PROVIDE (_fmt_slot10_start = ADDR (.fmt_slot10) );
|
|
|
|
PROVIDE (_fmt_slot11_start = ADDR (.fmt_slot11) );
|
|
|
|
PROVIDE (_fmt_slot12_start = ADDR (.fmt_slot12) );
|
|
|
|
PROVIDE (_fmt_slot13_start = ADDR (.fmt_slot13) );
|
|
|
|
PROVIDE (_fmt_slot14_start = ADDR (.fmt_slot14) );
|
|
|
|
PROVIDE (_fmt_slot15_start = ADDR (.fmt_slot15) );
|
|
|
|
|
|
|
|
PROVIDE (_cmem_end = ADDR (.cmem) + SIZEOF (.cmem) );
|
|
|
|
PROVIDE (_cmem_alter_end = ADDR (.cmem_alter) + SIZEOF (.cmem_alter) );
|
|
|
|
PROVIDE (_cmem_shared_end = ADDR (.cmem_shared) + SIZEOF (.cmem_shared) );
|
|
|
|
PROVIDE (_cmem_shared_alter_end = ADDR (.cmem_shared_alter) + SIZEOF (.cmem_shared_alter) );
|
|
|
|
PROVIDE (_fmt_slot0_end = ADDR (.fmt_slot0) + SIZEOF (.fmt_slot0) );
|
|
|
|
PROVIDE (_fmt_slot1_end = ADDR (.fmt_slot1) + SIZEOF (.fmt_slot1) );
|
|
|
|
PROVIDE (_fmt_slot2_end = ADDR (.fmt_slot2) + SIZEOF (.fmt_slot2) );
|
|
|
|
PROVIDE (_fmt_slot3_end = ADDR (.fmt_slot3) + SIZEOF (.fmt_slot3) );
|
|
|
|
PROVIDE (_fmt_slot4_end = ADDR (.fmt_slot4) + SIZEOF (.fmt_slot4) );
|
|
|
|
PROVIDE (_fmt_slot5_end = ADDR (.fmt_slot5) + SIZEOF (.fmt_slot5) );
|
|
|
|
PROVIDE (_fmt_slot6_end = ADDR (.fmt_slot6) + SIZEOF (.fmt_slot6) );
|
|
|
|
PROVIDE (_fmt_slot7_end = ADDR (.fmt_slot7) + SIZEOF (.fmt_slot7) );
|
|
|
|
PROVIDE (_fmt_slot8_end = ADDR (.fmt_slot8) + SIZEOF (.fmt_slot8) );
|
|
|
|
PROVIDE (_fmt_slot9_end = ADDR (.fmt_slot9) + SIZEOF (.fmt_slot9) );
|
|
|
|
PROVIDE (_fmt_slot10_end = ADDR (.fmt_slot10) + SIZEOF (.fmt_slot10) );
|
|
|
|
PROVIDE (_fmt_slot11_end = ADDR (.fmt_slot11) + SIZEOF (.fmt_slot11) );
|
|
|
|
PROVIDE (_fmt_slot12_end = ADDR (.fmt_slot12) + SIZEOF (.fmt_slot12) );
|
|
|
|
PROVIDE (_fmt_slot13_end = ADDR (.fmt_slot13) + SIZEOF (.fmt_slot13) );
|
|
|
|
PROVIDE (_fmt_slot14_end = ADDR (.fmt_slot14) + SIZEOF (.fmt_slot14) );
|
|
|
|
PROVIDE (_fmt_slot15_end = ADDR (.fmt_slot15) + SIZEOF (.fmt_slot15) );
|
|
|
|
|
|
|
|
OVERLAY 0x57f00000 :
|
|
|
|
{
|
|
|
|
.cmem { *(.cmem) }
|
|
|
|
.cmem_alter { *(.cmem_alter) }
|
|
|
|
}
|
|
|
|
|
|
|
|
OVERLAY 0x57f08000 :
|
|
|
|
{
|
|
|
|
.cmem_shared { *(.cmem_shared) }
|
|
|
|
.cmem_shared_alter { *(.cmem_shared_alter) }
|
|
|
|
}
|
|
|
|
|
|
|
|
.fmt_slot0 0x58000000 : { *(.fmt_slot0) }
|
|
|
|
.fmt_slot1 0x58800000 : { *(.fmt_slot1) }
|
|
|
|
.fmt_slot2 0x59000000 : { *(.fmt_slot2) }
|
|
|
|
.fmt_slot3 0x59800000 : { *(.fmt_slot3) }
|
|
|
|
.fmt_slot4 0x5a000000 : { *(.fmt_slot4) }
|
|
|
|
.fmt_slot5 0x5a800000 : { *(.fmt_slot5) }
|
|
|
|
.fmt_slot6 0x5b000000 : { *(.fmt_slot6) }
|
|
|
|
.fmt_slot7 0x5b800000 : { *(.fmt_slot7) }
|
|
|
|
.fmt_slot8 0x5c000000 : { *(.fmt_slot8) }
|
|
|
|
.fmt_slot9 0x5c800000 : { *(.fmt_slot9) }
|
|
|
|
.fmt_slot10 0x5d000000 : { *(.fmt_slot10) }
|
|
|
|
.fmt_slot11 0x5d800000 : { *(.fmt_slot11) }
|
|
|
|
.fmt_slot12 0x5e000000 : { *(.fmt_slot12) }
|
|
|
|
.fmt_slot13 0x5e800000 : { *(.fmt_slot13) }
|
|
|
|
.fmt_slot14 0x5f000000 : { *(.fmt_slot14) }
|
|
|
|
.fmt_slot15 0x5f800000 : { *(.fmt_slot15) }
|
|
|
|
|
|
|
|
/* End of nps specific sections and symbols. */
|
|
|
|
|
|
|
|
${OTHER_SECTIONS}"
|
ELF ld -r scripts
"ld -r" generally should not combine object file sections with
different names. For example, "ld -r" should not combine ".text",
".text.hot" and ".text.cold" into an output ".text" section. An
exception needs to be made for linker created sections, for example,
branch trampoline sections that might be created even for ld -r.
"ld -r" also should not define symbols in linker scripts. Any
definitions are likely to conflict with those defined at final link.
A MEMORY spec is also not needed for ld -r.
* Makefile.am (eelf32btsmip_fbsd.c, eelf32btsmipn32_fbsd.c),
(eelf32epiphany.c, eelf32epiphany_4x4.c, eelf32ltsmip_fbsd.c),
(eelf32ltsmipn32_fbsd.c, eelf32xc16x.c, eelf32xc16xl.c),
(eelf32xc16xs.c, emcorepe.c, enios2elf.c, enios2linux.c),
(eelf64btsmip_fbsd.c, eelf64ltsmip_fbsd.c): Correct dependencies.
* Makefile.in: Regenerate.
* emulparams/aarch64cloudabi.sh, * emulparams/aarch64fbsd.sh,
* emulparams/aarch64linux.sh, * emulparams/aarch64linux32.sh,
* emulparams/arc-nps.sh, * emulparams/elf32_spu.sh,
* emulparams/elf32_tic6x_le.sh, * emulparams/elf32bmip.sh,
* emulparams/elf32btsmipn32.sh, * emulparams/elf32lr5900n32.sh,
* emulparams/elf32mep.sh, * emulparams/elf32metag.sh,
* emulparams/elf64btsmip.sh, * emulparams/shelf_vxworks.sh,
* emulparams/shlelf_fd.sh, * scripttempl/DWARF.sc,
* scripttempl/alpha.sc, * scripttempl/alphavms.sc,
* scripttempl/arclinux.sc, * scripttempl/armbpabi.sc,
* scripttempl/avr.sc, * scripttempl/dlx.sc, * scripttempl/elf.sc,
* scripttempl/elf32cr16.sc, * scripttempl/elf32cr16c.sc,
* scripttempl/elf32crx.sc, * scripttempl/elf32msp430.sc,
* scripttempl/elf32msp430_3.sc, * scripttempl/elf32xc16x.sc,
* scripttempl/elf32xc16xl.sc, * scripttempl/elf32xc16xs.sc,
* scripttempl/elf64hppa.sc, * scripttempl/elf_chaos.sc,
* scripttempl/elfarc.sc, * scripttempl/elfarcv2.sc,
* scripttempl/elfd10v.sc, * scripttempl/elfd30v.sc,
* scripttempl/elfm68hc11.sc, * scripttempl/elfm68hc12.sc,
* scripttempl/elfm9s12z.sc, * scripttempl/elfmicroblaze.sc,
* scripttempl/elfxgate.sc, * scripttempl/elfxtensa.sc,
* scripttempl/epiphany_4x4.sc, * scripttempl/ft32.sc,
* scripttempl/hppaelf.sc, * scripttempl/ia64vms.sc,
* scripttempl/ip2k.sc, * scripttempl/iq2000.sc,
* scripttempl/mep.sc, * scripttempl/mmo.sc,
* scripttempl/nds32elf.sc, * scripttempl/pru.sc,
* scripttempl/sh.sc, * scripttempl/v850.sc,
* scripttempl/v850_rh850.sc, * scripttempl/visium.sc,
* scripttempl/xstormy16.sc: Condition various parts of scripts on
${RELOCATABLE} in order to prevent ld -r merging sections or
defining symbols. Remove MEMORY and VERSION definitions from
ld -r scripts too.
* testsuite/ld-elf/group2.d, * testsuite/ld-elf/group4.d,
* testsuite/ld-elf/group5.d, * testsuite/ld-elf/group6.d,
* testsuite/ld-elf/group7.d, * testsuite/ld-elf/group8a.d,
* testsuite/ld-elf/group8b.d, * testsuite/ld-elf/group9a.d,
* testsuite/ld-elf/group9b.d, * testsuite/ld-elf/pr17550a.d,
* testsuite/ld-elf/pr17550b.d,
* testsuite/ld-elf/pr17550d.d: Don't xfail cr16 and crx.
* testsuite/ld-elf/init-fini-arrays.d,
* testsuite/ld-elf/pr22677.d: Likewise, and dont' xfail mep.
2018-10-12 03:36:40 +02:00
|
|
|
fi
|