1 /*************************************************************************\r
2 *\r
3 * FILE NAME\r
4 *\r
5 * nucleus.ld\r
6 *\r
7 * DESCRIPTION\r
8 *\r
9 * Linker description (RAM) file for the following:\r
10 *\r
11 * BOARD: Xilinx ZC702 EVK Board (Cortex A9)\r
12 *\r
13 *************************************************************************/\r
14 \r
15 MEMORY\r
16 {\r
17 ram : ORIGIN = 0x10000000, LENGTH = 0x10000000\r
18 }\r
19 \r
20 SECTIONS \r
21 \r
22 { \r
23 .text ALIGN(ORIGIN(ram), 0x100000):\r
24 {\r
25 _ld_text_start = . ;\r
26 KEEP (*(esal_vectors)) ;\r
27 KEEP (*(esal_code)) ;\r
28 *(.text .text*) ;\r
29 *(.glue_7t) ;\r
30 *(.glue_7) ;\r
31 *(.gnu.linkonce.t*)\r
32 \r
33 /* Place process mode-switching support. */\r
34 KEEP (*(nutramp)) ;\r
35 \r
36 . = ALIGN(4) ;\r
37 PROVIDE (_rtl_init_start = .) ;\r
38 \r
39 /* Place only C RTL support initializers. */\r
40 KEEP (*libc.a:(.init_array*)) ;\r
41 \r
42 PROVIDE (_rtl_init_end = .) ;\r
43 \r
44 . = ALIGN(4) ;\r
45 PROVIDE (_cxx_ctor_start = .);\r
46 \r
47 /* Place all C++ constructors (initializers). */\r
48 *(.ctors);\r
49 KEEP (*(.init_array*)) ;\r
50 \r
51 PROVIDE (_cxx_ctor_end = .);\r
52 *(.dtors);\r
53 LONG (0);\r
54 \r
55 _ld_text_end = . ;\r
56 \r
57 } > ram\r
58 \r
59 .ARM.extab :\r
60 {\r
61 *(.ARM.extab* .gnu.linkonce.armextab.*)\r
62 \r
63 } > ram\r
64 \r
65 .ARM.exidx :\r
66 {\r
67 __exidx_start = .;\r
68 *(.ARM.exidx* .gnu.linkonce.armexidx.*)\r
69 __exidx_end = .;\r
70 \r
71 } > ram\r
72 \r
73 nusymstr :\r
74 {\r
75 KEEP(*(nusymstr)) ;\r
76 \r
77 } > ram\r
78 \r
79 nusymtab :\r
80 {\r
81 PROVIDE (_nu_symbol_table_start = .) ;\r
82 KEEP(*(nusymtab)) ;\r
83 LONG(0x00000000) ;\r
84 \r
85 } > ram\r
86 \r
87 nuksymstr :\r
88 {\r
89 KEEP(*(nuksymstr)) ;\r
90 \r
91 } > ram\r
92 \r
93 nuksymtab :\r
94 {\r
95 PROVIDE (_nu_ksymbol_table_start = .) ;\r
96 KEEP(*(nuksymtab)) ;\r
97 LONG(0x00000000) ;\r
98 \r
99 } > ram\r
100 \r
101 .rodata ALIGN(0x100000):\r
102 {\r
103 _ld_rodata_start = . ;\r
104 *(.rodata*) ;\r
105 _ld_rodata_end = . ;\r
106 \r
107 } > ram\r
108 \r
109 .rtl ALIGN(0x100000):\r
110 {\r
111 _ld_rtl_start = . ;\r
112 *libc.a:lib_a-impure.o (.data)\r
113 *libc.a:lib_a-mallocr.o (.data)\r
114 *libc.a:lib_a-mallocr.o (.bss)\r
115 *libc.a:lib_a-sglueg.o (.bss)\r
116 *libc.a:lib_a-stdout.o (.bss)\r
117 *libc.a:lib_a-gdtoa-gethex.o (COMMON)\r
118 *libc.a:lib_a-reent.o (COMMON)\r
119 _ld_rtl_end = . ;\r
120 \r
121 } > ram\r
122 \r
123 .data ALIGN(0x100000):\r
124 {\r
125 _ld_rom_data_start = . ;\r
126 _ld_ram_data_start = . ;\r
127 *(.data) ;\r
128 *(.data*) ;\r
129 *(.gnu.linkonce.d*)\r
130 _ld_ram_data_end = . ;\r
131 \r
132 } > ram\r
133 \r
134 .bss (NOLOAD) :\r
135 {\r
136 _ld_bss_start = . ;\r
137 *(.bss) ;\r
138 *(.bss*) ;\r
139 *(COMMON) ;\r
140 _ld_bss_end = . ;\r
141 \r
142 } > ram\r
143 }\r