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