OUTPUT_FORMAT("elf32-lm32") ENTRY(_start) __DYNAMIC = 0; MEMORY { flash : ORIGIN = 0x00860000, LENGTH = 0x20000 /* 128K */ sram : ORIGIN = 0x10000000, LENGTH = 0x01000 /* 4K */ } SECTIONS { .text : { _ftext = .; *(.text .stub .text.* .gnu.linkonce.t.*) _etext = .; } > flash .rodata : { . = ALIGN(4); _frodata = .; *(.rodata .rodata.* .gnu.linkonce.r.*) *(.rodata1) _erodata = .; } > flash /* We shouldn't have a .data section, but the GNU crapchain whines if we don't */ .data : { . = ALIGN(4); _fdata = .; *(.data .data.* .gnu.linkonce.d.*) *(.data1) _gp = ALIGN(16); *(.sdata .sdata.* .gnu.linkonce.s.*) _edata = .; } > flash .bss : { . = ALIGN(4); _fbss = .; *(.dynsbss) *(.sbss .sbss.* .gnu.linkonce.sb.*) *(.scommon) *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) . = ALIGN(4); _ebss = .; _end = .; } > sram } PROVIDE(_fstack = ORIGIN(sram) + LENGTH(sram) - 4);