source: atk2-sc3-1.4.0-ntisr/arch/v850_ghs/ldscript.tf

Last change on this file was 172, checked in by ertl-ishikawa, 8 years ago

ATK2-SC3 1.4.0 RH850依存部 非信頼C2ISR対応を追加

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