source: atk2-sc3_fl850f1l/arch/gcc/ldscript.tf@ 165

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

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

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