Blame ld/emulparams/elf32_tic6x_le.sh

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