Hardcode host-specific name for LTO plugin
[platform/upstream/binutils.git] / ld / scripttempl / avrtiny.sc
1 # Copyright (C) 2014 Free Software Foundation, Inc.
2
3 # Copying and distribution of this file, with or without modification,
4 # are permitted in any medium without royalty provided the copyright
5 # notice and this notice are preserved.
6
7 cat <<EOF
8 /* Copyright (C) 2014 Free Software Foundation, Inc.
9
10    Copying and distribution of this script, with or without modification,
11    are permitted in any medium without royalty provided the copyright
12    notice and this notice are preserved.  */
13
14 OUTPUT_FORMAT("${OUTPUT_FORMAT}","${OUTPUT_FORMAT}","${OUTPUT_FORMAT}")
15 OUTPUT_ARCH(${ARCH})
16
17 MEMORY
18 {
19   text   (rx)   : ORIGIN = $TEXT_ORIGIN, LENGTH = $TEXT_LENGTH
20   data   (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = $DATA_LENGTH
21
22   /* Provide offsets for config, lock and signature to match
23      production file format. Ignore offsets in datasheet.  */
24
25   config    (rw!x) : ORIGIN = 0x820000, LENGTH = 2
26   lock      (rw!x) : ORIGIN = 0x830000, LENGTH = 2
27   signature (rw!x) : ORIGIN = 0x840000, LENGTH = 4
28 }
29
30 SECTIONS
31 {
32   /* Read-only sections, merged into text segment: */
33   ${TEXT_DYNAMIC+${DYNAMIC}}
34   .hash        ${RELOCATING-0} : { *(.hash)             }
35   .dynsym      ${RELOCATING-0} : { *(.dynsym)           }
36   .dynstr      ${RELOCATING-0} : { *(.dynstr)           }
37   .gnu.version ${RELOCATING-0} : { *(.gnu.version)      }
38   .gnu.version_d ${RELOCATING-0} : { *(.gnu.version_d)  }
39   .gnu.version_r ${RELOCATING-0} : { *(.gnu.version_r)  }
40
41   .rel.init    ${RELOCATING-0} : { *(.rel.init) }
42   .rela.init   ${RELOCATING-0} : { *(.rela.init)        }
43   .rel.text    ${RELOCATING-0} :
44     {
45       *(.rel.text)
46       ${RELOCATING+*(.rel.text.*)}
47       ${RELOCATING+*(.rel.gnu.linkonce.t*)}
48     }
49   .rela.text   ${RELOCATING-0} :
50     {
51       *(.rela.text)
52       ${RELOCATING+*(.rela.text.*)}
53       ${RELOCATING+*(.rela.gnu.linkonce.t*)}
54     }
55   .rel.fini    ${RELOCATING-0} : { *(.rel.fini) }
56   .rela.fini   ${RELOCATING-0} : { *(.rela.fini)        }
57   .rel.rodata  ${RELOCATING-0} :
58     {
59       *(.rel.rodata)
60       ${RELOCATING+*(.rel.rodata.*)}
61       ${RELOCATING+*(.rel.gnu.linkonce.r*)}
62     }
63   .rela.rodata ${RELOCATING-0} :
64     {
65       *(.rela.rodata)
66       ${RELOCATING+*(.rela.rodata.*)}
67       ${RELOCATING+*(.rela.gnu.linkonce.r*)}
68     }
69   .rel.data    ${RELOCATING-0} :
70     {
71       *(.rel.data)
72       ${RELOCATING+*(.rel.data.*)}
73       ${RELOCATING+*(.rel.gnu.linkonce.d*)}
74     }
75   .rela.data   ${RELOCATING-0} :
76     {
77       *(.rela.data)
78       ${RELOCATING+*(.rela.data.*)}
79       ${RELOCATING+*(.rela.gnu.linkonce.d*)}
80     }
81   .rel.ctors   ${RELOCATING-0} : { *(.rel.ctors)        }
82   .rela.ctors  ${RELOCATING-0} : { *(.rela.ctors)       }
83   .rel.dtors   ${RELOCATING-0} : { *(.rel.dtors)        }
84   .rela.dtors  ${RELOCATING-0} : { *(.rela.dtors)       }
85   .rel.got     ${RELOCATING-0} : { *(.rel.got)          }
86   .rela.got    ${RELOCATING-0} : { *(.rela.got) }
87   .rel.bss     ${RELOCATING-0} : { *(.rel.bss)          }
88   .rela.bss    ${RELOCATING-0} : { *(.rela.bss) }
89   .rel.plt     ${RELOCATING-0} : { *(.rel.plt)          }
90   .rela.plt    ${RELOCATING-0} : { *(.rela.plt) }
91
92   /* Internal text space or external memory.  */
93   .text ${RELOCATING-0} : ${RELOCATING+ AT (0x0)}
94   {
95     *(.vectors)
96     KEEP(*(.vectors))
97
98     /* For data that needs to reside in the lower 64k of progmem.  */
99     *(.progmem.gcc*)
100     *(.progmem*)
101     ${RELOCATING+. = ALIGN(2);}
102
103     ${CONSTRUCTING+ __trampolines_start = . ; }
104     /* The jump trampolines for the 16-bit limited relocs will reside here.  */
105     *(.trampolines)
106     *(.trampolines*)
107     ${CONSTRUCTING+ __trampolines_end = . ; }
108
109     /* For future tablejump instruction arrays for 3 byte pc devices.
110        We don't relax jump/call instructions within these sections.  */
111     *(.jumptables) 
112     *(.jumptables*) 
113
114     /* For code that needs to reside in the lower 128k progmem.  */
115     *(.lowtext)
116     *(.lowtext*)
117
118     ${CONSTRUCTING+ __ctors_start = . ; }
119     ${CONSTRUCTING+ *(.ctors) }
120     ${CONSTRUCTING+ __ctors_end = . ; }
121     ${CONSTRUCTING+ __dtors_start = . ; }
122     ${CONSTRUCTING+ *(.dtors) }
123     ${CONSTRUCTING+ __dtors_end = . ; }
124     KEEP(SORT(*)(.ctors))
125     KEEP(SORT(*)(.dtors))
126
127     /* From this point on, we don't bother about wether the insns are
128        below or above the 16 bits boundary.  */
129     *(.init0)  /* Start here after reset.  */
130     KEEP (*(.init0))
131     *(.init1)
132     KEEP (*(.init1))
133     *(.init2)  /* Clear __zero_reg__, set up stack pointer.  */
134     KEEP (*(.init2))
135     *(.init3)
136     KEEP (*(.init3))
137     *(.init4)  /* Initialize data and BSS.  */
138     KEEP (*(.init4))
139     *(.init5)
140     KEEP (*(.init5))
141     *(.init6)  /* C++ constructors.  */
142     KEEP (*(.init6))
143     *(.init7)
144     KEEP (*(.init7))
145     *(.init8)
146     KEEP (*(.init8))
147     *(.init9)  /* Call main().  */
148     KEEP (*(.init9))
149     *(.text)
150     ${RELOCATING+. = ALIGN(2);}
151     *(.text.*)
152     ${RELOCATING+. = ALIGN(2);}
153     *(.fini9)  /* _exit() starts here.  */
154     KEEP (*(.fini9))
155     *(.fini8)
156     KEEP (*(.fini8))
157     *(.fini7)
158     KEEP (*(.fini7))
159     *(.fini6)  /* C++ destructors.  */
160     KEEP (*(.fini6))
161     *(.fini5)
162     KEEP (*(.fini5))
163     *(.fini4)
164     KEEP (*(.fini4))
165     *(.fini3)
166     KEEP (*(.fini3))
167     *(.fini2)
168     KEEP (*(.fini2))
169     *(.fini1)
170     KEEP (*(.fini1))
171     *(.fini0)  /* Infinite loop after program termination.  */
172     KEEP (*(.fini0))
173     ${RELOCATING+ _etext = . ; }
174   } ${RELOCATING+ > text}
175
176   .data ${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))}
177   {
178     ${RELOCATING+ PROVIDE (__data_start = .) ; }
179     *(.data)
180     KEEP (*(.data))
181     *(.data*)
182     *(.rodata)  /* We need to include .rodata here if gcc is used */
183     *(.rodata*) /* with -fdata-sections.  */
184     *(.gnu.linkonce.d*)
185     ${RELOCATING+. = ALIGN(2);}
186     ${RELOCATING+ _edata = . ; }
187     ${RELOCATING+ PROVIDE (__data_end = .) ; }
188   } ${RELOCATING+ > data}
189
190   .bss ${RELOCATING-0} :${RELOCATING+ AT (ADDR (.bss))}
191   {
192     ${RELOCATING+ PROVIDE (__bss_start = .) ; }
193     *(.bss)
194     *(.bss*)
195     *(COMMON)
196     ${RELOCATING+ PROVIDE (__bss_end = .) ; }
197   } ${RELOCATING+ > data}
198
199   ${RELOCATING+ __data_load_start = LOADADDR(.data); }
200   ${RELOCATING+ __data_load_end = __data_load_start + SIZEOF(.data); }
201
202   /* Global data not cleared after reset.  */
203   .noinit ${RELOCATING-0}:
204   {
205     ${RELOCATING+ PROVIDE (__noinit_start = .) ; }
206     *(.noinit*)
207     ${RELOCATING+ PROVIDE (__noinit_end = .) ; }
208     ${RELOCATING+ _end = . ;  }
209     ${RELOCATING+ PROVIDE (__heap_start = .) ; }
210   } ${RELOCATING+ > data}
211
212   .lock ${RELOCATING-0}:
213   {
214     KEEP(*(.lock*))
215   } ${RELOCATING+ > lock}
216
217   .signature ${RELOCATING-0}:
218   {
219     KEEP(*(.signature*))
220   } ${RELOCATING+ > signature}
221
222   .config ${RELOCATING-0}:
223   {
224     KEEP(*(.config*))
225   } ${RELOCATING+ > config}
226
227   /* Stabs debugging sections.  */
228   .stab 0 : { *(.stab) }
229   .stabstr 0 : { *(.stabstr) }
230   .stab.excl 0 : { *(.stab.excl) }
231   .stab.exclstr 0 : { *(.stab.exclstr) }
232   .stab.index 0 : { *(.stab.index) }
233   .stab.indexstr 0 : { *(.stab.indexstr) }
234   .comment 0 : { *(.comment) }
235  
236   /* DWARF debug sections.
237      Symbols in the DWARF debugging sections are relative to the beginning
238      of the section so we begin them at 0.  */
239
240   /* DWARF 1 */
241   .debug          0 : { *(.debug) }
242   .line           0 : { *(.line) }
243
244   /* GNU DWARF 1 extensions */
245   .debug_srcinfo  0 : { *(.debug_srcinfo) }
246   .debug_sfnames  0 : { *(.debug_sfnames) }
247
248   /* DWARF 1.1 and DWARF 2 */
249   .debug_aranges  0 : { *(.debug_aranges) }
250   .debug_pubnames 0 : { *(.debug_pubnames) }
251
252   /* DWARF 2 */
253   .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
254   .debug_abbrev   0 : { *(.debug_abbrev) }
255   .debug_line     0 : { *(.debug_line) }
256   .debug_frame    0 : { *(.debug_frame) }
257   .debug_str      0 : { *(.debug_str) }
258   .debug_loc      0 : { *(.debug_loc) }
259   .debug_macinfo  0 : { *(.debug_macinfo) }
260 }
261 EOF
262