OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) STACK_UND_SIZE = 0x10000; STACK_ABT_SIZE = 0x10000; STACK_IRQ_SIZE = 0x10000; STACK_FIQ_SIZE = 0x10000; STACK_SRV_SIZE = 0x40000; MEMORY { ram : org = 0x80000000, len = 8M heap : org = 0x81000000, len = 16M } SECTIONS { .bootloader : { PROVIDE(__bootloader_start = .); PROVIDE(__image_start = .); PROVIDE(__text_start = .); _build/*/obj/hw/mcu/allwinner/*/machine/start_asm.o (.text) _build/*/obj/hw/mcu/allwinner/*/lib/memcpy_asm.o (.text) _build/*/obj/hw/mcu/allwinner/*/lib/memset_asm.o (.text) _build/*/obj/hw/mcu/allwinner/*/machine/sys-uart.o (.text*) _build/*/obj/hw/mcu/allwinner/*/machine/sys-clock.o (.text*) _build/*/obj/hw/mcu/allwinner/*/machine/sys-dram.o (.text*) _build/*/obj/hw/mcu/allwinner/*/machine/sys-mmu.o (.text*) _build/*/obj/hw/mcu/allwinner/*/machine/sys-spi-flash.o (.text*) _build/*/obj/hw/mcu/allwinner/*/machine/sys-copyself.o (.text*) PROVIDE(__bootloader_end = .); } > ram __bootloader_size = SIZEOF(.bootloader); .text : { *(.text*) *(.glue*) *(.note.gnu.build-id) PROVIDE(__text_end = .); } > ram .rodata ALIGN(8) : { PROVIDE(__rodata_start = .); *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) PROVIDE(__rodata_end = .); } > ram .data_shadow ALIGN(8) : { PROVIDE(__data_shadow_start = .); PROVIDE(__data_shadow_end = (. + SIZEOF(.data))); PROVIDE(__image_end = __data_shadow_end); } > ram .data : AT(ADDR(.data_shadow)) { PROVIDE(__data_start = .); *(.data*) . = ALIGN(8); PROVIDE(__data_end = .); } > ram .ARM.exidx ALIGN(8) : { PROVIDE (__exidx_start = .); *(.ARM.exidx*) PROVIDE (__exidx_end = .); } > ram .ARM.extab ALIGN(8) : { PROVIDE (__extab_start = .); *(.ARM.extab*) PROVIDE (__extab_end = .); } > ram .bss ALIGN(8) (NOLOAD) : { PROVIDE(__bss_start = .); *(.bss*) *(.sbss*) *(COMMON) . = ALIGN(8); PROVIDE(__bss_end = .); } > ram .stack ALIGN(8) (NOLOAD) : { PROVIDE(__stack_start = .); PROVIDE(__stack_und_start = .); . += STACK_UND_SIZE; PROVIDE(__stack_und_end = .); . = ALIGN(8); PROVIDE(__stack_abt_start = .); . += STACK_ABT_SIZE; PROVIDE(__stack_abt_end = .); . = ALIGN(8); PROVIDE(__stack_irq_start = .); . += STACK_IRQ_SIZE; PROVIDE(__stack_irq_end = .); . = ALIGN(8); PROVIDE(__stack_fiq_start = .); . += STACK_FIQ_SIZE; PROVIDE(__stack_fiq_end = .); . = ALIGN(8); PROVIDE(__stack_srv_start = .); . += STACK_SRV_SIZE; PROVIDE(__stack_srv_end = .); . = ALIGN(8); PROVIDE(__stack_end = .); } > ram .heap ALIGN(8) (NOLOAD) : { PROVIDE(__heap_start = ORIGIN(heap)); PROVIDE(__heap_end = ORIGIN(heap) + LENGTH(heap)); } > heap .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_info 0 : { *(.debug_info) } .debug_line 0 : { *(.debug_line) } .debug_pubnames 0 : { *(.debug_pubnames) } .debug_aranges 0 : { *(.debug_aranges) } }