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