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(${ARCH}) 14ENTRY("_start") 15 16MEMORY 17{ 18 /* 0xc4 is a magic entry. We should have the linker just 19 skip over it one day... */ 20 vectors : o = 0x0000, l = 0xc4 21 magicvectors : o = 0xc4, l = 0x3c 22 ram : o = 0x0100, l = 0xfdfc 23 /* The stack starts at the top of main ram. */ 24 topram : o = 0xfefc, l = 0x4 25 /* At the very top of the address space is the 8-bit area. */ 26 eight : o = 0xff00, l = 0x100 27} 28 29SECTIONS 30{ 31.vectors : 32 { 33 /* Use something like this to place a specific 34 function's address into the vector table. 35 36 SHORT (ABSOLUTE (_foobar)). */ 37 38 *(.vectors) 39 } ${RELOCATING+ > vectors} 40 41.init : 42 { 43 *(.init) 44 } ${RELOCATING+ > ram} 45 46.text : 47 { 48 *(.rodata) 49 *(.text) 50 *(.text.*) 51 *(.strings) 52 ${RELOCATING+ _etext = . ; } 53 } ${RELOCATING+ > ram} 54 55${CONSTRUCTING+${TORS}} 56 57.data : 58 { 59 *(.data) 60 *(.data.*) 61 *(.tiny) 62 ${RELOCATING+ _edata = . ; } 63 } ${RELOCATING+ > ram} 64 65.bss : 66 { 67 ${RELOCATING+ _bss_start = . ;} 68 *(.bss) 69 *(COMMON) 70 ${RELOCATING+ _end = . ; } 71 } ${RELOCATING+ >ram} 72 73.stack : 74 { 75 ${RELOCATING+ _stack = . ; } 76 *(.stack) 77 } ${RELOCATING+ > topram} 78 79.eight : 80 { 81 *(.eight) 82 } ${RELOCATING+ > eight} 83 84.stab 0 ${RELOCATING+(NOLOAD)} : 85 { 86 [ .stab ] 87 } 88 89.stabstr 0 ${RELOCATING+(NOLOAD)} : 90 { 91 [ .stabstr ] 92 } 93} 94EOF 95