]>
Commit | Line | Data |
---|---|---|
fbe885ec | 1 | diff -Naurp bfd/archures.c bfd/archures.c |
31ce1ede JR |
2 | --- bfd/archures.c 2012-12-17 19:41:58.000000000 +0530 |
3 | +++ bfd/archures.c 2012-12-17 19:38:58.000000000 +0530 | |
4 | @@ -391,6 +391,7 @@ DESCRIPTION | |
fbe885ec PZ |
5 | .#define bfd_mach_avr5 5 |
6 | .#define bfd_mach_avr51 51 | |
7 | .#define bfd_mach_avr6 6 | |
8 | +.#define bfd_mach_avr7 7 | |
31ce1ede | 9 | .#define bfd_mach_avrtiny 90 |
fbe885ec PZ |
10 | .#define bfd_mach_avrxmega1 101 |
11 | .#define bfd_mach_avrxmega2 102 | |
fbe885ec | 12 | diff -Naurp bfd/cpu-avr.c bfd/cpu-avr.c |
31ce1ede JR |
13 | --- bfd/cpu-avr.c 2012-12-17 19:41:58.000000000 +0530 |
14 | +++ bfd/cpu-avr.c 2012-12-17 19:38:58.000000000 +0530 | |
15 | @@ -135,7 +135,7 @@ static const bfd_arch_info_type arch_inf | |
fbe885ec PZ |
16 | |
17 | /* 3-Byte PC. */ | |
18 | N (22, bfd_mach_avr6, "avr:6", FALSE, & arch_info_struct[10]), | |
31ce1ede JR |
19 | - |
20 | + | |
21 | /* Tiny core (ATTiny10 & similar) */ | |
22 | N (16, bfd_mach_avrtiny, "avr:90", FALSE, & arch_info_struct[11]), | |
fbe885ec | 23 | |
31ce1ede | 24 | @@ -156,6 +156,9 @@ static const bfd_arch_info_type arch_inf |
fbe885ec PZ |
25 | |
26 | /* Xmega 6 */ | |
31ce1ede JR |
27 | N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[17]), |
28 | + | |
29 | + /* 20K flash. starts at 0x8000 */ | |
30 | + N (16, bfd_mach_avr7, "avr:7", FALSE, & arch_info_struct[18]), | |
fbe885ec PZ |
31 | |
32 | /* Xmega 7 */ | |
31ce1ede | 33 | N (24, bfd_mach_avrxmega7, "avr:107", FALSE, NULL) |
fbe885ec | 34 | diff -Naurp bfd/elf32-avr.c bfd/elf32-avr.c |
31ce1ede JR |
35 | --- bfd/elf32-avr.c 2012-12-17 19:41:58.000000000 +0530 |
36 | +++ bfd/elf32-avr.c 2012-12-17 19:38:58.000000000 +0530 | |
37 | @@ -1445,6 +1445,10 @@ bfd_elf_avr_final_write_processing (bfd | |
fbe885ec PZ |
38 | val = E_AVR_MACH_AVR6; |
39 | break; | |
40 | ||
41 | + case bfd_mach_avr7: | |
42 | + val = E_AVR_MACH_AVR7; | |
43 | + break; | |
44 | + | |
45 | case bfd_mach_avrxmega1: | |
46 | val = E_AVR_MACH_XMEGA1; | |
47 | break; | |
31ce1ede | 48 | @@ -1539,6 +1543,10 @@ elf32_avr_object_p (bfd *abfd) |
fbe885ec PZ |
49 | e_set = bfd_mach_avr6; |
50 | break; | |
51 | ||
52 | + case E_AVR_MACH_AVR7: | |
53 | + e_set = bfd_mach_avr7; | |
54 | + break; | |
55 | + | |
56 | case E_AVR_MACH_XMEGA1: | |
57 | e_set = bfd_mach_avrxmega1; | |
58 | break; | |
59 | diff -Naurp binutils/size.c binutils/size.c | |
31ce1ede JR |
60 | --- binutils/size.c 2012-12-17 19:42:20.000000000 +0530 |
61 | +++ binutils/size.c 2012-12-17 19:38:58.000000000 +0530 | |
62 | @@ -285,6 +285,8 @@ avr_device_t avr[] = | |
fbe885ec PZ |
63 | {"atxmega16c4", AVR20K, AVR2K, AVR1K}, |
64 | {"atxmega16d4", AVR20K, AVR2K, AVR1K}, | |
65 | ||
66 | + {"ata5831", AVR20K, AVR1K, AVR1K}, | |
67 | + | |
68 | {"at76c711", AVR16K, AVR2K, 0UL}, | |
69 | {"at90pwm161", AVR16K, AVR1K, AVR512}, | |
70 | {"at90pwm216", AVR16K, AVR1K, AVR512}, | |
71 | diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c | |
31ce1ede JR |
72 | --- gas/config/tc-avr.c 2012-12-17 19:42:20.000000000 +0530 |
73 | +++ gas/config/tc-avr.c 2012-12-17 19:40:09.000000000 +0530 | |
74 | @@ -82,6 +82,7 @@ static struct mcu_type_s mcu_types[] = | |
fbe885ec PZ |
75 | {"avr5", AVR_ISA_AVR51, bfd_mach_avr5}, |
76 | {"avr51", AVR_ISA_AVR51, bfd_mach_avr51}, | |
77 | {"avr6", AVR_ISA_AVR6, bfd_mach_avr6}, | |
78 | + {"avr7", AVR_ISA_AVR7, bfd_mach_avr7}, | |
79 | {"avrxmega1", AVR_ISA_XMEGA, bfd_mach_avrxmega1}, | |
80 | {"avrxmega2", AVR_ISA_XMEGA, bfd_mach_avrxmega2}, | |
81 | {"avrxmega3", AVR_ISA_XMEGA, bfd_mach_avrxmega3}, | |
31ce1ede | 82 | @@ -280,6 +281,7 @@ static struct mcu_type_s mcu_types[] = |
fbe885ec | 83 | {"atmega2561", AVR_ISA_AVR6, bfd_mach_avr6}, |
fbe885ec | 84 | {"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6}, |
31ce1ede | 85 | {"atmega2564rfr2",AVR_ISA_AVR6, bfd_mach_avr6}, |
fbe885ec PZ |
86 | + {"ata5831", AVR_ISA_AVR7, bfd_mach_avr7}, |
87 | {"atmxt112sl", AVR_ISA_XMEGA, bfd_mach_avrxmega2}, | |
88 | {"atmxt224", AVR_ISA_XMEGA, bfd_mach_avrxmega2}, | |
89 | {"atmxt224e", AVR_ISA_XMEGA, bfd_mach_avrxmega2}, | |
31ce1ede | 90 | @@ -519,6 +521,8 @@ md_show_usage (FILE *stream) |
fbe885ec PZ |
91 | " avr5 - enhanced AVR core with up to 64K program memory\n" |
92 | " avr51 - enhanced AVR core with up to 128K program memory\n" | |
93 | " avr6 - enhanced AVR core with up to 256K program memory\n" | |
31ce1ede JR |
94 | + " avr7 - enhanced AVR core with up to 20K program memory\n" |
95 | + " flash starting address is not zero\n" | |
fbe885ec PZ |
96 | " avrxmega2 - XMEGA, > 8K, < 64K FLASH, < 64K RAM\n" |
97 | " avrxmega3 - XMEGA, > 8K, <= 64K FLASH, > 64K RAM\n" | |
98 | " avrxmega4 - XMEGA, > 64K, <= 128K FLASH, <= 64K RAM\n" | |
99 | diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi | |
31ce1ede JR |
100 | --- gas/doc/c-avr.texi 2012-12-17 19:42:20.000000000 +0530 |
101 | +++ gas/doc/c-avr.texi 2012-12-17 19:38:58.000000000 +0530 | |
102 | @@ -91,6 +91,9 @@ at90usb1287, m3000). | |
fbe885ec | 103 | Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types: |
31ce1ede | 104 | atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2). |
fbe885ec PZ |
105 | |
106 | +Instruction set avr7 is for the enhanced AVR core with 20K flash which starts | |
107 | +from 0x8000 (MCU types: ata5831) | |
108 | + | |
109 | Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program | |
31ce1ede JR |
110 | memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u, |
111 | atxmega16c4, atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32c4, | |
fbe885ec | 112 | diff -Naurp include/elf/avr.h include/elf/avr.h |
31ce1ede JR |
113 | --- include/elf/avr.h 2012-12-17 19:41:58.000000000 +0530 |
114 | +++ include/elf/avr.h 2012-12-17 19:38:58.000000000 +0530 | |
115 | @@ -41,6 +41,7 @@ | |
116 | #define E_AVR_MACH_AVR5 5 | |
117 | #define E_AVR_MACH_AVR51 51 | |
118 | #define E_AVR_MACH_AVR6 6 | |
119 | +#define E_AVR_MACH_AVR7 7 | |
120 | #define E_AVR_MACH_AVRTINY 90 | |
121 | #define E_AVR_MACH_XMEGA1 101 | |
122 | #define E_AVR_MACH_XMEGA2 102 | |
fbe885ec | 123 | diff -Naurp include/opcode/avr.h include/opcode/avr.h |
31ce1ede JR |
124 | --- include/opcode/avr.h 2012-12-17 19:41:58.000000000 +0530 |
125 | +++ include/opcode/avr.h 2012-12-17 19:38:58.000000000 +0530 | |
126 | @@ -74,6 +74,8 @@ | |
fbe885ec PZ |
127 | AVR_ISA_ELPM | AVR_ISA_ELPMX | AVR_ISA_SPM | \ |
128 | AVR_ISA_BRK | AVR_ISA_EIND | AVR_ISA_MOVW) | |
129 | ||
130 | +#define AVR_ISA_AVR7 (AVR_ISA_M8 | AVR_ISA_MEGA | AVR_ISA_BRK ) | |
31ce1ede JR |
131 | + |
132 | #define AVR_ISA_AVRTINY (AVR_ISA_1200 | AVR_ISA_BRK | AVR_ISA_SRAM | \ | |
133 | AVR_ISA_TINY) | |
fbe885ec | 134 | |
fbe885ec | 135 | diff -Naurp ld/configure.tgt ld/configure.tgt |
31ce1ede JR |
136 | --- ld/configure.tgt 2012-12-17 19:41:58.000000000 +0530 |
137 | +++ ld/configure.tgt 2012-12-17 19:38:58.000000000 +0530 | |
138 | @@ -118,7 +118,7 @@ arm*-*-uclinux*) targ_emul=armelf_linux | |
fbe885ec PZ |
139 | arm-*-vxworks) targ_emul=armelf_vxworks ;; |
140 | arm*-*-conix*) targ_emul=armelf ;; | |
141 | avr-*-*) targ_emul=avr2 | |
31ce1ede JR |
142 | - targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny" |
143 | + targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avr7 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny" | |
fbe885ec PZ |
144 | ;; |
145 | bfin-*-elf) targ_emul=elf32bfin; | |
146 | targ_extra_emuls="elf32bfinfd" | |
147 | diff -Naurp ld/emulparams/avr7.sh ld/emulparams/avr7.sh | |
148 | --- ld/emulparams/avr7.sh 1970-01-01 05:30:00.000000000 +0530 | |
31ce1ede | 149 | +++ ld/emulparams/avr7.sh 2012-12-17 19:38:58.000000000 +0530 |
fbe885ec PZ |
150 | @@ -0,0 +1,13 @@ |
151 | +ARCH=avr:7 | |
152 | +MACHINE= | |
153 | +SCRIPT_NAME=avr7 | |
154 | +OUTPUT_FORMAT="elf32-avr" | |
155 | +MAXPAGESIZE=1 | |
156 | +EMBEDDED=yes | |
157 | +TEMPLATE_NAME=elf32 | |
158 | + | |
159 | +TEXT_ORIGIN=0x8000 | |
160 | +TEXT_LENGTH=20K | |
161 | +DATA_ORIGIN=0x800200 | |
162 | +DATA_LENGTH=0x400 | |
163 | +EXTRA_EM_FILE=avrelf | |
164 | diff -Naurp ld/Makefile.am ld/Makefile.am | |
31ce1ede JR |
165 | --- ld/Makefile.am 2012-12-17 19:41:58.000000000 +0530 |
166 | +++ ld/Makefile.am 2012-12-17 19:38:58.000000000 +0530 | |
167 | @@ -165,6 +165,7 @@ ALL_EMULATION_SOURCES = \ | |
fbe885ec PZ |
168 | eavr5.c \ |
169 | eavr51.c \ | |
170 | eavr6.c \ | |
171 | + eavr7.c \ | |
172 | eavrxmega1.c \ | |
173 | eavrxmega2.c \ | |
174 | eavrxmega3.c \ | |
31ce1ede | 175 | @@ -820,6 +821,10 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $( |
fbe885ec PZ |
176 | $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ |
177 | ${GEN_DEPENDS} | |
178 | ${GENSCRIPTS} avr6 "$(tdir_avr2)" | |
179 | +eavr7.c: $(srcdir)/emulparams/avr7.sh $(srcdir)/emultempl/avrelf.em \ | |
180 | + $(ELF_DEPS) $(srcdir)/scripttempl/avr7.sc \ | |
181 | + ${GEN_DEPENDS} | |
182 | + ${GENSCRIPTS} avr7 "$(tdir_avr2)" | |
183 | eavrxmega1.c: $(srcdir)/emulparams/avrxmega1.sh \ | |
184 | $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ | |
185 | ${GEN_DEPENDS} | |
186 | diff -Naurp ld/scripttempl/avr7.sc ld/scripttempl/avr7.sc | |
187 | --- ld/scripttempl/avr7.sc 1970-01-01 05:30:00.000000000 +0530 | |
31ce1ede | 188 | +++ ld/scripttempl/avr7.sc 2012-12-17 19:38:58.000000000 +0530 |
fbe885ec PZ |
189 | @@ -0,0 +1,255 @@ |
190 | +cat <<EOF | |
191 | +OUTPUT_FORMAT("${OUTPUT_FORMAT}","${OUTPUT_FORMAT}","${OUTPUT_FORMAT}") | |
192 | +OUTPUT_ARCH(${ARCH}) | |
193 | + | |
194 | +MEMORY | |
195 | +{ | |
196 | + text (rx) : ORIGIN = $TEXT_ORIGIN, LENGTH = $TEXT_LENGTH | |
197 | + data (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = $DATA_LENGTH | |
198 | + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 1K | |
199 | + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K | |
200 | + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K | |
201 | + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K | |
202 | +} | |
203 | + | |
204 | +SECTIONS | |
205 | +{ | |
206 | + /* Read-only sections, merged into text segment: */ | |
207 | + ${TEXT_DYNAMIC+${DYNAMIC}} | |
208 | + .hash ${RELOCATING-0} : { *(.hash) } | |
209 | + .dynsym ${RELOCATING-0} : { *(.dynsym) } | |
210 | + .dynstr ${RELOCATING-0} : { *(.dynstr) } | |
211 | + .gnu.version ${RELOCATING-0} : { *(.gnu.version) } | |
212 | + .gnu.version_d ${RELOCATING-0} : { *(.gnu.version_d) } | |
213 | + .gnu.version_r ${RELOCATING-0} : { *(.gnu.version_r) } | |
214 | + | |
215 | + .rel.init ${RELOCATING-0} : { *(.rel.init) } | |
216 | + .rela.init ${RELOCATING-0} : { *(.rela.init) } | |
217 | + .rel.text ${RELOCATING-0} : | |
218 | + { | |
219 | + *(.rel.text) | |
220 | + ${RELOCATING+*(.rel.text.*)} | |
221 | + ${RELOCATING+*(.rel.gnu.linkonce.t*)} | |
222 | + } | |
223 | + .rela.text ${RELOCATING-0} : | |
224 | + { | |
225 | + *(.rela.text) | |
226 | + ${RELOCATING+*(.rela.text.*)} | |
227 | + ${RELOCATING+*(.rela.gnu.linkonce.t*)} | |
228 | + } | |
229 | + .rel.fini ${RELOCATING-0} : { *(.rel.fini) } | |
230 | + .rela.fini ${RELOCATING-0} : { *(.rela.fini) } | |
231 | + .rel.rodata ${RELOCATING-0} : | |
232 | + { | |
233 | + *(.rel.rodata) | |
234 | + ${RELOCATING+*(.rel.rodata.*)} | |
235 | + ${RELOCATING+*(.rel.gnu.linkonce.r*)} | |
236 | + } | |
237 | + .rela.rodata ${RELOCATING-0} : | |
238 | + { | |
239 | + *(.rela.rodata) | |
240 | + ${RELOCATING+*(.rela.rodata.*)} | |
241 | + ${RELOCATING+*(.rela.gnu.linkonce.r*)} | |
242 | + } | |
243 | + .rel.data ${RELOCATING-0} : | |
244 | + { | |
245 | + *(.rel.data) | |
246 | + ${RELOCATING+*(.rel.data.*)} | |
247 | + ${RELOCATING+*(.rel.gnu.linkonce.d*)} | |
248 | + } | |
249 | + .rela.data ${RELOCATING-0} : | |
250 | + { | |
251 | + *(.rela.data) | |
252 | + ${RELOCATING+*(.rela.data.*)} | |
253 | + ${RELOCATING+*(.rela.gnu.linkonce.d*)} | |
254 | + } | |
255 | + .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) } | |
256 | + .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) } | |
257 | + .rel.dtors ${RELOCATING-0} : { *(.rel.dtors) } | |
258 | + .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) } | |
259 | + .rel.got ${RELOCATING-0} : { *(.rel.got) } | |
260 | + .rela.got ${RELOCATING-0} : { *(.rela.got) } | |
261 | + .rel.bss ${RELOCATING-0} : { *(.rel.bss) } | |
262 | + .rela.bss ${RELOCATING-0} : { *(.rela.bss) } | |
263 | + .rel.plt ${RELOCATING-0} : { *(.rel.plt) } | |
264 | + .rela.plt ${RELOCATING-0} : { *(.rela.plt) } | |
265 | + | |
266 | + /* Internal text space or external memory. */ | |
267 | + .text ${RELOCATING-0} : | |
268 | + { | |
269 | + *(.vectors) | |
270 | + KEEP(*(.vectors)) | |
271 | + | |
272 | + /* For data that needs to reside in the lower 64k of progmem. */ | |
273 | + *(.progmem.gcc*) | |
274 | + *(.progmem*) | |
275 | + ${RELOCATING+. = ALIGN(2);} | |
276 | + | |
277 | + ${CONSTRUCTING+ __trampolines_start = . ; } | |
278 | + /* The jump trampolines for the 16-bit limited relocs will reside here. */ | |
279 | + *(.trampolines) | |
280 | + *(.trampolines*) | |
281 | + ${CONSTRUCTING+ __trampolines_end = . ; } | |
282 | + | |
283 | + /* For future tablejump instruction arrays for 3 byte pc devices. | |
284 | + We don't relax jump/call instructions within these sections. */ | |
285 | + *(.jumptables) | |
286 | + *(.jumptables*) | |
287 | + | |
288 | + /* For code that needs to reside in the lower 128k progmem. */ | |
289 | + *(.lowtext) | |
290 | + *(.lowtext*) | |
291 | + | |
292 | + ${CONSTRUCTING+ __ctors_start = . ; } | |
293 | + ${CONSTRUCTING+ *(.ctors) } | |
294 | + ${CONSTRUCTING+ __ctors_end = . ; } | |
295 | + ${CONSTRUCTING+ __dtors_start = . ; } | |
296 | + ${CONSTRUCTING+ *(.dtors) } | |
297 | + ${CONSTRUCTING+ __dtors_end = . ; } | |
298 | + KEEP(SORT(*)(.ctors)) | |
299 | + KEEP(SORT(*)(.dtors)) | |
300 | + | |
301 | + /* From this point on, we don't bother about wether the insns are | |
302 | + below or above the 16 bits boundary. */ | |
303 | + *(.init0) /* Start here after reset. */ | |
304 | + KEEP (*(.init0)) | |
305 | + *(.init1) | |
306 | + KEEP (*(.init1)) | |
307 | + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ | |
308 | + KEEP (*(.init2)) | |
309 | + *(.init3) | |
310 | + KEEP (*(.init3)) | |
311 | + *(.init4) /* Initialize data and BSS. */ | |
312 | + KEEP (*(.init4)) | |
313 | + *(.init5) | |
314 | + KEEP (*(.init5)) | |
315 | + *(.init6) /* C++ constructors. */ | |
316 | + KEEP (*(.init6)) | |
317 | + *(.init7) | |
318 | + KEEP (*(.init7)) | |
319 | + *(.init8) | |
320 | + KEEP (*(.init8)) | |
321 | + *(.init9) /* Call main(). */ | |
322 | + KEEP (*(.init9)) | |
323 | + *(.text) | |
324 | + ${RELOCATING+. = ALIGN(2);} | |
325 | + *(.text.*) | |
326 | + ${RELOCATING+. = ALIGN(2);} | |
327 | + *(.fini9) /* _exit() starts here. */ | |
328 | + KEEP (*(.fini9)) | |
329 | + *(.fini8) | |
330 | + KEEP (*(.fini8)) | |
331 | + *(.fini7) | |
332 | + KEEP (*(.fini7)) | |
333 | + *(.fini6) /* C++ destructors. */ | |
334 | + KEEP (*(.fini6)) | |
335 | + *(.fini5) | |
336 | + KEEP (*(.fini5)) | |
337 | + *(.fini4) | |
338 | + KEEP (*(.fini4)) | |
339 | + *(.fini3) | |
340 | + KEEP (*(.fini3)) | |
341 | + *(.fini2) | |
342 | + KEEP (*(.fini2)) | |
343 | + *(.fini1) | |
344 | + KEEP (*(.fini1)) | |
345 | + *(.fini0) /* Infinite loop after program termination. */ | |
346 | + KEEP (*(.fini0)) | |
347 | + ${RELOCATING+ _etext = . ; } | |
348 | + } ${RELOCATING+ > text} | |
349 | + | |
350 | + .data ${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))} | |
351 | + { | |
352 | + ${RELOCATING+ PROVIDE (__data_start = .) ; } | |
353 | + *(.data) | |
354 | + *(.data*) | |
355 | + *(.rodata) /* We need to include .rodata here if gcc is used */ | |
356 | + *(.rodata*) /* with -fdata-sections. */ | |
357 | + *(.gnu.linkonce.d*) | |
358 | + ${RELOCATING+. = ALIGN(2);} | |
359 | + ${RELOCATING+ _edata = . ; } | |
360 | + ${RELOCATING+ PROVIDE (__data_end = .) ; } | |
361 | + } ${RELOCATING+ > data} | |
362 | + | |
363 | + .bss ${RELOCATING-0} :${RELOCATING+ AT (ADDR (.bss))} | |
364 | + { | |
365 | + ${RELOCATING+ PROVIDE (__bss_start = .) ; } | |
366 | + *(.bss) | |
367 | + *(.bss*) | |
368 | + *(COMMON) | |
369 | + ${RELOCATING+ PROVIDE (__bss_end = .) ; } | |
370 | + } ${RELOCATING+ > data} | |
371 | + | |
372 | + ${RELOCATING+ __data_load_start = LOADADDR(.data); } | |
373 | + ${RELOCATING+ __data_load_end = __data_load_start + SIZEOF(.data); } | |
374 | + | |
375 | + /* Global data not cleared after reset. */ | |
376 | + .noinit ${RELOCATING-0}: | |
377 | + { | |
378 | + ${RELOCATING+ PROVIDE (__noinit_start = .) ; } | |
379 | + *(.noinit*) | |
380 | + ${RELOCATING+ PROVIDE (__noinit_end = .) ; } | |
381 | + ${RELOCATING+ _end = . ; } | |
382 | + ${RELOCATING+ PROVIDE (__heap_start = .) ; } | |
383 | + } ${RELOCATING+ > data} | |
384 | + | |
385 | + .eeprom ${RELOCATING-0}: | |
386 | + { | |
387 | + *(.eeprom*) | |
388 | + ${RELOCATING+ __eeprom_end = . ; } | |
389 | + } ${RELOCATING+ > eeprom} | |
390 | + | |
391 | + .fuse ${RELOCATING-0}: | |
392 | + { | |
393 | + KEEP(*(.fuse)) | |
394 | + KEEP(*(.lfuse)) | |
395 | + KEEP(*(.hfuse)) | |
396 | + KEEP(*(.efuse)) | |
397 | + } ${RELOCATING+ > fuse} | |
398 | + | |
399 | + .lock ${RELOCATING-0}: | |
400 | + { | |
401 | + KEEP(*(.lock*)) | |
402 | + } ${RELOCATING+ > lock} | |
403 | + | |
404 | + .signature ${RELOCATING-0}: | |
405 | + { | |
406 | + KEEP(*(.signature*)) | |
407 | + } ${RELOCATING+ > signature} | |
408 | + | |
409 | + /* Stabs debugging sections. */ | |
410 | + .stab 0 : { *(.stab) } | |
411 | + .stabstr 0 : { *(.stabstr) } | |
412 | + .stab.excl 0 : { *(.stab.excl) } | |
413 | + .stab.exclstr 0 : { *(.stab.exclstr) } | |
414 | + .stab.index 0 : { *(.stab.index) } | |
415 | + .stab.indexstr 0 : { *(.stab.indexstr) } | |
416 | + .comment 0 : { *(.comment) } | |
417 | + | |
418 | + /* DWARF debug sections. | |
419 | + Symbols in the DWARF debugging sections are relative to the beginning | |
420 | + of the section so we begin them at 0. */ | |
421 | + | |
422 | + /* DWARF 1 */ | |
423 | + .debug 0 : { *(.debug) } | |
424 | + .line 0 : { *(.line) } | |
425 | + | |
426 | + /* GNU DWARF 1 extensions */ | |
427 | + .debug_srcinfo 0 : { *(.debug_srcinfo) } | |
428 | + .debug_sfnames 0 : { *(.debug_sfnames) } | |
429 | + | |
430 | + /* DWARF 1.1 and DWARF 2 */ | |
431 | + .debug_aranges 0 : { *(.debug_aranges) } | |
432 | + .debug_pubnames 0 : { *(.debug_pubnames) } | |
433 | + | |
434 | + /* DWARF 2 */ | |
435 | + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } | |
436 | + .debug_abbrev 0 : { *(.debug_abbrev) } | |
437 | + .debug_line 0 : { *(.debug_line) } | |
438 | + .debug_frame 0 : { *(.debug_frame) } | |
439 | + .debug_str 0 : { *(.debug_str) } | |
440 | + .debug_loc 0 : { *(.debug_loc) } | |
441 | + .debug_macinfo 0 : { *(.debug_macinfo) } | |
442 | +} | |
443 | +EOF | |
444 | + |