binutils-gdb/ld/emulparams/elf32_tic6x_le.sh
Alan Modra 2bf2bf23da 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-13 20:33:23 +10:30

70 lines
2.3 KiB
Bash

SCRIPT_NAME=elf
TEMPLATE_NAME=elf32
OUTPUT_FORMAT="elf32-tic6x-le"
BIG_OUTPUT_FORMAT="elf32-tic6x-be"
EXTRA_EM_FILE=tic6xdsbt
GENERATE_SHLIB_SCRIPT=yes
# This address is an arbitrary value expected to be suitable for
# semihosting simulator use, but not on hardware where it is expected
# to be overridden.
case ${target} in
*-elf)
TEXT_START_ADDR=0x8000
;;
*-uclinux)
TEXT_START_ADDR=0x0
GOT="
.got ${RELOCATING-0} : {
${RELOCATING+*(.dsbt)
*(.got.plt) *(.igot.plt) }*(.got)${RELOCATING+ *(.igot)}
}"
;;
esac
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
ARCH=tic6x
OTHER_GOT_SYMBOLS="PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);"
# ".bss" is near (small) BSS, ".far" is far (normal) BSS, ".const" is
# far read-only data, ".rodata" is near read-only data. ".neardata"
# is near (small) data, ".fardata" is (along with .data) far data.
RODATA_NAME="const"
SDATA_NAME="neardata"
SBSS_NAME="bss"
BSS_NAME="far"
OTHER_READONLY_SECTIONS="
.c6xabi.extab ${RELOCATING-0} : { *(.c6xabi.extab${RELOCATING+* .gnu.linkonce.c6xabiextab.*}) }
${RELOCATING+ PROVIDE_HIDDEN (__exidx_start = .); }
.c6xabi.exidx ${RELOCATING-0} : { *(.c6xabi.exidx${RELOCATING+* .gnu.linkonce.c6xabiexidx.*}) }
${RELOCATING+ PROVIDE_HIDDEN (__exidx_end = .); }"
OTHER_SDATA_SECTIONS=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.*}) }"
OTHER_READONLY_RELOC_SECTIONS="
.rel.rodata ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.*}) }
.rela.rodata ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.*}) }"
OTHER_READWRITE_SECTIONS=".fardata ${RELOCATING-0} : { *(.fardata${RELOCATING+ .fardata.*}) }"
OTHER_READWRITE_RELOC_SECTIONS="
.rel.fardata ${RELOCATING-0} : { *(.rel.fardata${RELOCATING+ .rel.fardata.*}) }
.rela.fardata ${RELOCATING-0} : { *(.rela.fardata${RELOCATING+ .rela.fardata.*}) }"
# For relocating operation, skip OTHER_BSS_SECTIONS, or will cause multiple definition.
if [ ${RELOCATING-0} ]; then
OTHER_BSS_SECTIONS="";
else
case ${target} in
*-elf)
OTHER_BSS_SECTIONS="
.heap :
{
. = ALIGN(4);
_HEAP_START = .;
. += 0x2000000;
_HEAP_MAX = .;
}
.stack :
{
. += 0x100000;
_STACK_START = .;
}"
;;
esac
fi
ATTRS_SECTIONS='.c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) }'