source: arduino-1-6-7/trunk/fuentes/arduino-ide-amd64/hardware/tools/avr/avr/lib/ldscripts/avrtiny.xu @ 4837

Last change on this file since 4837 was 4837, checked in by daduve, 2 years ago

Adding new version

File size: 6.3 KB
Line 
1/* Script for ld -Ur: link w/out relocation, do create constructors */
2/* Copyright (C) 2014-2015 Free Software Foundation, Inc.
3   Copying and distribution of this script, with or without modification,
4   are permitted in any medium without royalty provided the copyright
5   notice and this notice are preserved.  */
6OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
7OUTPUT_ARCH(avr:100)
8__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 4K;
9__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0x100;
10__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 2;
11__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 2;
12__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 4;
13MEMORY
14{
15  text   (rx)   : ORIGIN = 0x0, LENGTH = __TEXT_REGION_LENGTH__
16  data   (rw!x) : ORIGIN = 0x0800040, LENGTH = __DATA_REGION_LENGTH__
17  /* Provide offsets for config, lock and signature to match
18     production file format. Ignore offsets in datasheet.  */
19  config    (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
20  lock      (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__
21  signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__
22}
23SECTIONS
24{
25  /* Read-only sections, merged into text segment: */
26  .hash        0 : { *(.hash)           }
27  .dynsym      0 : { *(.dynsym)         }
28  .dynstr      0 : { *(.dynstr)         }
29  .gnu.version 0 : { *(.gnu.version)    }
30  .gnu.version_d 0 : { *(.gnu.version_d)        }
31  .gnu.version_r 0 : { *(.gnu.version_r)        }
32  .rel.init    0 : { *(.rel.init)       }
33  .rela.init   0 : { *(.rela.init)      }
34  .rel.text    0 :
35    {
36      *(.rel.text)
37    }
38  .rela.text   0 :
39    {
40      *(.rela.text)
41    }
42  .rel.fini    0 : { *(.rel.fini)       }
43  .rela.fini   0 : { *(.rela.fini)      }
44  .rel.rodata  0 :
45    {
46      *(.rel.rodata)
47    }
48  .rela.rodata 0 :
49    {
50      *(.rela.rodata)
51    }
52  .rel.data    0 :
53    {
54      *(.rel.data)
55    }
56  .rela.data   0 :
57    {
58      *(.rela.data)
59    }
60  .rel.ctors   0 : { *(.rel.ctors)      }
61  .rela.ctors  0 : { *(.rela.ctors)     }
62  .rel.dtors   0 : { *(.rel.dtors)      }
63  .rela.dtors  0 : { *(.rela.dtors)     }
64  .rel.got     0 : { *(.rel.got)                }
65  .rela.got    0 : { *(.rela.got)       }
66  .rel.bss     0 : { *(.rel.bss)                }
67  .rela.bss    0 : { *(.rela.bss)       }
68  .rel.plt     0 : { *(.rel.plt)                }
69  .rela.plt    0 : { *(.rela.plt)       }
70  /* Internal text space or external memory.  */
71  .text 0 :
72  {
73    *(.vectors)
74    KEEP(*(.vectors))
75    /* For data that needs to reside in the lower 64k of progmem.  */
76    /* PR 13812: Placing the trampolines here gives a better chance
77       that they will be in range of the code that uses them.  */
78     __trampolines_start = . ;
79    /* The jump trampolines for the 16-bit limited relocs will reside here.  */
80    *(.trampolines)
81     __trampolines_end = . ;
82    /* avr-libc expects these data to reside in lower 64K. */
83    /* For future tablejump instruction arrays for 3 byte pc devices.
84       We don't relax jump/call instructions within these sections.  */
85    *(.jumptables)
86    /* For code that needs to reside in the lower 128k progmem.  */
87    *(.lowtext)
88     __ctors_start = . ;
89     *(.ctors)
90     __ctors_end = . ;
91     __dtors_start = . ;
92     *(.dtors)
93     __dtors_end = . ;
94    KEEP(SORT(*)(.ctors))
95    KEEP(SORT(*)(.dtors))
96    /* From this point on, we don't bother about wether the insns are
97       below or above the 16 bits boundary.  */
98    *(.init0)  /* Start here after reset.  */
99    KEEP (*(.init0))
100    *(.init1)
101    KEEP (*(.init1))
102    *(.init2)  /* Clear __zero_reg__, set up stack pointer.  */
103    KEEP (*(.init2))
104    *(.init3)
105    KEEP (*(.init3))
106    *(.init4)  /* Initialize data and BSS.  */
107    KEEP (*(.init4))
108    *(.init5)
109    KEEP (*(.init5))
110    *(.init6)  /* C++ constructors.  */
111    KEEP (*(.init6))
112    *(.init7)
113    KEEP (*(.init7))
114    *(.init8)
115    KEEP (*(.init8))
116    *(.init9)  /* Call main().  */
117    KEEP (*(.init9))
118    *(.text)
119    *(.fini9)  /* _exit() starts here.  */
120    KEEP (*(.fini9))
121    *(.fini8)
122    KEEP (*(.fini8))
123    *(.fini7)
124    KEEP (*(.fini7))
125    *(.fini6)  /* C++ destructors.  */
126    KEEP (*(.fini6))
127    *(.fini5)
128    KEEP (*(.fini5))
129    *(.fini4)
130    KEEP (*(.fini4))
131    *(.fini3)
132    KEEP (*(.fini3))
133    *(.fini2)
134    KEEP (*(.fini2))
135    *(.fini1)
136    KEEP (*(.fini1))
137    *(.fini0)  /* Infinite loop after program termination.  */
138    KEEP (*(.fini0))
139  }
140  .data        0 :
141  {
142    *(.data)
143    *(.rodata)  /* We need to include .rodata here if gcc is used */
144     /* with -fdata-sections.  */
145    *(.gnu.linkonce.d*)
146  }
147  .bss  0 :
148  {
149    *(.bss)
150    *(COMMON)
151  }
152  /* Global data not cleared after reset.  */
153  .noinit  0 :
154  {
155    *(.noinit*)
156  }
157  .lock 0:
158  {
159    KEEP(*(.lock*))
160  }
161  .signature 0:
162  {
163    KEEP(*(.signature*))
164  }
165  .config 0:
166  {
167    KEEP(*(.config*))
168  }
169  /* Stabs debugging sections.  */
170  .stab 0 : { *(.stab) }
171  .stabstr 0 : { *(.stabstr) }
172  .stab.excl 0 : { *(.stab.excl) }
173  .stab.exclstr 0 : { *(.stab.exclstr) }
174  .stab.index 0 : { *(.stab.index) }
175  .stab.indexstr 0 : { *(.stab.indexstr) }
176  .comment 0 : { *(.comment) }
177  .note.gnu.build-id : { *(.note.gnu.build-id) }
178  /* DWARF debug sections.
179     Symbols in the DWARF debugging sections are relative to the beginning
180     of the section so we begin them at 0.  */
181  /* DWARF 1 */
182  .debug          0 : { *(.debug) }
183  .line           0 : { *(.line) }
184  /* GNU DWARF 1 extensions */
185  .debug_srcinfo  0 : { *(.debug_srcinfo) }
186  .debug_sfnames  0 : { *(.debug_sfnames) }
187  /* DWARF 1.1 and DWARF 2 */
188  .debug_aranges  0 : { *(.debug_aranges) }
189  .debug_pubnames 0 : { *(.debug_pubnames) }
190  /* DWARF 2 */
191  .debug_info     0 : { *(.debug_info) }
192  .debug_abbrev   0 : { *(.debug_abbrev) }
193  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
194  .debug_frame    0 : { *(.debug_frame) }
195  .debug_str      0 : { *(.debug_str) }
196  .debug_loc      0 : { *(.debug_loc) }
197  .debug_macinfo  0 : { *(.debug_macinfo) }
198  /* SGI/MIPS DWARF 2 extensions */
199  .debug_weaknames 0 : { *(.debug_weaknames) }
200  .debug_funcnames 0 : { *(.debug_funcnames) }
201  .debug_typenames 0 : { *(.debug_typenames) }
202  .debug_varnames  0 : { *(.debug_varnames) }
203  /* DWARF 3 */
204  .debug_pubtypes 0 : { *(.debug_pubtypes) }
205  .debug_ranges   0 : { *(.debug_ranges) }
206  /* DWARF Extension.  */
207  .debug_macro    0 : { *(.debug_macro) }
208}
Note: See TracBrowser for help on using the repository browser.