source: atk2-sc3-1.4.0-ntisr/arch/ghs/ldscript.tf@ 172

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

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

  • Property svn:executable set to *
File size: 11.7 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-2015 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 115 2014-12-10 01:33:17Z t_ishikawa $
68$
69
70$ =====================================================================
71$ 仮のリンカスクリプト(cfg2_out.ld)の生成
72$ =====================================================================
73
74$
75$ 生成するファイルの指定
76$
77$FILE "cfg2_out.ld"$
78
79$
80$ ターゲット依存のOUTPUT記述の生成
81$
82$IF ISFUNCTION("GENERATE_OUTPUT")$
83 $GENERATE_OUTPUT()$
84$END$
85
86$
87$ MEMORY記述の生成
88$
89MEMORY {$NL$
90$FOREACH reg REG.ORDER_LIST$
91 $TAB$$FORMAT("%s : ORIGIN = 0x%x, LENGTH = 0x%x",
92 REG.REGNAME[reg], +REG.BASE[reg], +REG.SIZE[reg])$$NL$
93$END$
94$IF ISFUNCTION("GENERATE_MEMORY")$
95 $GENERATE_MEMORY()$
96$END$
97}$NL$
98$NL$
99
100$
101$ 変数の初期化
102$
103$reset_lma = 0$
104$provide_gp = 0$
105
106$
107$ リンク指定の生成
108$
109SECTIONS {$NL$
110$
111$ ターゲット依存のPROVIDE記述の生成
112$
113$IF ISFUNCTION("GENERATE_PROVIDE")$
114 $GENERATE_PROVIDE()$
115$END$
116
117$ ターゲット依存のセクション記述の生成
118$IF ISFUNCTION("GENERATE_SECTION_FIRST")$
119 $GENERATE_SECTION_FIRST()$
120$END$
121
122$IF TOPPERS_LABEL_ASM$
123 $PREFIX_START = "___start_"$
124 $PREFIX_END = "___end_"$
125 $PREFIX_LIMIT = "___limit_"$
126$ELSE$
127 $PREFIX_START = "__start_"$
128 $PREFIX_END = "__end_"$
129 $PREFIX_LIMIT = "__limit_"$
130$END$
131
132$FOREACH moid MO_ORDER$
133 $IF MO.LINKER[moid]$
134$ // セクションの開始記述の生成
135 $IF (MO.SEFLAG[moid] & 0x01) != 0$
136$ // small data section のå…
137ˆé ­ã«.rosdataセクションをé…
138ç½®ã™ã‚‹ãŸã‚ã®
139$ // ダミーセクションé…
140ç½®
141 $IF (MO.SEFLAG[moid] & 0x400) != 0$
142$ $TAB$.rosdata : {$NL$
143 $TAB$.sdabase : {$NL$
144 $TAB$} > $REG.REGNAME[STANDARD_RAM]$$NL$
145 $NL$$NL$
146 $TAB$.rosdata : {$NL$
147 $TAB$} > $REG.REGNAME[STANDARD_RAM]$$NL$
148 $NL$$NL$
149 $END$
150$ // .idataセクションをé…
151ç½®ã™ã‚‹ãŸã‚ã®è¨˜è¿°
152$ // およびアライン記述
153 $IF !OMIT_IDATA && !EQ(MO.ILABEL[moid], "")$
154 $TAB$.ROM_NOCOPY.$MO.SLABEL[moid]$ ROM(.$MO.SLABEL[moid]$): {$NL$
155 $TAB$} > $REG.REGNAME[STANDARD_ROM]$$NL$
156 $TAB$$PREFIX_START$$MO.ILABEL[moid]$ = ADDR(.ROM_NOCOPY.$MO.SLABEL[moid]$);$NL$
157 $END$
158 $TAB$.$MO.SLABEL[moid]$$SPC$
159 $IF (MO.SEFLAG[moid] & 0x40) == 0$
160 ALIGN($TARGET_SEC_ALIGN_STR$)$SPC$
161 $END$
162 $IF (MO.MEMATR[moid] & TA_NOWRITE) == 0
163 && (MO.MEMATR[moid] & TA_MEMINI) == 0$
164 (NOLOAD)$SPC$
165 $END$
166 :$SPC$
167 {$NL$
168 $END$
169
170$ // セクションとメモリオブジェクトの開始ラベルの生成
171 $IF (MO.SEFLAG[moid] & 0x400) != 0$
172 $IF ISFUNCTION("GENERATE_GP_LABEL")$
173 $GENERATE_GP_LABEL()$
174 $END$
175 $END$
176 $IF (MO.SEFLAG[moid] & 0x100) != 0$
177 $IF (MO.MEMATR[moid] & TA_SDATA) == 0$
178 $TAB$$TAB$$PREFIX_START$srpw_all = .;$NL$
179 $ELSE$
180 $TAB$$TAB$$PREFIX_START$ssrpw_all = .;$NL$
181 $END$
182 $END$
183 $IF (MO.SEFLAG[moid] & 0x10) != 0$
184 $IF !EQ(MO.PLABEL[moid], "")$
185 $TAB$$TAB$$PREFIX_START$$MO.PLABEL[moid]$ = .;$NL$
186 $END$
187 $END$
188 $IF (MO.SEFLAG[moid] & 0x01) != 0$
189 $IF !EQ(MO.SLABEL[moid], ALT(omit_start_slabel,""))$
190 $TAB$$TAB$$PREFIX_START$$MO.SLABEL[moid]$ = .;$NL$
191 $END$
192 $END$
193 $IF (MO.SEFLAG[moid] & 0x04) != 0$
194 $IF (MO.SEFLAG[moid] & 0x01) == 0$
195 $NL$
196 $END$
197 $IF !EQ(MO.MLABEL[moid], MO.SLABEL[moid])
198 && !EQ(MO.MLABEL[moid], ALT(omit_start_mlabel,""))$
199 $TAB$$TAB$$PREFIX_START$$MO.MLABEL[moid]$ = .;$NL$
200 $END$
201 $TAB$$TAB$
202 $END$
203
204$ // リンクするファイル記述の生成
205 $section_dscr = SECTION_DESCRIPTION(MO.SECTION[moid])$
206 $IF MO.TYPE[moid] == TOPPERS_ATTMOD$
207 $IF EQ(MO.MODULE[moid], "kernel_mem.o")$
208 $FOREACH sec section_dscr$
209 kernel_mem2.o($sec$)$SPC$
210 $END$
211 $ELSE$
212 $module_name = REGEX_REPLACE(MO.MODULE[moid],"\.a$","\.a(\*")$
213 $FOREACH sec section_dscr$
214 $module_name$($sec$)$SPC$
215 $IF !EQ(MO.MODULE[moid], module_name)$
216 )
217 $END$
218 $END$
219 $SPC$
220 $END$
221 $ELIF MO.TYPE[moid] == TOPPERS_ATTSEC$
222 *($section_dscr$)$SPC$
223 $ELSE$
224$ // ユーザスタック領域
225 Os_Lcfg.o($section_dscr$)$SPC$
226 $END$
227
228$ // セクションとメモリオブジェクトの終了ラベルの生成
229 $IF (MO.SEFLAG[moid] & 0x08) != 0$
230 $NL$
231 $IF !EQ(MO.MLABEL[moid], MO.SLABEL[moid])$
232 $TAB$$TAB$$PREFIX_END$$MO.MLABEL[moid]$ = .;$NL$
233 $END$
234 $END$
235 $IF (MO.SEFLAG[moid] & 0x02) != 0$
236 $TAB$$TAB$$PREFIX_END$$MO.SLABEL[moid]$ = .;$NL$
237 $END$
238 $IF (MO.SEFLAG[moid] & 0x200) != 0$
239 $IF (MO.MEMATR[moid] & TA_SDATA) == 0$
240 $TAB$$TAB$$PREFIX_END$srpw_all = .;$NL$
241 $ELSE$
242 $TAB$$TAB$$PREFIX_END$ssrpw_all = .;$NL$
243 $END$
244 $END$
245
246$ // セクションの終了記述の生成
247 $IF (MO.SEFLAG[moid] & 0x02) != 0$
248 $TAB$} > $REG.REGNAME[MO.MEMREG[moid]]$
249 $IF !OMIT_IDATA$
250 $SPC$
251 $IF !EQ(MO.ILABEL[moid], "")$
252 $reset_lma = 1$
253 $ELIF reset_lma$
254 $reset_lma = 0$
255 $END$
256 $END$
257 $IF ISFUNCTION("TARGET_CODE_FILLER")$
258 $TARGET_CODE_FILLER(moid)$
259 $END$
260 $NL$
261$ // =begin deleted for ghs
262$ $IF !OMIT_IDATA && !EQ(MO.ILABEL[moid], "")$
263$ $TAB$$PREFIX_START$$MO.ILABEL[moid]$ = LOADADDR(.$MO.SLABEL[moid]$);$NL$
264$ $END$
265$ // =end deleted for ghs
266 $END$
267
268$ // アライン記述の生成
269 $IF (MO.SEFLAG[moid] & 0x20) != 0$
270 $TAB$. = ALIGN($TARGET_PAGE_SIZE_STR$);$NL$
271 $ELIF (MO.SEFLAG[moid] & 0x08) != 0$
272$ // セクションが継続している場合には,TABを1つ出力
273 $IF (MO.SEFLAG[moid] & 0x02) == 0$$TAB$$END$
274 $TAB$. = ALIGN($TARGET_SEC_ALIGN_STR$);$NL$
275 $END$
276
277$ // セクションとメモリオブジェクトの上限ラベルの生成
278 $IF (MO.SEFLAG[moid] & 0x08) != 0$
279 $IF !EQ(MO.MLABEL[moid], MO.SLABEL[moid])$
280$ // セクションが継続している場合には,TABを1つ出力
281 $IF (MO.SEFLAG[moid] & 0x02) == 0$$TAB$$END$
282 $TAB$$PREFIX_LIMIT$$MO.MLABEL[moid]$ = .;$NL$
283 $END$
284 $END$
285 $IF (MO.SEFLAG[moid] & 0x02) != 0$
286 $TAB$$PREFIX_LIMIT$$MO.SLABEL[moid]$ = .;$NL$
287 $END$
288 $IF (MO.SEFLAG[moid] & 0x20) != 0$
289 $IF !EQ(MO.PLABEL[moid], "")$
290 $TAB$$PREFIX_LIMIT$$MO.PLABEL[moid]$ = .;$NL$
291 $END$
292 $END$
293 $IF (MO.SEFLAG[moid] & 0x200) != 0$
294 $IF (MO.MEMATR[moid] & TA_SDATA) == 0$
295 $TAB$$PREFIX_LIMIT$srpw_all = .;$NL$
296 $ELSE$
297 $TAB$$PREFIX_LIMIT$ssrpw_all = .;$NL$
298 $END$
299 $END$
300
301 $IF (MO.SEFLAG[moid] & 0x02) != 0$
302 $NL$
303 $END$
304
305$ // メモリリージョン末でアラインさせるためのダミーセクションの生成
306 $IF (MO.SEFLAG[moid] & 0x80) != 0$
307 $TAB$.$REG.REGNAME[MO.MEMREG[moid]]$_align$SPC$
308 ALIGN($TARGET_SEC_ALIGN_STR$) : {$NL$
309 $TAB$$TAB$__$REG.REGNAME[MO.MEMREG[moid]]$_align = .;$NL$
310$ // 中身が空の出力セクションはリンカによって無視されるため,
311$ // ダミーのデータをå…
312¥ã‚Œã¦ãŠã
313 $TAB$$TAB$. += 1; /*dummy*/$NL$
314 $TAB$} > $REG.REGNAME[MO.MEMREG[moid]]$ $NL$
315 $TAB$. = ALIGN($TARGET_SEC_ALIGN_STR$);$NL$
316 $TAB$___$REG.REGNAME[MO.MEMREG[moid]]$_align = .;$NL$
317 $NL$
318 $END$
319
320 $preid = moid$
321 $END$
322$END$
323
324$FOREACH lsid RANGE(1, numls)$
325 $TAB$$LNKSEC.SECTION[lsid]$ ALIGN(16) : {$NL$
326 $TAB$$TAB$*($LNKSEC.SECTION[lsid]$)$NL$
327 $TAB$} > $REG.REGNAME[LNKSEC.MEMREG[lsid]]$$NL$
328 $NL$
329$END$
330
331$ // C++testで必
332要な標準ライブラリで使用するセクション
333$TAB$.dummy_rom_for_cpptest : {$NL$
334$TAB$$TAB$*(.ctors.65535) *(.eh_frame)$NL$
335$TAB$} > $REG.REGNAME[STANDARD_ROM]$$NL$
336$TAB$. = ALIGN(64);$NL$$NL$
337$TAB$.dummy_ram_for_cpptest : {$NL$
338$TAB$$TAB$_end = .;$NL$
339$TAB$} > $REG.REGNAME[STANDARD_RAM]$$NL$
340$TAB$. = ALIGN(64);$NL$$NL$
341
342$TAB$.tdata ALIGN (4) :$NL$
343$TAB${$NL$
344$TAB$ PROVIDE(__ep = .);$NL$
345$TAB$ *(.tbyte)$NL$
346$TAB$ *(.tcommon_byte)$NL$
347$TAB$ *(.tdata)$NL$
348$TAB$ *(.tbss)$NL$
349$TAB$ *(.tcommon)$NL$
350$TAB$} > $REG.REGNAME[STANDARD_RAM]$$NL$
351$NL$$NL$
352
353$TAB$/DISCARD/ : {$NL$
354$TAB$$TAB$*(.rel.dyn)$NL$
355$TAB$}$NL$
356$NL$
357
358$TAB$/* DWARF debug sections.$NL$
359$TAB$Symbols in the DWARF debugging sections are relative to $NL$
360$TAB$the beginning of the section so we begin them at 0. */$NL$
361$NL$
362$TAB$/* DWARF 1 */$NL$
363$TAB$.debug 0 : { *(.debug) }$NL$
364$TAB$.line 0 : { *(.line) }$NL$
365$NL$
366$TAB$/* GNU DWARF 1 extensions */$NL$
367$TAB$.debug_srcinfo 0 : { *(.debug_srcinfo) }$NL$
368$TAB$.debug_sfnames 0 : { *(.debug_sfnames) }$NL$
369$NL$
370}$NL$
Note: See TracBrowser for help on using the repository browser.