OUTPUT_ARCH(riscv) /* required to correctly link newlib */ GROUP( -lc -lgloss -lgcc -lsupc++ ) SEARCH_DIR(.) __DYNAMIC = 0; MEMORY { rom : ORIGIN = 0x00000000, LENGTH = 0xC000 /* 48 kB */ stack : ORIGIN = 0x0000C000, LENGTH = 0x4000 /* 16 kB */ } /* Stack information variables */ _min_stack = 0x2000; /* 8K - minimum stack space to reserve */ _stack_len = LENGTH(stack); _stack_start = ORIGIN(stack) + LENGTH(stack); /* We have to align each sector to word boundaries as our current s19->slm * conversion scripts are not able to handle non-word aligned sections. */ SECTIONS { .vectors : { . = ALIGN(4); KEEP(*(.vectors)) } > rom .text : { . = ALIGN(4); _stext = .; *(.text) *(.text.*) _etext = .; __CTOR_LIST__ = .; LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) *(.ctors) LONG(0) __CTOR_END__ = .; __DTOR_LIST__ = .; LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) *(.dtors) LONG(0) __DTOR_END__ = .; *(.lit) *(.shdata) . = ALIGN(4); _endtext = .; } > rom .rodata : { . = ALIGN(4); *(.rodata); *(.rodata.*) } > rom .shbss : { . = ALIGN(4); *(.shbss) } > rom .data : { . = ALIGN(4); sdata = .; _sdata = .; *(.data); *(.data.*) edata = .; _edata = .; } > rom .bss : { . = ALIGN(4); _bss_start = .; *(.bss) *(.bss.*) *(.sbss) *(.sbss.*) *(COMMON) _bss_end = .; } > rom /* ensure there is enough room for stack */ .stack (NOLOAD): { . = ALIGN(4); . = . + _min_stack ; . = ALIGN(4); stack = . ; _stack = . ; } > stack .stab 0 (NOLOAD) : { [ .stab ] } .stabstr 0 (NOLOAD) : { [ .stabstr ] } }