1SCRIPT_NAME=elf 2TEMPLATE_NAME=elf 3OUTPUT_FORMAT="elf32-tic6x-le" 4BIG_OUTPUT_FORMAT="elf32-tic6x-be" 5EXTRA_EM_FILE=tic6xdsbt 6GENERATE_SHLIB_SCRIPT=yes 7# This address is an arbitrary value expected to be suitable for 8# semihosting simulator use, but not on hardware where it is expected 9# to be overridden. 10case ${target} in 11 *-elf) 12 TEXT_START_ADDR=0x8000 13 ;; 14 *-uclinux) 15 TEXT_START_ADDR=0x0 16 GOT=" 17.got ${RELOCATING-0} : { 18 ${RELOCATING+*(.dsbt) 19 *(.got.plt) *(.igot.plt) }*(.got)${RELOCATING+ *(.igot)} 20}" 21 ;; 22esac 23MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" 24ARCH=tic6x 25OTHER_GOT_SYMBOLS="PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);" 26# ".bss" is near (small) BSS, ".far" is far (normal) BSS, ".const" is 27# far read-only data, ".rodata" is near read-only data. ".neardata" 28# is near (small) data, ".fardata" is (along with .data) far data. 29RODATA_NAME="const" 30SDATA_NAME="neardata" 31SBSS_NAME="bss" 32BSS_NAME="far" 33OTHER_READONLY_SECTIONS=" 34 .c6xabi.extab ${RELOCATING-0} : { *(.c6xabi.extab${RELOCATING+* .gnu.linkonce.c6xabiextab.*}) } 35 .c6xabi.exidx ${RELOCATING-0} : 36 { 37 ${RELOCATING+PROVIDE_HIDDEN (__exidx_start = .);} 38 *(.c6xabi.exidx${RELOCATING+* .gnu.linkonce.c6xabiexidx.*}) 39 ${RELOCATING+PROVIDE_HIDDEN (__exidx_end = .);} 40 }" 41OTHER_SDATA_SECTIONS=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.*}) }" 42OTHER_READONLY_RELOC_SECTIONS=" 43 .rel.rodata ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.*}) } 44 .rela.rodata ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.*}) }" 45OTHER_READWRITE_SECTIONS=".fardata ${RELOCATING-0} : { *(.fardata${RELOCATING+ .fardata.*}) }" 46OTHER_READWRITE_RELOC_SECTIONS=" 47 .rel.fardata ${RELOCATING-0} : { *(.rel.fardata${RELOCATING+ .rel.fardata.*}) } 48 .rela.fardata ${RELOCATING-0} : { *(.rela.fardata${RELOCATING+ .rela.fardata.*}) }" 49# For relocating operation, skip OTHER_BSS_SECTIONS, or will cause multiple definition. 50if [ ${RELOCATING-0} ]; then 51 OTHER_BSS_SECTIONS=""; 52else 53 case ${target} in 54 55 *-elf) 56 OTHER_BSS_SECTIONS=" 57 .heap : 58 { 59 . = ALIGN(4); 60 _HEAP_START = .; 61 . += 0x2000000; 62 _HEAP_MAX = .; 63 } 64 .stack : 65 { 66 . += 0x100000; 67 _STACK_START = .; 68 }" 69 ;; 70 esac 71fi 72ATTRS_SECTIONS='.c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) }' 73