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