1OUTPUT_FORMAT("elf32-xstormy16", "elf32-xstormy16", 2 "elf32-xstormy16") 3OUTPUT_ARCH(xstormy16) 4ENTRY(_start) 5GROUP(-lc -leva_app -lgcc) 6 7MEMORY 8{ 9 RAM (w) : ORIGIN = 0x9000, LENGTH = 0x7000 10 ROM (!w) : ORIGIN = 0x10000, LENGTH = 0x70000 11} 12 13SECTIONS 14{ 15 __stack = 2 ; 16 __malloc_start = 0x800; 17 .data : 18 { 19 __rdata = .; 20 __data = .; 21 *(.data) 22 *(.data.*) 23 *(.gnu.linkonce.d.*) 24 SORT(CONSTRUCTORS) 25 } > RAM 26 /* Read-only sections */ 27 .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) } > RAM 28 .ctors : 29 { 30 /* gcc uses crtbegin.o to find the start of 31 the constructors, so we make sure it is 32 first. Because this is a wildcard, it 33 doesn't matter if the user does not 34 actually link against crtbegin.o; the 35 linker won't look for a file to match a 36 wildcard. The wildcard also means that it 37 doesn't matter which directory crtbegin.o 38 is in. */ 39 KEEP (*crtbegin.o(.ctors)) 40 /* We don't want to include the .ctor section from 41 from the crtend.o file until after the sorted ctors. 42 The .ctor section from the crtend file contains the 43 end of ctors marker and it must be last */ 44 KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) 45 KEEP (*(SORT(.ctors.*))) 46 KEEP (*(.ctors)) 47 } > RAM 48 .dtors : 49 { 50 KEEP (*crtbegin.o(.dtors)) 51 KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) 52 KEEP (*(SORT(.dtors.*))) 53 KEEP (*(.dtors)) 54 } > RAM 55 .eh_frame : { KEEP (*(.eh_frame)) } > RAM 56 .gcc_except_table : { *(.gcc_except_table) } > RAM 57 .jcr : { *(.jcr) } > RAM 58 .plt : { *(.plt) } > RAM 59 _edata = .; 60 PROVIDE (edata = .); 61 __bss_start = .; 62 .bss : 63 { 64 *(.dynbss) 65 *(.bss) 66 *(.bss.*) 67 *(.gnu.linkonce.b.*) 68 *(COMMON) 69 /* Align here to ensure that the .bss section occupies space up to 70 _end. Align after .bss to ensure correct alignment even if the 71 .bss section disappears because there are no input sections. */ 72 . = ALIGN(2); 73 } > RAM 74 . = ALIGN(2); 75 _end = .; 76 PROVIDE (end = .); 77 .text : 78 { 79 *(.int_vec) 80 *(.text) 81 *(.text.*) 82 *(.stub) 83 /* .gnu.warning sections are handled specially by elf32.em. */ 84 *(.gnu.warning) 85 *(.gnu.linkonce.t.*) 86 } > ROM =0 87 .init : 88 { 89 KEEP (*(.init)) 90 } > ROM =0 91 .fini : 92 { 93 KEEP (*(.fini)) 94 } > ROM =0 95 PROVIDE (__etext = .); 96 PROVIDE (_etext = .); 97 PROVIDE (etext = .); 98 /* Stabs debugging sections. */ 99 .stab 0 : { *(.stab) } 100 .stabstr 0 : { *(.stabstr) } 101 .stab.excl 0 : { *(.stab.excl) } 102 .stab.exclstr 0 : { *(.stab.exclstr) } 103 .stab.index 0 : { *(.stab.index) } 104 .stab.indexstr 0 : { *(.stab.indexstr) } 105 .comment 0 : { *(.comment) } 106 /* DWARF debug sections. 107 Symbols in the DWARF debugging sections are relative to the beginning 108 of the section so we begin them at 0. */ 109 /* DWARF 1 */ 110 .debug 0 : { *(.debug) } 111 .line 0 : { *(.line) } 112 /* GNU DWARF 1 extensions */ 113 .debug_srcinfo 0 : { *(.debug_srcinfo) } 114 .debug_sfnames 0 : { *(.debug_sfnames) } 115 /* DWARF 1.1 and DWARF 2 */ 116 .debug_aranges 0 : { *(.debug_aranges) } 117 .debug_pubnames 0 : { *(.debug_pubnames) } 118 /* DWARF 2 */ 119 .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } 120 .debug_abbrev 0 : { *(.debug_abbrev) } 121 .debug_line 0 : { *(.debug_line) } 122 .debug_frame 0 : { *(.debug_frame) } 123 .debug_str 0 : { *(.debug_str) } 124 .debug_loc 0 : { *(.debug_loc) } 125 .debug_macinfo 0 : { *(.debug_macinfo) } 126 /* SGI/MIPS DWARF 2 extensions */ 127 .debug_weaknames 0 : { *(.debug_weaknames) } 128 .debug_funcnames 0 : { *(.debug_funcnames) } 129 .debug_typenames 0 : { *(.debug_typenames) } 130 .debug_varnames 0 : { *(.debug_varnames) } 131 /* These must appear regardless of . */ 132} 133