1# Linker script for TI TMS320C80 (tic80) COFF. 2# 3# Besides the shell variables set by the emulparams script, and the LD_FLAG 4# variable, the genscripts.sh script will set the following variables for each 5# time this script is run to generate one of the linker scripts for ldscripts: 6# 7# RELOCATING: Set to a non-empty string when the linker is going to be doing 8# a final relocation. 9# 10# CONSTRUCTING: Set to a non-empty string when the linker is going to be 11# building global constructor and destructor tables. 12# 13# DATA_ALIGNMENT: Set to an ALIGN expression when the output should be page 14# aligned, or to "." when generating the -N script. 15# 16# CREATE_SHLIB: Set to a non-empty string when generating a script for 17# the -shared linker arg. 18 19test -z "$TEXT_START_ADDR" && TEXT_START_ADDR="0x80000 + SIZEOF_HEADERS" 20test -z "$ENTRY" && ENTRY=__start 21 22cat <<EOF 23OUTPUT_FORMAT("${OUTPUT_FORMAT}") 24${LIB_SEARCH_DIRS} 25 26ENTRY(${ENTRY}) 27 28SECTIONS 29{ 30 .text ${RELOCATING+ $TEXT_START_ADDR} : { 31 *(.init) 32 *(.fini) 33 *(.text) 34 } 35 .const ALIGN(4) : { 36 *(.const) 37 } 38 .ctors ALIGN(4) : { 39 ${CONSTRUCTING+ . = ALIGN(4);} 40 ${CONSTRUCTING+ ___CTOR_LIST__ = .;} 41 ${CONSTRUCTING+ LONG(-1)} 42 *(.ctors) 43 ${CONSTRUCTING+ ___CTOR_END__ = .;} 44 ${CONSTRUCTING+ LONG(0)} 45 } 46 .dtors ALIGN(4) : { 47 ${CONSTRUCTING+ ___DTOR_LIST__ = .;} 48 ${CONSTRUCTING+ LONG(-1)} 49 ${CONSTRUCTING+ *(.dtors)} 50 ${CONSTRUCTING+ ___DTOR_END__ = .;} 51 ${CONSTRUCTING+ LONG(0)} 52 } 53 ${RELOCATING+ etext = .;} 54 .data : { 55 *(.data) 56 ${RELOCATING+ __edata = .}; 57 } 58 .bss : { 59 ${RELOCATING+ __bss_start = .}; 60 *(.bss) 61 *(COMMON) 62 ${RELOCATING+ _end = ALIGN(0x8)}; 63 ${RELOCATING+ __end = ALIGN(0x8)}; 64 } 65 .stab 0 ${RELOCATING+(NOLOAD)} : 66 { 67 [ .stab ] 68 } 69 .stabstr 0 ${RELOCATING+(NOLOAD)} : 70 { 71 [ .stabstr ] 72 } 73} 74EOF 75