1TORS=".tors : 2 { 3 ___ctors = . ; 4 *(.ctors) 5 ___ctors_end = . ; 6 ___dtors = . ; 7 *(.dtors) 8 ___dtors_end = . ; 9 } > ram" 10 11cat <<EOF 12OUTPUT_FORMAT("${OUTPUT_FORMAT}") 13OUTPUT_ARCH(h8300h) 14ENTRY("_start") 15 16/* The memory size is 256KB to coincide with the simulator. 17 Don't change either without considering the other. */ 18 19MEMORY 20{ 21 /* 0xc4 is a magic entry. We should have the linker just 22 skip over it one day... */ 23 vectors : o = 0x0000, l = 0xc4 24 magicvectors : o = 0xc4, l = 0x3c 25 /* We still only use 256k as the main ram size. */ 26 ram : o = 0x0100, l = 0x3fefc 27 /* The stack starts at the top of main ram. */ 28 topram : o = 0x3fffc, l = 0x4 29 /* This holds variables in the "tiny" sections. */ 30 tiny : o = 0xff8000, l = 0x7f00 31 /* At the very top of the address space is the 8-bit area. */ 32 eight : o = 0xffff00, l = 0x100 33} 34 35SECTIONS 36{ 37.vectors : 38 { 39 /* Use something like this to place a specific 40 function's address into the vector table. 41 42 LONG (ABSOLUTE (_foobar)). */ 43 44 *(.vectors) 45 } ${RELOCATING+ > vectors} 46 47.text : 48 { 49 *(.rodata) 50 *(.text) 51 *(.strings) 52 ${RELOCATING+ _etext = . ; } 53 } ${RELOCATING+ > ram} 54 55${CONSTRUCTING+${TORS}} 56 57.data : 58 { 59 *(.data) 60 ${RELOCATING+ _edata = . ; } 61 } ${RELOCATING+ > ram} 62 63.bss : 64 { 65 ${RELOCATING+ _bss_start = . ;} 66 *(.bss) 67 *(COMMON) 68 ${RELOCATING+ _end = . ; } 69 } ${RELOCATING+ >ram} 70 71.stack : 72 { 73 ${RELOCATING+ _stack = . ; } 74 *(.stack) 75 } ${RELOCATING+ > topram} 76 77.tiny : 78 { 79 *(.tiny) 80 } ${RELOCATING+ > tiny} 81 82.eight : 83 { 84 *(.eight) 85 } ${RELOCATING+ > eight} 86 87.stab 0 ${RELOCATING+(NOLOAD)} : 88 { 89 [ .stab ] 90 } 91 92.stabstr 0 ${RELOCATING+(NOLOAD)} : 93 { 94 [ .stabstr ] 95 } 96} 97EOF 98