1OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 2OUTPUT_ARCH(arm) 3 4ENTRY(_boot) 5 6SECTIONS 7{ 8 . = 0x80080000; 9 10 .text : 11 { 12 13 *(.boot) 14 . = ALIGN(64); 15 16 *(.vectors) 17 *(.text) 18 *(.text.*) 19 20 /* section information for utest */ 21 . = ALIGN(4); 22 __rt_utest_tc_tab_start = .; 23 KEEP(*(UtestTcTab)) 24 __rt_utest_tc_tab_end = .; 25 26 27 /* section information for finsh shell */ 28 . = ALIGN(4); 29 __fsymtab_start = .; 30 KEEP(*(FSymTab)) 31 __fsymtab_end = .; 32 . = ALIGN(4); 33 __vsymtab_start = .; 34 KEEP(*(VSymTab)) 35 __vsymtab_end = .; 36 . = ALIGN(4); 37 38 /* section information for modules */ 39 . = ALIGN(4); 40 __rtmsymtab_start = .; 41 KEEP(*(RTMSymTab)) 42 __rtmsymtab_end = .; 43 44 /* section information for initialization */ 45 . = ALIGN(4); 46 __rt_init_start = .; 47 KEEP(*(SORT(.rti_fn*))) 48 __rt_init_end = .; 49 50 /* section information for usb usbh_class_info */ 51 . = ALIGN(4); 52 __usbh_class_info_start__ = .; 53 KEEP(*(.usbh_class_info)) 54 . = ALIGN(4); 55 __usbh_class_info_end__ = .; 56 } =0 57 __text_end = .; 58 59 .ARM.exidx : 60 { 61 __exidx_start = .; 62 *(.ARM.exidx* .gnu.linkonce.armexidx.*) 63 __exidx_end = .; 64 } 65 66 __rodata_start = .; 67 .rodata : { *(.rodata) *(.rodata.*) } 68 __rodata_end = .; 69 70 . = ALIGN(4); 71 .ctors : 72 { 73 PROVIDE(__ctors_start__ = .); 74 /* new GCC version uses .init_array */ 75 KEEP(*(SORT(.init_array.*))) 76 KEEP(*(.init_array)) 77 PROVIDE(__ctors_end__ = .); 78 } 79 80 .dtors : 81 { 82 PROVIDE(__dtors_start__ = .); 83 KEEP(*(SORT(.dtors.*))) 84 KEEP(*(.dtors)) 85 PROVIDE(__dtors_end__ = .); 86 } 87 88 . = ALIGN(16 * 1024); 89 .l1_page_table : 90 { 91 __l1_page_table_start = .; 92 . += 16K; 93 } 94 95 . = ALIGN(8); 96 __data_start = .; 97 .data : 98 { 99 *(.data) 100 *(.data.*) 101 } 102 __data_end = .; 103 104 . = ALIGN(8); 105 __bss_start = .; 106 .bss : 107 { 108 *(.bss) 109 *(.bss.*) 110 *(COMMON) 111 . = ALIGN(4); 112 } 113 . = ALIGN(4); 114 __bss_end = .; 115 116 .heap : 117 { 118 . = ALIGN(8); 119 __end__ = .; 120 PROVIDE(end = .); 121 __HeapBase = .; 122 . += 0x400; 123 __HeapLimit = .; 124 __heap_limit = .; /* Add for _sbrk */ 125 } 126 127 /* Stabs debugging sections. */ 128 .stab 0 : { *(.stab) } 129 .stabstr 0 : { *(.stabstr) } 130 .stab.excl 0 : { *(.stab.excl) } 131 .stab.exclstr 0 : { *(.stab.exclstr) } 132 .stab.index 0 : { *(.stab.index) } 133 .stab.indexstr 0 : { *(.stab.indexstr) } 134 .comment 0 : { *(.comment) } 135 136 _end = .; 137} 138