• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2ENTRY(reset_vector)
3INCLUDE board.ld
4INPUT(libuserinit.O)
5SECTIONS
6{
7     _start = .;
8    .set_sysinit_set : {
9        __start_set_sysinit_set = ABSOLUTE(.);
10        KEEP (*(.set_sysinit_set))
11        __stop_set_sysinit_set = ABSOLUTE(.);
12    } > ram
13
14    .got ALIGN(0x4) : { *(.got.plt) *(.got) } > ram
15
16    .ctors : ALIGN(0x4) {
17        __ctor_list__ = .;
18        KEEP (*(.ctors .init_array))
19        __ctor_end__ = .;
20    } > ram
21    .dtors : ALIGN(0x4) {
22        __dtor_list__ = .;
23        KEEP (*(.dtors .fini_array))
24        __dtor_end__ = .;
25    } > ram
26
27    .gcc_except_table ALIGN (0x8) : { . = .; } > ram  .gcc_except_table : { KEEP(*(.gcc_except_table*)) }
28    .exception_ranges ALIGN (0x8) : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } > ram
29
30    .ARM.extab ALIGN(0x4) : { *(.ARM.extab* .gnu.linkonce.armextab.*) } > ram
31
32    /* .ARM.exidx is sorted, so has to go in its own output section.  */
33    /*.ARM.exidx ALIGN(0x8) : { __exidx_start = .; *(.ARM.exidx* .gnu.linkonce.armexidx.*) ;__exidx_end = .;} > ram*/
34    .ARM.exidx ALIGN(0x8) : { __exidx_start = .; __exidx_end = .;} > ram
35
36     .eh_frame ALIGN (0x8) : { KEEP (*(.eh_frame)) *(.eh_frame.*);  } > ram
37
38    /* text/read-only data */
39    .text : ALIGN(0x1000) {
40        __text_start = .;
41        *(.text* .sram.text.glue_7* .gnu.linkonce.t.*)
42    } > ram
43
44    .rel.text : { *(.rel.text) *(.rel.text.*) *(.rel.gnu.linkonce.t*) } > ram
45    .rela.text : { *(.rela.text) *(.rela.text.*) *(.rela.gnu.linkonce.t*) } > ram
46    .rel.data : { *(.rel.data) *(.rel.data.*) *(.rel.gnu.linkonce.d*) } > ram
47    .rela.data : { *(.rela.data) *(.rela.data.*) *(.rela.gnu.linkonce.d*) } > ram
48    .rel.rodata : { *(.rel.rodata) *(.rel.rodata.*) *(.rel.gnu.linkonce.r*) } > ram
49    .rela.rodata : { *(.rela.rodata) *(.rela.rodata.*) *(.rela.gnu.linkonce.r*) } > ram
50    .rel.got : { *(.rel.got) } > ram
51    .rela.got : { *(.rela.got) } > ram
52    .rel.ctors : { *(.rel.ctors) } > ram
53    .rela.ctors : { *(.rela.ctors) } > ram
54    .rel.dtors : { *(.rel.dtors) } > ram
55    .rela.dtors : { *(.rela.dtors) } > ram
56    .rel.init : { *(.rel.init) } > ram
57    .rela.init : { *(.rela.init) } > ram
58    .rel.fini : { *(.rel.fini) } > ram
59    .rela.fini : { *(.rela.fini) } > ram
60    .rel.bss : { *(.rel.bss) } > ram
61    .rela.bss : { *(.rela.bss) } > ram
62    .rel.plt : { *(.rel.plt) } > ram
63    .rela.plt : { *(.rela.plt) } > ram
64    .rel.dyn : { *(.rel.dyn) } > ram
65
66    .dummy_post_text : {
67        __text_end = .;
68    } > ram
69
70    .rodata : ALIGN(0x1000) {
71        __rodata_start = .;
72        __kernel_init_level_0 = ABSOLUTE(.);
73        KEEP(*( SORT (.rodata.init.kernel.0.*)));
74        __kernel_init_level_1 = ABSOLUTE(.);
75        KEEP(*( SORT (.rodata.init.kernel.1.*)));
76        __kernel_init_level_2 = ABSOLUTE(.);
77        KEEP(*( SORT (.rodata.init.kernel.2.*)));
78        __kernel_init_level_3 = ABSOLUTE(.);
79        KEEP(*( SORT (.rodata.init.kernel.3.*)));
80        __kernel_init_level_4 = ABSOLUTE(.);
81        KEEP(*( SORT (.rodata.init.kernel.4.*)));
82        __kernel_init_level_5 = ABSOLUTE(.);
83        KEEP(*( SORT (.rodata.init.kernel.5.*)));
84        __kernel_init_level_6 = ABSOLUTE(.);
85        KEEP(*( SORT (.rodata.init.kernel.6.*)));
86        __kernel_init_level_7 = ABSOLUTE(.);
87        KEEP(*( SORT (.rodata.init.kernel.7.*)));
88        __kernel_init_level_8 = ABSOLUTE(.);
89        KEEP(*( SORT (.rodata.init.kernel.8.*)));
90        __kernel_init_level_9 = ABSOLUTE(.);
91        KEEP(*( SORT (.rodata.init.kernel.9.*)));
92        __kernel_init_level_10 = ABSOLUTE(.);
93        *(.rodata .rodata.* .gnu.linkonce.r.*)
94        __exc_table_start = .;
95        KEEP(*(__exc_table))
96        __exc_table_end = .;
97    } > ram
98
99    /*
100     * extra linker scripts tend to insert sections just after .rodata,
101     * so we want to make sure this symbol comes after anything inserted above,
102     * but not aligned to the next section necessarily.
103     */
104    .dummy_post_rodata : {
105        _hdf_drivers_start = .;
106        KEEP(*(.hdf.driver))
107        _hdf_drivers_end = .;
108        __rodata_end = .;
109    } > ram
110
111    .data : ALIGN(0x1000) {
112        /* writable data  */
113        __ram_data_start = .;
114        __vdso_data_start = LOADADDR(.data);
115        KEEP(*(.data.vdso.datapage))
116        . = ALIGN(0x1000);
117        KEEP(*(.data.vdso.text))
118        . = ALIGN(0x1000);
119        __vdso_text_end = .;
120        *(.data .data.* .gnu.linkonce.d.*)
121        . = ALIGN(0x4);
122        KEEP(*( SORT (.liteos.table.*)));
123    } > ram
124
125    /*
126     * extra linker scripts tend to insert sections just after .data,
127     * so we want to make sure this symbol comes after anything inserted above,
128     * but not aligned to the next section necessarily.
129     */
130    .dummy_post_data : {
131        __ram_data_end = .;
132    } > ram
133
134    .user_init : ALIGN(0x1000) {
135        . = ALIGN(0x4);
136        __user_init_load_addr = LOADADDR(.user_init);
137        __user_init_entry = .;
138        KEEP(*(.user.entry))
139        KEEP(*(.user.text))
140        KEEP(*(.user.rodata))
141        . = ALIGN(0X4);
142        __user_init_data = .;
143        KEEP(*(.user.data))
144        . = ALIGN(0X4);
145        __user_init_bss = .;
146        KEEP(*(.user.bss))
147        . = ALIGN(0x1000);
148        __user_init_end = .;
149    } > user_ram AT > ram
150
151    __user_init_size = __user_init_end - __user_init_entry;
152
153    /* unintialized data (in same segment as writable data) */
154    .bss : {
155        . = ALIGN(0x800);
156        __int_stack_start = .;
157        *(.int_stack);
158        . = ALIGN(0x4);
159        KEEP(*(.bss.prebss.*))
160        . = ALIGN(0x8);
161        __bss_start = .;
162        *(.bss .bss.*)
163        *(.gnu.linkonce.b.*)
164        *(COMMON)
165        . = ALIGN(0x8);
166        __bss_end = .;
167    } > ram
168
169    . = ALIGN(0x1000);
170    _end = .;
171    /* mmu temp page table(sys aviliable mem is start with __bss_end) */
172    . = ALIGN(0x4000);
173    __mmu_ttlb_begin = .;
174
175    /* Strip unnecessary stuff */
176    /DISCARD/ 0 : { *(.comment .note .ARM.exidx* .gnu.linkonce.armexidx.*) } > ram
177}
178