source: atk2-sc3_fl850f1l/arch/v850_gcc/ldscript.tf@ 117

Last change on this file since 117 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

File size: 10.7 KB
RevLine 
[117]1$
2$ TOPPERS ATK2
3$ Toyohashi Open Platform for Embedded Real-Time Systems
4$ Automotive Kernel Version 2
5$
6$ Copyright (C) 2007-2013 by Center for Embedded Computing Systems
7$ Graduate School of Information Science, Nagoya Univ., JAPAN
8$ Copyright (C) 2011-2013 by FUJISOFT INCORPORATED, JAPAN
9$ Copyright (C) 2011-2013 by FUJITSU VLSI LIMITED, JAPAN
10$ Copyright (C) 2011-2013 by NEC Communication Systems, Ltd., JAPAN
11$ Copyright (C) 2011-2013 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
12$ Copyright (C) 2011-2013 by Renesas Electronics Corporation, JAPAN
13$ Copyright (C) 2011-2013 by Sunny Giken Inc., JAPAN
14$ Copyright (C) 2011-2013 by TOSHIBA CORPORATION, JAPAN
15$ Copyright (C) 2011-2013 by Witz Corporation, JAPAN
16$
17$ 上記著作権者は,以下の(1)(4)の条件を満たす場合に限り,本ソフトウェ
18$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
19$ 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
20$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
21$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
22$ スコード中に含まれていること.
23$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
24$ 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
25$ 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
26$ の無保証規定を掲載すること.
27$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28$ 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
29$ と.
30$ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
31$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
32$ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
33$ 報告すること.
34$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
35$ 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
36$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
37$ 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
38$ 免責すること.
39$
40$ AUTOSAR(AUTomotive Open System ARchitecture)は,AUTOSAR仕様に基づ
41$ いたソフトウェアを商用目的で利用する者に対して,AUTOSARパートナーに
42$ なることを求めている.
43$
44$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
45$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
46$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
47$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
48$ の責任を負わない.
49$
50$ $Id: ldscript.tf 117 2014-12-10 03:58:03Z t_ishikawa $
51$
52
53$ =====================================================================
54$ リンカスクリプトの生成
55$ =====================================================================
56$FILE "cfg3_out.ld"$
57
58/* This file is generated by v850_gcc/ldscript.tf */$NL$
59
60$
61$ ターゲット依存のOUTPUT記述の生成
62$
63$IF ISFUNCTION("GENERATE_OUTPUT")$
64 $GENERATE_OUTPUT()$
65$END$
66
67$
68$ MEMORY記述の生成
69$
70MEMORY {$NL$
71$FOREACH reg REG.ORDER_LIST$
72 $TAB$$FORMAT("%s : ORIGIN = 0x%x, LENGTH = 0x%x",
73 REG.REGNAME[reg], +REG.BASE[reg], +REG.SIZE[reg])$$NL$
74$END$
75$IF ISFUNCTION("GENERATE_MEMORY")$
76 $GENERATE_MEMORY()$
77$END$
78}$NL$
79$NL$
80
81$
82$ ターゲット依存のPROVIDE記述の生成
83$
84$IF ISFUNCTION("GENERATE_PROVIDE")$
85 $GENERATE_PROVIDE()$
86$END$
87
88$
89$ 変数の初期化
90$
91$reset_lma = 0$
92$provide_gp = 0$
93
94$
95$ リンク指定の生成
96$
97SECTIONS {$NL$
98$ ターゲット依存のセクション記述の生成
99$IF ISFUNCTION("GENERATE_SECTION_FIRST")$
100 $GENERATE_SECTION_FIRST()$
101$END$
102
103$IF TOPPERS_LABEL_ASM$
104 $PREFIX_START = "___start_"$
105 $PREFIX_END = "___end_"$
106 $PREFIX_LIMIT = "___limit_"$
107$ELSE$
108 $PREFIX_START = "__start_"$
109 $PREFIX_END = "__end_"$
110 $PREFIX_LIMIT = "__limit_"$
111$END$
112
113$FOREACH moid MO_ORDER$
114 $IF MO.LINKER[moid]$
115$ // セクションの開始記述の生成
116 $IF (MO.SEFLAG[moid] & 0x01) != 0$
117 $TAB$.$MO.SLABEL[moid]$$SPC$
118 $IF (MO.SEFLAG[moid] & 0x40) == 0$
119 $IF LENGTH(MO.REALBASE[moid])$
120 ($FORMAT("0x%x", MO.REALBASE[moid])$)$SPC$
121 $ELSE$
122 ALIGN($TARGET_SEC_ALIGN_STR$)$SPC$
123 $END$
124 $ELIF LENGTH(MO.REALBASE[moid])$
125 ($FORMAT("0x%x", MO.REALBASE[moid])$)$SPC$
126 $END$
127 $IF (MO.MEMATR[moid] & TA_NOWRITE) == 0
128 && (MO.MEMATR[moid] & TA_MEMINI) == 0$
129 (NOLOAD)$SPC$
130 $END$
131 :$SPC$
132 $IF !EQ(MO.ILABEL[moid], "")$
133 ALIGN($TARGET_SEC_ALIGN_STR$)$SPC$
134 $END$
135 {
136 $IF LENGTH(MO.COMMENT[moid])$
137 $SPC$/* $MO.COMMENT[moid]$ */$SPC$
138 $END$
139 $NL$
140 $END$
141
142$ // セクションとメモリオブジェクトの開始ラベルの生成
143 $IF (MO.SEFLAG[moid] & 0x400) != 0$
144 $IF ISFUNCTION("GENERATE_GP_LABEL")$
145 $GENERATE_GP_LABEL()$
146 $END$
147 $END$
148 $IF (MO.SEFLAG[moid] & 0x100) != 0$
149 $IF (MO.MEMATR[moid] & TA_SDATA) == 0$
150 $TAB$$TAB$$PREFIX_START$srpw_all = .;$NL$
151 $ELSE$
152 $TAB$$TAB$$PREFIX_START$ssrpw_all = .;$NL$
153 $END$
154 $END$
155 $IF (MO.SEFLAG[moid] & 0x10) != 0$
156 $IF !EQ(MO.PLABEL[moid], "")$
157 $TAB$$TAB$$PREFIX_START$$MO.PLABEL[moid]$ = .;$NL$
158 $END$
159 $END$
160 $IF (MO.SEFLAG[moid] & 0x01) != 0$
161 $IF !EQ(MO.SLABEL[moid], ALT(omit_start_slabel,""))$
162 $TAB$$TAB$$PREFIX_START$$MO.SLABEL[moid]$ = .;$NL$
163 $END$
164 $END$
165 $IF (MO.SEFLAG[moid] & 0x04) != 0$
166 $IF (MO.SEFLAG[moid] & 0x01) == 0$
167 $NL$
168 $END$
169 $IF !EQ(MO.MLABEL[moid], MO.SLABEL[moid])
170 && !EQ(MO.MLABEL[moid], ALT(omit_start_mlabel,""))$
171 $TAB$$TAB$$PREFIX_START$$MO.MLABEL[moid]$ = .;$NL$
172 $END$
173 $TAB$$TAB$
174 $END$
175
176$ // リンクするファイル記述の生成
177 $section_dscr = SECTION_DESCRIPTION(MO.SECTION[moid])$
178 $IF MO.TYPE[moid] == TOPPERS_ATTMOD$
179 $IF EQ(MO.MODULE[moid], "kernel_mem.o")$
180 kernel_mem3.o
181 $ELSE$
182 $MO.MODULE[moid]$
183 $END$
184 ($section_dscr$)$SPC$
185 $ELIF MO.TYPE[moid] == TOPPERS_ATTSEC$
186 *($section_dscr$)$SPC$
187 $ELSE$
188$ // ユーザスタック領域
189 Os_Lcfg.o($section_dscr$)$SPC$
190 $END$
191
192$ // セクションとメモリオブジェクトの終了ラベルの生成
193 $IF (MO.SEFLAG[moid] & 0x08) != 0$
194 $NL$
195 $IF !EQ(MO.MLABEL[moid], MO.SLABEL[moid])$
196 $TAB$$TAB$$PREFIX_END$$MO.MLABEL[moid]$ = .;$NL$
197 $END$
198 $END$
199 $IF (MO.SEFLAG[moid] & 0x02) != 0$
200 $TAB$$TAB$$PREFIX_END$$MO.SLABEL[moid]$ = .;$NL$
201 $END$
202 $IF (MO.SEFLAG[moid] & 0x200) != 0$
203 $IF (MO.MEMATR[moid] & TA_SDATA) == 0$
204 $TAB$$TAB$$PREFIX_END$srpw_all = .;$NL$
205 $ELSE$
206 $TAB$$TAB$$PREFIX_END$ssrpw_all = .;$NL$
207 $END$
208 $END$
209
210$ // セクションの終了記述の生成
211 $IF (MO.SEFLAG[moid] & 0x02) != 0$
212 $TAB$} > $REG.REGNAME[MO.MEMREG[moid]]$
213 $IF !OMIT_IDATA$
214 $IF !EQ(MO.ILABEL[moid], "")$
215 $SPC$AT > $REG.REGNAME[STANDARD_ROM]$
216 $reset_lma = 1$
217 $ELIF reset_lma$
218 $SPC$AT > $REG.REGNAME[MO.MEMREG[moid]]$
219 $reset_lma = 0$
220 $END$
221 $END$$NL$
222 $IF !OMIT_IDATA && !EQ(MO.ILABEL[moid], "")$
223 $TAB$$PREFIX_START$$MO.ILABEL[moid]$ = LOADADDR(.$MO.SLABEL[moid]$);$NL$
224 $END$
225 $END$
226
227$ // アライン記述の生成
228 $IF LENGTH(MO.REALALIGN[moid])$
229 $TAB$. = ALIGN($FORMAT("0x%x", +MO.REALALIGN[moid])$); /* sdata_shared_align */$NL$
230 $ELIF (MO.SEFLAG[moid] & 0x20) != 0$
231 $TAB$. = ALIGN($TARGET_PAGE_SIZE_STR$);$NL$
232 $ELIF (MO.SEFLAG[moid] & 0x08) != 0$
233$ // セクションが継続している場合には,TABを1つ出力
234 $IF (MO.SEFLAG[moid] & 0x02) == 0$$TAB$$END$
235 $TAB$. = ALIGN($TARGET_SEC_ALIGN_STR$);$NL$
236 $END$
237
238$ // セクションとメモリオブジェクトの上限ラベルの生成
239 $IF (MO.SEFLAG[moid] & 0x08) != 0$
240 $IF !EQ(MO.MLABEL[moid], MO.SLABEL[moid])$
241$ // セクションが継続している場合には,TABを1つ出力
242 $IF (MO.SEFLAG[moid] & 0x02) == 0$$TAB$$END$
243 $TAB$$PREFIX_LIMIT$$MO.MLABEL[moid]$ = .;$NL$
244 $END$
245 $END$
246 $IF (MO.SEFLAG[moid] & 0x02) != 0$
247 $TAB$$PREFIX_LIMIT$$MO.SLABEL[moid]$ = .;$NL$
248 $END$
249 $IF (MO.SEFLAG[moid] & 0x20) != 0$
250 $IF !EQ(MO.PLABEL[moid], "")$
251 $TAB$$PREFIX_LIMIT$$MO.PLABEL[moid]$ = .;$NL$
252 $END$
253 $END$
254 $IF (MO.SEFLAG[moid] & 0x200) != 0$
255 $IF (MO.MEMATR[moid] & TA_SDATA) == 0$
256 $TAB$$PREFIX_LIMIT$srpw_all = .;$NL$
257 $ELSE$
258 $TAB$$PREFIX_LIMIT$ssrpw_all = .;$NL$
259 $END$
260 $END$
261
262 $IF (MO.SEFLAG[moid] & 0x02) != 0$
263 $NL$
264 $END$
265
266$ // メモリリージョン末でアラインさせるためのダミーセクションの生成
267 $IF (MO.SEFLAG[moid] & 0x80) != 0$
268 $TAB$.$REG.REGNAME[MO.MEMREG[moid]]$_align$SPC$
269 $IF LENGTH(REG.LIMIT_ALIGN[MO.MEMREG[moid]])$
270 ($FORMAT("0x%x", REG.LIMIT_ALIGN[MO.MEMREG[moid]])$)$SPC$
271 $ELSE$
272 ALIGN($TARGET_SEC_ALIGN_STR$)$SPC$
273 $END$
274 : ALIGN($TARGET_SEC_ALIGN_STR$) {$NL$
275 $TAB$$TAB$__$REG.REGNAME[MO.MEMREG[moid]]$_align = .;$NL$
276$ // 中身が空の出力セクションはリンカによって無視されるため,
277$ // ダミーのデータを入れておく
278 $TAB$$TAB$LONG(1); /*dummy*/$NL$
279 $TAB$} > $REG.REGNAME[MO.MEMREG[moid]]$ AT > $REG.REGNAME[MO.MEMREG[moid]]$$NL$
280 $TAB$. = ALIGN($TARGET_SEC_ALIGN_STR$);$NL$
281 $TAB$___$REG.REGNAME[MO.MEMREG[moid]]$_align = .;$NL$
282 $NL$
283 $END$
284 $END$
285$END$
286
287$FOREACH lsid RANGE(1, numls)$
288 $TAB$$LNKSEC.SECTION[lsid]$ : {$NL$
289 $TAB$$TAB$*($LNKSEC.SECTION[lsid]$)$NL$
290 $TAB$} > $REG.REGNAME[LNKSEC.MEMREG[lsid]]$ AT > $REG.REGNAME[LNKSEC.MEMREG[lsid]]$$NL$
291 $NL$
292$END$
293
294$ // C++testで必要な標準ライブラリで使用するセクション
295$TAB$.dummy_rom_for_cpptest : {$NL$
296$TAB$$TAB$*(.ctors.65535) *(.eh_frame)$NL$
297$TAB$} > $REG.REGNAME[STANDARD_ROM]$$NL$
298$TAB$. = ALIGN(64);$NL$$NL$
299$TAB$.dummy_ram_for_cpptest : {$NL$
300$TAB$$TAB$_end = .;$NL$
301$TAB$} > $REG.REGNAME[STANDARD_RAM]$$NL$
302$TAB$. = ALIGN(64);$NL$$NL$
303
304$TAB$/DISCARD/ : {$NL$
305$TAB$$TAB$*(.rel.dyn)$NL$
306$TAB$}$NL$
307$NL$
308
309$TAB$/* DWARF debug sections.$NL$
310$TAB$Symbols in the DWARF debugging sections are relative to $NL$
311$TAB$the beginning of the section so we begin them at 0. */$NL$
312$NL$
313$TAB$/* DWARF 1 */$NL$
314$TAB$.debug 0 : { *(.debug) }$NL$
315$TAB$.line 0 : { *(.line) }$NL$
316$NL$
317$TAB$/* GNU DWARF 1 extensions */$NL$
318$TAB$.debug_srcinfo 0 : { *(.debug_srcinfo) }$NL$
319$TAB$.debug_sfnames 0 : { *(.debug_sfnames) }$NL$
320$NL$
321$TAB$/* DWARF 1.1 and DWARF 2 */$NL$
322$TAB$.debug_aranges 0 : { *(.debug_aranges) }$NL$
323$TAB$.debug_pubnames 0 : { *(.debug_pubnames) }$NL$
324$NL$
325$TAB$/* DWARF 2 */$NL$
326$TAB$.debug_info 0 : { *(.debug_info) }$NL$
327$TAB$.debug_abbrev 0 : { *(.debug_abbrev) }$NL$
328$TAB$.debug_line 0 : { *(.debug_line) }$NL$
329$TAB$.debug_frame 0 : { *(.debug_frame) }$NL$
330$TAB$.debug_str 0 : { *(.debug_str) }$NL$
331$TAB$.debug_loc 0 : { *(.debug_loc) }$NL$
332$TAB$.debug_macinfo 0 : { *(.debug_macinfo) }$NL$
333$TAB$.debug_ranges 0 : { *(.debug_ranges) }$NL$
334$NL$
335$TAB$/* SGI/MIPS DWARF 2 extensions */$NL$
336$TAB$.debug_weaknames 0 : { *(.debug_weaknames) }$NL$
337$TAB$.debug_funcnames 0 : { *(.debug_funcnames) }$NL$
338$TAB$.debug_typenames 0 : { *(.debug_typenames) }$NL$
339$TAB$.debug_varnames 0 : { *(.debug_varnames) }$NL$
340$NL$
341}$NL$
Note: See TracBrowser for help on using the repository browser.