RealView Compilation Tools ãªã³ã«ãªãã¡ã¬ã³ã¹ã¬ã¤ã - ARM ...
RealView Compilation Tools ãªã³ã«ãªãã¡ã¬ã³ã¹ã¬ã¤ã - ARM ...
RealView Compilation Tools ãªã³ã«ãªãã¡ã¬ã³ã¹ã¬ã¤ã - ARM ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
®<br />
<strong>RealView</strong><br />
<strong>Compilation</strong> <strong>Tools</strong><br />
バージ ョ ン 4.0<br />
リンカリファレンスガイド<br />
Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved.<br />
<strong>ARM</strong> DUI 0381AJ
<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong><br />
リンカリファレンスガイド<br />
Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved.<br />
リリース 情 報<br />
本 書 には 以 下 の 変 更 が 加 え ら れています。<br />
変 更 履 歴<br />
日 付<br />
発 行<br />
機 密 保 持 ステー タ<br />
ス<br />
変 更 点<br />
2008 年 9 月 A 非 機 密 扱 い <strong>ARM</strong> ® <strong>RealView</strong> ® Development Suite リリース 4.0<br />
著 作 権<br />
®<br />
または のマー ク が 付 いた 言 葉 やロ ゴは、 こ の 著 作 権 情 報 で 別 途 規 定 さ れてい る 場 合 を 除 き、<br />
<strong>ARM</strong> Limited の EU ま たはその 他 の 国 におけ る 登 録 商 標 および 商 標 です。 本 書 に 記 載 さ れてい る 他<br />
の 製 品 名 は、 各 社 の 所 有 する 商 標 です。<br />
本 書 に 記 載 さ れてい る 情 報 の 全 部 ま たは 一 部 、 な らびに 本 書 で 紹 介 する 製 品 は、 著 作 権 所 有 者 の<br />
文 書 に よ る 事 前 の 許 可 を 得 ない 限 り 、 転 用 ・ 複 製 する こ と を 禁 じ ます。<br />
本 書 に 記 載 さ れてい る 製 品 は、 今 後 も 継 続 的 に 開 発 ・ 改 良 の 対 象 と な り ます。 本 書 に 含 まれる 製<br />
品 およびその 利 用 方 法 についての 情 報 は、 <strong>ARM</strong> が 利 用 者 の 利 益 のために 提 供 する ものです。 した<br />
がって 当 社 では、 製 品 の 市 販 性 ま たは 利 用 の 適 切 性 を 含 め、 暗 示 的 ・ 明 示 的 に 関 係 な く 一 切 の 責<br />
任 を 負 いません。<br />
本 書 は、 本 製 品 の 利 用 者 をサポー ト する こ と だけを 目 的 と し ています。 本 書 に 記 載 さ れている 情<br />
報 の 使 用 、 情 報 の 誤 り や 欠 落 、 ま たは 本 製 品 の 誤 使 用 に よ って 生 じ た 損 失 や 損 傷 について、<br />
<strong>ARM</strong> Limited は 一 切 責 任 を 負 いません。<br />
<strong>ARM</strong> と い う 語 が 使 用 さ れてい る 場 合 、 “<strong>ARM</strong> または 必 要 に 応 じてその 子 会 社 ” を 指 し ます。<br />
機 密 保 持 ステー タ ス<br />
本 書 は 非 機 密 扱 いであ り 、 本 書 を 使 用 、 複 製 、 および 開 示 する 権 利 は、 <strong>ARM</strong> および <strong>ARM</strong> が 本 書<br />
を 提 供 し た 当 事 者 と の 間 で 締 結 し た 契 約 の 条 項 に 基 づいた ラ イ セン スの 制 限 に よ り 異 な り ます。<br />
アクセス 制 限 は、 <strong>ARM</strong> 社 内 に よ る 分 類 です。<br />
製 品 ステー タ ス<br />
本 書 の 情 報 は 最 終 版 であ り 、 開 発 済 み 製 品 に 対 応 し ています。<br />
Web アドレス<br />
http://www.arm.com<br />
ii Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
目 次<br />
<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong><br />
リンカリファレンスガイド<br />
序 章<br />
本 書 について ................................................................................................. vi<br />
フィードバック .............................................................................................. x<br />
第 1 章<br />
第 2 章<br />
第 3 章<br />
はじめに<br />
1.1 <strong>ARM</strong> リンカ ................................................................................................ 1-2<br />
1.2 従 来 のオブジ ェ ク ト やラ イ ブ ラ リ との 互 換 性 ............................................ 1-3<br />
リンカコマンドラインオプショ ン<br />
2.1 コマンドラインオプション ......................................................................... 2-2<br />
2.2 ステアリングファイルのコマンド ............................................................ 2-73<br />
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.1 BNF 記 法 と 構 文 .......................................................................................... 3-2<br />
3.2 スキャ ッ タ ロー ド 記 述 フ ァ イルに 使 用 される 構 文 の 概 要 .......................... 3-3<br />
3.3 ロー ド 領 域 の 記 述 ....................................................................................... 3-4<br />
3.4 実 行 領 域 の 記 述 ........................................................................................... 3-7<br />
3.5 ア ド レス 指 定 属 性 ..................................................................................... 3-11<br />
3.6 入 力 セ ク シ ョ ンの 記 述 .............................................................................. 3-14<br />
3.7 複 数 のマ ッ チングの 解 決 .......................................................................... 3-20<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. iii<br />
Non-Confidential
3.8 パス 名 の 解 決 ............................................................................................ 3-24<br />
3.9 スキャ ッ タ フ ァ イル 内 の 式 の 評 価 ............................................................ 3-25<br />
第 4 章<br />
BPABI および SysV の 共 有 ライブラ リ と 実 行 可 能 ファイル<br />
4.1 BPABI について .......................................................................................... 4-2<br />
4.2 BPABI がサポー ト し ているプ ラ ッ ト フ ォーム ........................................... 4-3<br />
4.3 すべての BPABI モデルに 共 通 する 概 念 ..................................................... 4-4<br />
4.4 SysV モデルの 使 用 ..................................................................................... 4-8<br />
4.5 ベアメ タルモデルと DLL 類 似 モデルの 使 用 ............................................ 4-11<br />
iv Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
序 章<br />
本 章 では、 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> リンカリファレンスガイド』 について<br />
概 説 し ます。 以 下 のセ ク シ ョ ンか ら 構 成 さ れています。<br />
• 「 本 書 について」 (ページ vi)<br />
• 「フ ィードバッ ク」 (ページ x)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. v<br />
Non-Confidential
序 章<br />
本 書 について<br />
本 書 は、 <strong>ARM</strong> <strong>RealView</strong> ® <strong>Compilation</strong> <strong>Tools</strong> に 付 属 の <strong>ARM</strong> ® リンカ armlink につ<br />
いて 説 明 し ています。<br />
コマンド ラインオプショ ン、 ステアリ ングファイルのコマンド、 スキャッタ<br />
ロード 記 述 ファ イル、 Base Platform アプ リ ケーシ ョ ンバイナ リ インタフェー<br />
ス (BPABI)、 および System V リリース 4 (SysV) の 共 有 ラ イ ブ ラ リ と 実 行 可<br />
能 フ ァ イ ルについて 詳 し く 説 明 し ます。 ツールの 使 用 と 管 理 に 関 する 一 般 的<br />
な 情 報 については、 『リンカユーザガイド』 を 参 照 して 下 さい。<br />
対 象 読 者<br />
本 書 は、 <strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> を 使 用 してアプ リ ケーシ ョ ンを 作 成 して<br />
い る 開 発 者 を 対 象 と し ています。 本 書 の 内 容 は、 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong><br />
エッセンシャルガイド』 で 説 明 し ている <strong>ARM</strong> 開 発 ツールに 熟 知 し た 経 験 豊<br />
富 な ソ フ ト ウ ェ ア 開 発 者 を 対 象 に 書 かれています。<br />
本 書 の 構 成<br />
本 書 は 以 下 の 章 から 構 成 されています。<br />
第 1 章 はじめに<br />
リンカの 概 要 を 説 明 します。<br />
第 2 章 リンカコマンドラインオプション<br />
リンカでサポートされているコマンドラインオプションとステ<br />
アア リ ングファ イルのコマンドについて 説 明 します。<br />
第 3 章 スキャッタロード 記 述 ファイルの 正 式 な 構 文<br />
ス キ ャ ッ タ ロー ド 記 述 フ ァ イルについて 説 明 し ます。<br />
第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
BPABI および SysV の 共 有 ラ イブラ リ と 実 行 可 能 フ ァ イルについ<br />
て 説 明 し ます。<br />
本 書 では、 <strong>ARM</strong> ソ フ ト ウ ェ アがデフ ォル ト の 場 所 にイ ン ス ト ールされている<br />
ことを 前 提 としています。 例 えば、 Windows 環 境 では、 デフ ォル ト の 場 所 は<br />
volume:\Program Files\<strong>ARM</strong> にな り ます。 パス 名 を 参 照 する 際 、 install_directory の<br />
部 分 をこの 場 所 に 読 み 替 えて 下 さい。 例 えば、 本 書 では、<br />
vi Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
序 章<br />
install_directory\Documentation\... のよ うなパス 名 が 使 用 されます。 <strong>ARM</strong> ソフ<br />
ト ウ ェ アを 別 の 場 所 にイ ン ス ト ールし た 場 合 は、 フ ァ イルパスの 見 方 を 変 え<br />
る 必 要 があ り ます。<br />
表 記 規 則<br />
本 書 では 以 下 の 表 記 規 則 を 使 用 し ています。<br />
monospace<br />
monospace<br />
コマンド、 ファイル 名 、 プログラム 名 、 ソースコードなど、<br />
キーボードから 入 力 可 能 なテキス ト を 示 しています。<br />
コ マン ド ま たはオプシ ョ ンに 使 用 可 能 な 略 語 を 示 し ます。 コマン<br />
ド 名 ま たはオプシ ョ ン 名 をすべて 入 力 する 代 わ り に、 下 線 部 分<br />
の 文 字 だけを 入 力 する こ と がで き ます。<br />
monospace italic<br />
コマン ド または 関 数 の 引 数 で、 特 定 の 値 に 置 き 換 える こ と が 可<br />
能 なものを 示 しています。<br />
monospace bold<br />
サンプルコード 以 外 に 使 用 される 言 語 キーワード を 示 していま<br />
す。<br />
italic<br />
bold<br />
重 要 事 項 、 重 要 用 語 、 相 互 参 照 、 引 用 箇 所 を 斜 体 で 記 載 し てい<br />
ます。<br />
メ ニュー 名 などのユーザインタフェース 要 素 を 太 字 で 記 載 して<br />
います。 ま た、 適 宜 記 述 リ ス ト 内 の 重 要 箇 所 と <strong>ARM</strong> プロセッサ<br />
の 信 号 名 に も 太 字 を 用 いています。<br />
参 考 資 料<br />
ここでは、<strong>ARM</strong> プ ロ セ ッ サフ ァ ミ リ の コー ド 開 発 に 関 する 補 足 情 報 を 記 載 し<br />
た <strong>ARM</strong> Limited および 各 社 の 出 版 物 を 紹 介 し ます。<br />
<strong>ARM</strong> Limited は 自 社 出 版 物 の 定 期 的 な 更 新 ・ 修 正 を 行 っています。 最 新 の 正 誤<br />
表 、 追 補 表 、 <strong>ARM</strong> に 関 する FAQ については、<br />
http://infocenter.arm.com/help/index.jsp を ご 覧 下 さ い。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. vii<br />
Non-Confidential
序 章<br />
<strong>ARM</strong> の 出 版 物<br />
本 書 には、 <strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> に 付 属 の <strong>ARM</strong> リ ン カに 固 有 の 参 照 情 報<br />
が 記 載 されています。 こ のほか、 本 製 品 には 以 下 のマニ ュ アルが 同 梱 さ れて<br />
います。<br />
• 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> エッセンシャルガイド』 (<strong>ARM</strong> DUI 0202J)<br />
• 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> コンパイラユーザガイド』 (<strong>ARM</strong> DUI 0205J)<br />
• 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> コンパイラ リファレンスガイド』 (<strong>ARM</strong> DUI<br />
0348J)<br />
• 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> リンカユーザガイド』 (<strong>ARM</strong> DUI 0206J)<br />
• 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> ユーテ ィ リ テ ィ ガイ ド』 (<strong>ARM</strong> DUI 0382J)<br />
• 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> ライブラリ / 浮 動 小 数 点 サポー ト ガ イ ド 』<br />
(<strong>ARM</strong> DUI 0349J)<br />
• 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> アセンブラガイ ド』 (<strong>ARM</strong> DUI 0204J)<br />
• 『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> デベロ ッ パガ イ ド 』 (<strong>ARM</strong> DUI 0203J)<br />
準 拠 する 基 本 標 準 、 ソ フ ト ウ ェ ア イ ン タ フ ェース、 および <strong>ARM</strong> がサポー ト<br />
し ている 規 格 の 詳 細 については、<br />
install_directory\Documentation\Specifications\... を 参 照 して 下 さい。<br />
特 定 の <strong>ARM</strong> 製 品 に 関 する 情 報 については、 以 下 のマニ ュ アルを 参 照 し て 下<br />
さい。<br />
• 『<strong>ARM</strong> アーキテクチャ リ フ ァ レンスマニュアル』、 <strong>ARM</strong>v7-A および<br />
<strong>ARM</strong>v7-R エデ ィ シ ョ ン (<strong>ARM</strong> DDI 0406)<br />
• 『<strong>ARM</strong>7-M アーキテクチャ リ フ ァ レンスマニュアル』 (<strong>ARM</strong> DDI 0403)<br />
• 『<strong>ARM</strong>6-M アーキテクチャ リ フ ァ レンスマニュアル』 (<strong>ARM</strong> DDI 0419)<br />
• 『<strong>ARM</strong> アーキテクチャ リ フ ァ レンスマニュアル』 (<strong>ARM</strong> DDI 0100)<br />
• お 使 いのハー ド ウ ェ アデバ イ スの <strong>ARM</strong> データ シー ト ま たはテ ク ニカル<br />
リファレンスマニュアル<br />
viii Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
序 章<br />
他 の 出 版 物<br />
Linux Standard Base 仕 様 の 詳 細 については、 http://www.linux-foundation.org を<br />
参 照 し て 下 さ い。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. ix<br />
Non-Confidential
序 章<br />
フィードバック<br />
<strong>ARM</strong> Limited では <strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> および 本 書 に 関 する フ ィ ー ド<br />
バックをお 待 ちしており ます。<br />
<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> に 関 する フ ィ ー ドバッ ク<br />
<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> に 関 し て 問 題 があ る 場 合 は、 購 入 元 にお 問 い 合 わ<br />
せ 下 さ い。 迅 速 かつ 適 切 な 対 応 を させて 頂 く ために、 以 下 の 情 報 を ご 用 意 下<br />
さい。<br />
• お 名 前 と 会 社 名<br />
• 製 品 のシ リ アル 番 号<br />
• 製 品 の リ リ ース 情 報<br />
• プラッ ト フォームの 詳 細 (ハードウェアプラッ ト フォーム、 オペレー<br />
ティングシステムの 種 類 とバージョンなど)<br />
• 問 題 を 再 現 するサ イ ズの 小 さ な 独 立 し たサンプルコー ド<br />
• 操 作 の 目 的 と 実 際 の 動 作 に 関 する 詳 し い 説 明<br />
• 使 用 し た コ マン ド (コ マン ド ラ イ ンオプシ ョ ン を 含 む)<br />
• 問 題 を 例 示 するサンプル 出 力<br />
• ツールのバージ ョ ン 情 報 (バージ ョ ン 番 号 、 ビル ド 番 号 を 含 む)<br />
本 書 に 関 する フ ィ ー ド バ ッ ク<br />
本 書 に 関 するご 意 見 につきましては、 以 下 の 内 容 を 記 載 した 電 子 メールを<br />
errata@arm.com までお 送 り 下 さい。<br />
• マニュアル 名<br />
• 文 書 番 号<br />
• 問 題 のあ るページ 番 号<br />
• 問 題 点 の 簡 潔 な 説 明<br />
補 足 すべき 点 や 改 善 すべき 点 についてのご 提 案 もお 待 ち し てお り ます。<br />
x Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
第 1 章<br />
はじめに<br />
この 章 では、 <strong>ARM</strong> <strong>RealView</strong> ® <strong>Compilation</strong> <strong>Tools</strong> に 付 属 の <strong>ARM</strong> ® リンカ armlink<br />
について 紹 介 し ます。 以 下 のセ ク シ ョ ンか ら 構 成 さ れています。<br />
• 「<strong>ARM</strong> リンカ」 (ページ 1-2)<br />
• 「 従 来 のオブジ ェ ク ト やラ イ ブ ラ リ と の 互 換 性 」 (ページ 1-3)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 1-1<br />
Non-Confidential
はじめに<br />
1.1 <strong>ARM</strong> リンカ<br />
<strong>ARM</strong> リンカ armlink は 1 つ 以 上 のオブジ ェ ク ト フ ァ イルの 内 容 と 、1 つ 以 上 の<br />
オブジ ェ ク ト ラ イ ブ ラ リ か ら 選 択 さ れた 部 分 と を 結 合 し て、 以 下 を 生 成 し ま<br />
す。<br />
• <strong>ARM</strong> Executable and Linking Format (ELF) イ メージ<br />
• 次 の リ ン ク 手 順 で 入 力 と し て 使 用 でき る 部 分 的 に リ ン ク された ELF オブ<br />
ジェク ト<br />
• 『Base Platform Application Binary Interface for the <strong>ARM</strong> Architecture』<br />
(BPABI) または System V リリース 4 (SysV) 仕 様 と 互 換 性 のあ る 共 有<br />
オブジェ ク ト か、 BPABI または SysV の 実 行 可 能 フ ァ イル<br />
1-2 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
はじめに<br />
1.2 従 来 のオブジ ェ ク ト やラ イ ブ ラ リ との 互 換 性<br />
以 前 の リ リ ースの <strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> からアップグレードする 場 合 は、<br />
『<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> エッセンシャルガイド』 を 読 んで、 最 新 情 報 を 確<br />
認 して 下 さい。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 1-3<br />
Non-Confidential
はじめに<br />
1-4 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
第 2 章<br />
リンカコマンドラインオプション<br />
本 章 では、 <strong>ARM</strong> リンカ armlink でサポー ト されている コマン ド ラ インオプ<br />
ションとステアリングファイルのコマンドについて 説 明 します。 以 下 のセ ク<br />
ションから 構 成 されています。<br />
• 「コマンド ラ インオプシ ョ ン」 (ページ 2-2)<br />
• 「ステア リ ングファ イルのコマン ド」 (ページ 2-73)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-1<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1 コマンドラインオプション<br />
このセクションでは、 リンカでサポートされているコマンドラインオプショ<br />
ンをアルファベッ ト 順 に 表 示 します。<br />
注<br />
一 部 の fromelf 引 数 で 複 数 のシンボ リ ッ ク 名 を 選 択 するには、 次 のよ う な 特 殊<br />
文 字 を 使 用 できます。<br />
• ワイルドカード 文 字 * は、 任 意 の 名 前 と 一 致 さ せる こ と がで き ます。<br />
• ワールドカード 文 字 ? は 1 文 字 と 一 致 させる こ と がで き ます。<br />
UNIX プ ラ ッ ト フ ォームで 特 殊 文 字 を 使 用 する 場 合 は、 シ ェルに よ って 文 字<br />
列 展 開 がされないよ う に、 これらのオプシ ョ ンを 引 用 符 で 囲 む 必 要 があ り ま<br />
す。<br />
2.1.1 --[no_]add_needed<br />
このオプションは、 コマンドラインで 指 定 されていないライブラ リの 共 有 オ<br />
ブジ ェ ク ト の 依 存 関 係 を 制 御 し ます。<br />
使 用 法<br />
--add_needed 設 定 は、--no_add_needed オプシ ョ ンがコマンド ラ インに 表 示 される<br />
まで、 後 続 のすべての 共 有 オブジ ェ ク ト に 適 用 さ れます。 リンカは、 共 有 オ<br />
ブジ ェ ク ト が 依 存 するすべての 共 有 オブジ ェ ク ト と 、 すべての 依 存 共 有 オブ<br />
ジ ェ ク ト を 再 帰 的 に リ ン ク に 追 加 し ます。<br />
デフォルト<br />
--arm_linux オプシ ョ ン を 使 用 し てい る 場 合 、 デフ ォル ト は --add_needed で、 そ<br />
れ 以 外 の 場 合 、 デフ ォル ト は --no_add_needed です。<br />
例<br />
例 2-1 は、 こ のオプシ ョ ンの 使 用 法 を 示 し ています。<br />
例 2-1 --[no_]add_needed オプシ ョ ン<br />
次 の 依 存 関 係 が 存 在 する と 仮 定 する と 、<br />
• cl1.so は dep1.so に 依 存 する<br />
2-2 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
• cl2.so は dep2.so に 依 存 する<br />
• cl3.so は dep3.so に 依 存 する<br />
• dep2.so は depofdep2.so に 依 存 する<br />
以 下 の コ マン ド ラ イ ンオプシ ョ ン を 使 用 し ます。<br />
armlink --no_add_needed cl1.so --add_needed=cl2.so --no_add_needed cl3.so<br />
その 結 果 、 次 の 共 有 オブジ ェ ク ト が リ ン ク に 追 加 さ れます。<br />
• cl1.so<br />
• cl2.so<br />
• dep2.so<br />
• depofdep2.so<br />
• cl3.so<br />
関 連 項 目<br />
• 「--arm_linux」<br />
2.1.2 --arm_only<br />
このオプションを 使 用 すると、 リンカは <strong>ARM</strong> 命 令 セ ッ ト のみを ターゲ ッ ト<br />
とします。 Thumb ® 状 態 を 必 要 とするオブジェ ク ト を リ ンカが 検 出 する と、 エ<br />
ラーが 生 成 されます。<br />
2.1.3 --arm_linux<br />
このオプショ ンは Linux アプ リ ケーシ ョ ンの 作 成 時 に 使 用 するデフ ォル ト 設<br />
定 を 指 定 します。<br />
デフォルト<br />
以 下 のデフ ォル ト 設 定 は 自 動 的 に 指 定 さ れます。<br />
• --add_needed<br />
• --keep=*(.init)<br />
• --keep=*(.init_array)<br />
• --keep=*(.fini)<br />
• --keep=*(.fini_array)<br />
• --linux_abitag=2.6.12<br />
• --no_ref_cpp_init<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-3<br />
Non-Confidential
リンカコマンドラインオプション<br />
• --no_scanlib<br />
• --no_startup<br />
• --sysv<br />
デフォル ト 設 定 をオーバーラ イ ドするには、 --arm_linux オプシ ョ ンの 後 に<br />
別 々に 指 定 し ます。<br />
RVCT v4.0 よ り 前 のツールチェーンか ら 移 行 する 場 合 は、 すべてのデフ ォル<br />
トを --arm_linux オプシ ョ ン 1 つで 置 換 でき ます。<br />
関 連 項 目<br />
• 「--[no_]add_needed」 (ページ 2-2)<br />
• 「--keep=section_id」 (ページ 2-34)<br />
• 「--library=name」 (ページ 2-38)<br />
• 「--linux_abitag=version_id」 (ページ 2-40)<br />
• 「--[no_]ref_cpp_init」 (ページ 2-53)<br />
• 「--[no_]scanlib」 (ページ 2-58)<br />
• 「--[no_]search_dynamic_libraries」 (ページ 2-59)<br />
• 「--[no_]startup=symbol」 (ページ 2-63)<br />
• 「--sysv」 (ページ 2-66)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--arm_linux」 (ページ 2-10)<br />
2.1.4 --[no_]autoat<br />
こ のオプシ ョ ンは、 実 行 領 域 への __at セクションの 自 動 割 り 当 てを 制 御 しま<br />
す。 __at セクションは、 特 定 のアドレスに 配 置 する 必 要 があるセクションで<br />
す。<br />
使 用 法<br />
有 効 に さ れてい る 場 合 は、 リ ン カに よ っ て 各 __at セ ク シ ョ ンの 実 行 領 域 が 自<br />
動 的 に 選 択 さ れます。 該 当 する 実 効 領 域 が 存 在 し ない 場 合 、 __at セクションを<br />
含 むロー ド 領 域 および 実 行 領 域 が リ ンカに よ って 作 成 さ れます。<br />
無 効 に さ れた 場 合 、 標 準 のス キ ャ ッ タ ロー ド のセ ク シ ョ ン 選 択 規 則 が 適 用 さ<br />
れます。<br />
デフォルト<br />
デフォル ト は --autoat です。<br />
2-4 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 第 3 章 スキャッタロード 記 述 ファイルの 正 式 な 構 文<br />
• 『リンカユーザガイド』 の 「 領 域 ア ド レ ス と セ ク シ ョ ンア ド レ スの 指 定<br />
の 例 」 (ページ 5-9)<br />
2.1.5 --be8<br />
このオプショ ンは、 <strong>ARM</strong>v6 バイ ト インバリアン ト アドレシングビッグエン<br />
ディアンモードを 指 定 します。<br />
これは <strong>ARM</strong>v6 ビッグエンディアンイメージのデフォルトのバイトアドレシ<br />
ングモー ド です。 リ ンカでは、 命 令 のエンデ ィ アン 方 式 を 逆 に し て、 ビ ッ グ<br />
エンディアン 方 式 でコンパイルおよびアセンブルされた 入 力 オブジェク ト に<br />
リ ト ルエンデ ィ アン コー ド と ビ ッ グエンデ ィ アンデータ を 提 供 し ます。<br />
バイ ト インバリアン ト アドレシングモードは、 <strong>ARM</strong>v6 以 上 をサポー ト し てい<br />
る <strong>ARM</strong> プロセッサでのみ 使 用 できます。<br />
関 連 項 目<br />
• 『デベロ ッ パガ イ ド 』 の 「「<strong>ARM</strong> アーキテクチャ v6」 (ページ 2-12)」<br />
• 『<strong>ARM</strong> アーキテ クチャ リ フ ァ レンスマニュアル』<br />
2.1.6 --be32<br />
このオプショ ンは、 従 来 のワードインバリアン トアドレシングビッグエン<br />
ディアンモードを 指 定 します。 これは、 <strong>ARM</strong>v6 よ り 前 のビッグエンディアン<br />
イメージと 同 一 です。 このオプションを 指 定 すると、 ビッグエンディアン<br />
コード とビッ クエンディアンデータが 生 成 されます。<br />
ワード インバリ アン ト アド レシングモードは、 <strong>ARM</strong>v6 よ り 前 のすべてのビッ<br />
グエンディ アンイ メージのデフォル ト モードです。<br />
関 連 項 目<br />
• 『デベロ ッ パガ イ ド 』 の 「「<strong>ARM</strong> アーキテクチャ v6」 (ページ 2-12)」<br />
• 『<strong>ARM</strong> アーキテ クチャ リ フ ァ レンスマニュアル』<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-5<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.7 --[no_]bestdebug<br />
このオプションは、 最 小 のコードやデータのサイズ、 または 最 適 な debug<br />
illusion のリンクを 選 択 します。 入 力 オブジ ェ ク ト には Comdat グループが 含 ま<br />
れてい る 可 能 性 があ り ますが、 相 違 点 に よ り こ れら はすべての 入 力 オブジ ェ<br />
クト 間 で 同 じとは 限 りません。 例 えば、 イン ラ イン 化 などがあ り ます。<br />
デフォルト<br />
デフォル ト は --no_bestdebug です。 デバ ッ グ 用 にコ ンパイルし たかど う かにか<br />
かわ らず、 最 終 イ メ ージの コー ド と データ が 確 実 に 同 じ にな る よ う に し ます。<br />
リンク 実 行 時 には、debug illusion がやや 劣 る 場 合 があ り ますが、 最 小 の<br />
Comdat グループが 選 択 されます。<br />
使 用 法<br />
--bestdebug オプシ ョ ン を 使 用 する と 、 最 適 なデバ ッ グ ビ ューを 備 えた Comdat<br />
グループが 選 択 されます。 最 終 イ メ ージの コー ド と データは、 デバ ッ グ 用 に<br />
ビルド したかど う かによって 同 じにならない 場 合 がある こ とに 注 意 して 下 さ<br />
い。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「セ ク シ ョ ンの 削 除 」 (ページ 3-12)<br />
2.1.8 --bpabi<br />
このオプションは、 BPABI 実 行 可 能 フ ァ イルを 作 成 し、 プ ラ ッ ト フ ォーム 固<br />
有 のポス ト リ ンカに 渡 し ます。<br />
関 連 項 目<br />
• 「--dll」 (ページ 2-19)<br />
• 「--shared」 (ページ 2-60)<br />
• 「--sysv」 (ページ 2-66)<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2-6 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.9 --[no_]branchnop<br />
こ のオプシ ョ ン を 使 用 する と 、 リ ンカは 次 の 命 令 に 解 決 する 再 配 置 のあ る 分<br />
岐 を NOP に 置 き 換 えます。 こ れは 通 常 の 動 作 です。 ただし、 検 証 やパイプラ イ<br />
ンのフラ ッシュを 実 行 する 場 合 など、 このオプシ ョ ンを 無 効 にするこ とが 必<br />
要 にな る 場 合 も あ り ます。<br />
デフォルト<br />
デフォル ト は --branchnop です。<br />
この 動 作 を 無 効 にするには、--no_branchnop を 使 用 します。<br />
関 連 項 目<br />
• 「--[no_]inline」 (ページ 2-32)<br />
• 「--[no_]tailreorder」 (ページ 2-66)<br />
• 『リンカユーザガイド』 の 「インライン」 (ページ 3-26)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-7<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.10 --[no_]callgraph<br />
このオプシ ョ ンは、 関 数 の 静 的 コールグラ フを 含 むフ ァ イルを 作 成 します。<br />
コールグ ラ フは、 イ メ ージ 内 のすべての 関 数 の 定 義 および 参 照 情 報 を 提 供 し<br />
ます。<br />
使 用 法<br />
コールグラフファ イル :<br />
• 生 成 さ れた イ メ ージ と 同 じデ ィ レ ク ト リ に 保 存 さ れます。<br />
• リンク 先 イメージと 同 じ 名 前 です。 別 のコールグ ラ フ フ ァ イル 名 を 指 定<br />
するには、--callgraph_file=filename オプシ ョ ン を 使 用 し ます。<br />
• デフ ォル ト の 出 力 フ ォーマ ッ ト は HTML です。 出 力 形 式 を 制 御 する に<br />
は、--callgraph_output=fmt オプシ ョ ンを 使 用 し ます。<br />
注<br />
リ ンカで 関 数 のス タ ッ ク 使 用 量 を 計 算 する 場 合 は、 アセンブラ フ ァ イルに 定<br />
義 された 関 数 に 適 切 な PROC/ENDP および FRAME PUSH/POP デ ィ レ ク テ ィ ブが 必 要 で<br />
す。<br />
各 関 数 func について、 リ ンカによ って 以 下 の 情 報 が 示 されます。<br />
• 関 数 が コ ンパ イ ル さ れる と き のプ ロ セ ッ サの 状 態 (<strong>ARM</strong> または Thumb)<br />
• func を 呼 び 出 す 一 連 の 関 数<br />
• func に よ って 呼 び 出 さ れる 一 連 の 関 数<br />
• func のアド レスがイ メージ 内 で 使 用 される 回 数<br />
また、 コールグラフは 以 下 のよ う な 関 数 を 識 別 し ます。<br />
• イ ン ターワー クベニア 経 由 で 呼 び 出 さ れる 関 数<br />
• イ メ ージ 外 で 定 義 さ れた 関 数<br />
• 未 定 義 の 状 態 が 可 能 な 関 数 (weak 型 の 参 照 )<br />
• 呼 び 出 さ れていませんが、 まだ イ メ ージに 存 在 し ます。<br />
ま た、 ス タ テ ィ ッ ク コールグ ラ フでは、 ス タ ッ ク の 使 用 状 況 に 関 する 情 報 も<br />
提 供 さ れます。 以 下 の 情 報 が 表 示 さ れます。<br />
• 各 関 数 に よ っ て 使 用 さ れる ス タ ッ ク フ レームのサ イ ズ<br />
• 任 意 の 呼 び 出 し シーケン ス ( 関 数 呼 び 出 し 非 環 式 チェ イ ン) を 介 し て 関<br />
数 で 使 用 さ れる ス タ ッ ク の 最 大 サ イ ズ<br />
2-8 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
サイクルがある 場 合 、 またはリンカによって 呼 び 出 しチェイン 内 にスタック<br />
サ イ ズの 情 報 がない 関 数 が 検 出 さ れた 場 合 、 ス タ ッ ク の 使 用 状 況 に + Unknown<br />
が 追 加 され、 ス タ ッ ク の 使 用 状 況 が 不 明 であ る 理 由 が 追 加 さ れます。<br />
関 数 のデバ ッ グ フ レーム 情 報 がない 場 合 は、 リ ンカに よ って 不 明 な ス タ ッ ク<br />
フレームの 情 報 がレポート されます。<br />
間 接 的 な 関 数 については、 どの 関 数 によ って 間 接 的 な 呼 び 出 しが 行 われたか<br />
を、 リ ンカで 確 実 に 判 断 する こ と はで き ません。 このことは、 呼 び 出 しチェ<br />
イ ンの 最 大 のス タ ッ ク 使 用 量 の 計 算 に 影 響 する 場 合 があ り ます。 イ メージで<br />
使 用 されるすべての 関 数 ポインタがリ ンカによって 示 されます。<br />
アセンブ リ 言 語 コードでフレームディ レクテ ィブを 使 用 して、 コードでス<br />
タ ッ ク を 使 用 する 方 法 を 記 述 し ます。 これら のデ ィ レ ク テ ィ ブを 使 用 する と 、<br />
デバ ッ ガのデバ ッ グフ レーム 情 報 は 確 実 に 存 在 し、 ス タ ッ ク 展 開 またはプロ<br />
ファイリングが 実 行 されます。<br />
デフォルト<br />
デフォル ト は --no_callgraph です。<br />
関 連 項 目<br />
• 「--callgraph_file=filename」<br />
• 「--callgraph_output=fmt」 (ページ 2-10)<br />
• 「--cgfile=type」 (ページ 2-10)<br />
• 「--cgsymbol=type」 (ページ 2-11)<br />
• 「--cgundefined=type」 (ページ 2-12)<br />
• 第 3 章 スキャッタロード 記 述 ファイルの 正 式 な 構 文<br />
• 『アセンブラガイ ド』 の 第 7 章 ディレクティブリファレンス<br />
2.1.11 --callgraph_file=filename<br />
このオプシ ョ ンは、 コールグラフの 出 力 フ ァ イル 名 を 制 御 します。<br />
デフォル ト のフ ァ イル 名 は リ ンク 先 イ メージと 同 じです。<br />
注<br />
--partial オプシ ョ ン を 使 用 し て、 部 分 的 に リ ン ク さ れたオブジ ェ ク ト を 作 成<br />
する 場 合 は、 コールグ ラ フ フ ァ イ ルが 作 成 さ れません。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-9<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「--[no_]callgraph」 (ページ 2-8)<br />
• 「--callgraph_output=fmt」<br />
• 「--cgfile=type」<br />
• 「--cgsymbol=type」 (ページ 2-11)<br />
• 「--cgundefined=type」 (ページ 2-12)<br />
• 「--output=file」 (ページ 2-45)<br />
• 第 3 章 スキャッタロード 記 述 ファイルの 正 式 な 構 文<br />
2.1.12 --callgraph_output=fmt<br />
こ のオプシ ョ ンは、 コールグ ラ フの 出 力 形 式 を 制 御 し ます。<br />
構 文<br />
--callgraph_output=fmt<br />
fmt は 次 のいずれかにな り ます。<br />
html コールグラフを html 形 式 で 出 力 し ます。<br />
text コールグラフをプレーンテキス ト 形 式 で 出 力 します。<br />
デフォルト<br />
デフォル ト は --callgraph_output=html です。<br />
関 連 項 目<br />
• 「--[no_]callgraph」 (ページ 2-8)<br />
• 「--callgraph_file=filename」 (ページ 2-9)<br />
• 「--cgfile=type」<br />
• 「--cgsymbol=type」 (ページ 2-11)<br />
• 「--cgundefined=type」 (ページ 2-12)<br />
• 第 3 章 スキャッタロード 記 述 ファイルの 正 式 な 構 文<br />
2.1.13 --cgfile=type<br />
このオプションは、 コールグラフに 含 めるシンボルの 取 得 に 使 用 されるファ<br />
イルを 制 御 します。<br />
2-10 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
構 文<br />
--cgfile=type<br />
type は 次 のいずれかにな り ます。<br />
all<br />
user<br />
system<br />
すべてのフ ァ イ ルのシンボルを 含 みます。<br />
ユーザ 定 義 のオブジェ ク ト およびラ イブラ リ のシンボルのみを<br />
含 みます。<br />
システムライブラ リのシンボルのみを 含 みます。<br />
デフォルト<br />
デフォル ト は --cgfile=all です。<br />
関 連 項 目<br />
• 「--[no_]callgraph」 (ページ 2-8)<br />
• 「--callgraph_file=filename」 (ページ 2-9)<br />
• 「--callgraph_output=fmt」 (ページ 2-10)<br />
• 「--cgsymbol=type」<br />
• 「--cgundefined=type」 (ページ 2-12)<br />
• 第 3 章 スキャッタロード 記 述 ファイルの 正 式 な 構 文<br />
2.1.14 --cgsymbol=type<br />
このオプションは、 コールグラフに 含 めるシンボルを 制 御 します。<br />
構 文<br />
type は 次 のいずれかにな り ます。<br />
all<br />
locals<br />
globals<br />
ローカルシンボルとグローバルシンボルの 両 方 を 含 みます。<br />
ローカルシンボルのみを 含 みます。<br />
グローバルシンボルのみを 含 みます。<br />
デフォルト<br />
デフォル ト は --cgsymbol=all です。<br />
関 連 項 目<br />
• 「--[no_]callgraph」 (ページ 2-8)<br />
• 「--callgraph_file=filename」 (ページ 2-9)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-11<br />
Non-Confidential
リンカコマンドラインオプション<br />
• 「--callgraph_output=fmt」 (ページ 2-10)<br />
• 「--cgfile=type」 (ページ 2-10)<br />
• 「--cgundefined=type」<br />
• 第 3 章 スキャッタロード 記 述 ファイルの 正 式 な 構 文<br />
2.1.15 --cgundefined=type<br />
こ のオプシ ョ ンは、 コールグ ラ フに 含 め る 未 定 義 の 参 照 を 制 御 し ます。<br />
構 文<br />
--cgundefined=type<br />
type は 次 のいずれかにな り ます。<br />
all<br />
entries<br />
calls<br />
none<br />
関 数 エン ト リ と 未 定 義 の weak 型 の 参 照 への 呼 び 出 し の 両 方 を 含<br />
みます。<br />
未 定 義 の weak 型 の 参 照 に 対 する 関 数 エン ト リ を 含 みます。<br />
未 定 義 の weak 型 の 参 照 への 呼 び 出 し を 含 みます。<br />
出 力 のすべての 未 定 義 の weak 型 の 参 照 を 省 略 し ます。<br />
デフォルト<br />
デフォル ト は --cgundefined=all です。<br />
関 連 項 目<br />
• 「--[no_]callgraph」 (ページ 2-8)<br />
• 「--callgraph_file=filename」 (ページ 2-9)<br />
• 「--callgraph_output=fmt」 (ページ 2-10)<br />
• 「--cgfile=type」 (ページ 2-10)<br />
• 「--cgsymbol=type」 (ページ 2-11)<br />
• 第 3 章 スキャッタロード 記 述 ファイルの 正 式 な 構 文<br />
2.1.16 --[no_]combreloc<br />
こ のオプシ ョ ンは、 リ ンカの 動 的 再 配 置 の 順 序 変 更 を 有 効 ま たは 無 効 に し て、<br />
ダ イナ ミ ッ ク ローダがそれら を よ り 効 率 的 に 処 理 で き る よ う に し ます。<br />
2-12 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
デフォルト<br />
デフォル ト は --combreloc です。<br />
2.1.17 --[no_]compress_debug<br />
このオプショ ンは、 必 要 に 応 じてリンカに .debug_* セクションを 圧 縮 させま<br />
す。 こ のため 冗 長 性 が 減 少 し、 デバ ッ グテーブルのサ イ ズが 縮 小 し ます。<br />
--compress_debug を 使 用 する と 、 イ メ ージの リ ン ク に 必 要 な 時 間 が 著 し く 長 く<br />
なります。 デバ ッ グ 圧 縮 は DWARF2 ではな く DWARF3 デバ ッ グデータのみで<br />
実 行 さ れます。<br />
デフォルト<br />
デフォル ト は --no_compress_debug です。<br />
2.1.18 --[no_]cppinit<br />
こ のオプシ ョ ン を 使 用 する と 、 初 期 化 シンボルが 異 な る 別 の C++ ライブラリ<br />
を 必 要 に 応 じ て リ ンカが 使 用 でき ます。<br />
構 文<br />
--cppinit=symbol<br />
symbol を 指 定 しなければ、 デフォル ト の __cpp_initialize__aeabi_ と 見 なされま<br />
す。<br />
--no_cppinit は symbol 引 数 を 使 用 し ません。<br />
デフォルト<br />
デフォル ト は --no_cppinit です。<br />
関 連 項 目<br />
• 「--[no_]ref_cpp_init」 (ページ 2-53)<br />
2.1.19 --cpu=list<br />
このオプショ ンは、--cpu=name と 一 緒 に 使 用 可 能 なサポー ト さ れてい る アーキ<br />
テクチャ とプロセッサ 名 を 一 覧 にし ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-13<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「--cpu=name」<br />
2.1.20 --cpu=name<br />
このオプションを 使 用 すると、 リンカがターゲッ トの <strong>ARM</strong> プロセッサまた<br />
はアーキテクチャを 判 別 できます。 このオプションの 形 式 は、 コンパイラで<br />
サポー ト されている 形 式 と 同 じです。<br />
構 文<br />
--cpu=name<br />
name は <strong>ARM</strong> プロセッサまたはアーキテクチャの 名 前 です。<br />
使 用 法<br />
選 択 し たプロセ ッ サ と 互 換 性 のない 機 能 にいずれかのコ ンポーネン ト オブ<br />
ジェ ク ト フ ァ イルが 依 存 し ている 場 合 は、 リ ン ク 処 理 に 失 敗 し ます。 また、<br />
リ ンカは こ のオプシ ョ ン を 使 用 し て 最 終 イ メ ージを 構 築 する と き に 生 成 する<br />
必 要 のあ る シ ス テム ラ イ ブ ラ リ と ベニアの 選 択 を 最 適 化 し ます。 デフォル ト<br />
は、 すべての コ ンポーネン ト オブジ ェ ク ト フ ァ イル と 互 換 性 のあ る CPU の 選<br />
択 です。<br />
関 連 項 目<br />
• 「--cpu=list」 (ページ 2-13)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--cpu=name」 (ページ 2-34)<br />
2.1.21 --datacompressor=opt<br />
このオプションを 使 用 すると、 RW データ 圧 縮 用 に 提 供 さ れてい る アルゴ リ<br />
ズムのいずれかを 指 定 できます。 データ 圧 縮 アルゴ リ ズム を 指 定 し ない と 、<br />
最 適 なアルゴ リ ズムが 自 動 的 に 選 択 さ れます。 通 常 、 こ の 自 動 選 択 をオー<br />
バーラ イ ド する 必 要 はあ り ません。<br />
構 文<br />
--datacompressor=opt<br />
opt は、 以 下 のいずれかにな り ます。<br />
on ROM サ イ ズを 最 小 化 する ために RW データ 圧 縮 を 有 効 に し ます。<br />
2-14 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
off<br />
RW データ 圧 縮 を 無 効 に し ます。<br />
list リ ン カが 使 用 で き るデータ 圧 縮 を 一 覧 に し ます。<br />
id id はデータ 圧 縮 アルゴ リ ズムです。 コ ンプレ ッ サを 指 定 する と 、<br />
コード エ リ アにデコ ンプレ ッ サが 追 加 されます。 最 終 イ メ ージに<br />
圧 縮 されたデータが 含 まれていない 場 合 、 デコンプレ ッサは 追<br />
加 されません。<br />
デフォルト<br />
デフォル ト は --datacompressor=on です。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「RW データ 圧 縮 」 (ページ 3-19)<br />
2.1.22 --[no_]debug<br />
こ のオプシ ョ ンは 出 力 フ ァ イルのデバ ッ グ 情 報 の 生 成 を 制 御 し ます。 デバ ッ<br />
グ 情 報 には、 デバッ グ 入 力 セクシ ョ ン と シンボルテーブル / ストリングテー<br />
ブルが 含 まれます。<br />
デフォルト<br />
デフォル ト は --debug です。<br />
使 用 法<br />
--no_debug を 使 用 する と 、 出 力 フ ァ イルか らデバ ッ グ 情 報 が 除 外 さ れます。 結<br />
果 の ELF イ メージのサイズは 小 さくなりますが、 ソースレベルでデバッグで<br />
きません。 リンカでは、 入 力 オブジェクトとライブラリのメンバ 内 にあるデ<br />
バッグ 入 力 セクショ ンを 破 棄 し、 イ メージにシンボルとス ト リングテーブル<br />
を 含 めません。 このオプショ ンは、 デバッガにロードされるときのイ メージ<br />
のサイズのみに 影 響 し ます。 ターゲッ トにダウンロード される 最 終 的 なバイ<br />
ナ リ イ メ ージのサ イ ズには 影 響 し ません。<br />
--partial を 使 用 している 場 合 は、 リ ンカがデバッグデータなしに、 部 分 的 に<br />
リンクされたオブジェクトを 作 成 します。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-15<br />
Non-Confidential
リンカコマンドラインオプション<br />
注<br />
fromelf --fieldoffsets を 指 定 する 必 要 があ る 場 合 は、--no_debug を 使 用 しないで<br />
下 さい。 デバ ッ グ 情 報 を 持 たない イ メ ージを 生 成 し た 場 合 、 fromelf ユーテ ィ<br />
リ テ ィ には、 以 下 の 制 限 があ り ます。<br />
• イ メ ージを 別 の 形 式 のフ ァ イルに 変 換 でき ません。<br />
• わか り やすい 逆 アセンブル リ ス ト を 生 成 でき ません。<br />
関 連 項 目<br />
• 『ユーテ ィ リ テ ィ ガイ ド』 の 「--fieldoffsets」 (ページ 2-25)<br />
2.1.23 --device=list<br />
このオプションを 使 用 すると、--device=name オプシ ョ ン と 一 緒 に 使 用 可 能 なサ<br />
ポー ト さ れてい るデバイ ス 名 が 一 覧 にな り ます。<br />
関 連 項 目<br />
• 「--device=name」<br />
2.1.24 --device=name<br />
このオプシ ョ ンは 特 定 のデバイ ス と 関 連 するプロセッサ 設 定 を 選 択 します。<br />
このオプションは、 <strong>ARM</strong> コンパイラでサポート されている 形 式 と 同 じ 形 式 に<br />
従 います。<br />
注<br />
選 択 し たプロセ ッ サ と 互 換 性 のない 機 能 にいずれかのコ ンポーネン ト オブ<br />
ジ ェ ク ト フ ァ イ ルが 依 存 し てい る 場 合 、 リ ン ク 処 理 は 失 敗 し ます。 また、 リ<br />
ンカはこのオプシ ョ ンを 使 用 して 最 終 イ メージを 構 築 する と きに 生 成 する 必<br />
要 のあ る シ ス テム ラ イ ブ ラ リ と ベニアの 選 択 を 最 適 化 し ます。 デフォル ト は、<br />
すべての コ ンポーネン ト オブジ ェ ク ト フ ァ イ ル と 互 換 性 のあ るデバ イ スの 選<br />
択 です。<br />
構 文<br />
--device=name<br />
name は 特 定 のデバイ ス 名 です。<br />
2-16 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
使 用 可 能 なデバ イ スの 完 全 な リ ス ト を 取 得 する には、 --device=list オプシ ョ<br />
ンを 使 用 します。<br />
関 連 項 目<br />
• 「--device=list」 (ページ 2-16)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--device=name」 (ページ<br />
2-48)<br />
2.1.25 --diag_error=tag[,tag,...]<br />
このオプショ ンを 使 用 して、 特 定 のタグがある 診 断 メ ッセージにエラーの 重<br />
大 度 を 設 定 し ます。<br />
構 文<br />
--diag_error=tag[,tag,...]<br />
tag は 診 断 メ ッ セージ 番 号 の コ ンマ 区 切 り の リ ス ト です。<br />
関 連 項 目<br />
• 「--diag_remark=tag[,tag,...]」<br />
• 「--diag_warning=tag[,tag,...]」 (ページ 2-18)<br />
2.1.26 --diag_remark=tag[,tag,...]<br />
このオプシ ョ ンを 使 用 し て、 特 定 のタ グがあ る 診 断 メ ッ セージに 注 釈 の 重 大<br />
度 を 設 定 します。<br />
構 文<br />
--diag_remark=tag[,tag,...]<br />
tag は 診 断 メ ッ セージ 番 号 の コ ンマ 区 切 り の リ ス ト です。<br />
関 連 項 目<br />
• 「--diag_error=tag[,tag,...]」<br />
• 「--diag_warning=tag[,tag,...]」 (ページ 2-18)<br />
2.1.27 --diag_style=arm|ide|gnu<br />
このオプショ ンは、 警 告 メ ッセージやエラーメ ッセージの 形 式 を 変 更 します。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-17<br />
Non-Confidential
リンカコマンドラインオプション<br />
デフォルト<br />
デフォル ト は --diag_style=arm です。<br />
使 用 法<br />
--diag_style=gnu は、 GNU コンパイラが 報 告 する 形 式 gcc と 一 致 します。<br />
--diag_style=ide は、 Microsoft Visual Studio が 報 告 する 形 式 と 一 致 し ます。<br />
2.1.28 --diag_suppress=tag[,tag,...]<br />
こ のオプシ ョ ンは、 特 定 のタ グがあ る 診 断 メ ッ セージすべてを 非 表 示 にし ま<br />
す。<br />
構 文<br />
--diag_suppress=tag[,tag,...]<br />
tag は、 非 表 示 にする 診 断 メ ッ セージ 番 号 の コ ンマ 区 切 り の リ ス ト です。<br />
例<br />
番 号 L6314W と L6305W の 警 告 メ ッ セージを 非 表 示 にするには、 以 下 のコマン ド<br />
を 使 用 し ます。<br />
armlink --diag_suppress=L6314,L6305 ...<br />
2.1.29 --diag_warning=tag[,tag,...]<br />
こ のオプシ ョ ンを 使 用 し て、 特 定 のタ グがあ る 診 断 メ ッ セージに 警 告 の 重 大<br />
度 を 設 定 し ます。<br />
構 文<br />
--diag_warning=tag[,tag,...]<br />
tag は 診 断 メ ッ セージ 番 号 の コ ンマ 区 切 り の リ ス ト です。<br />
関 連 項 目<br />
• 「--diag_error=tag[,tag,...]」 (ページ 2-17)<br />
• 「--diag_remark=tag[,tag,...]」 (ページ 2-17)<br />
2-18 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.30 --dll<br />
このオプショ ンは、 BPABI ダイナミ ック リンクライブラ リ (DLL) を 作 成 し<br />
ます。 DLL は ELF ファイルヘッダの 共 有 オブジェク ト としてマークされます。<br />
BPABI の DLL を 生 成 するには、--bpabi を --dll と 一 緒 に 使 用 する 必 要 があ り<br />
ます。<br />
関 連 項 目<br />
• 「--bpabi」 (ページ 2-6)<br />
• 「--shared」 (ページ 2-60)<br />
• 「--sysv」 (ページ 2-66)<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.31 --dynamic_debug<br />
このオプシ ョ ンは、 リ ンカにデバッ グセ ク シ ョ ンの 動 的 な 再 配 置 を 出 力 させ<br />
ます。 こ のオプシ ョ ン を 使 用 する と 、OS 対 応 のデバ ッ ガか ら armlink によって<br />
作 成 さ れた 共 有 ラ イ ブ ラ リ をデバ ッ グで き ます。<br />
--dynamic_debug は、--sysv および --sysv --shared で 生 成 し た イ メ ージや 共 有 ラ<br />
イブラ リに 対 して 使 用 します。<br />
関 連 項 目<br />
• 「--shared」 (ページ 2-60)<br />
• 「--sysv」 (ページ 2-66)<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.32 --dynamiclinker=name<br />
こ のオプシ ョ ンは、 実 行 時 にフ ァ イルの ロー ド と 再 配 置 に 使 用 する ダ イナ<br />
ミックリンカを 指 定 します。<br />
使 用 法<br />
共 有 オブジ ェ ク ト に リ ン ク する と 、 使 用 する ダ イ ナ ミ ッ ク リ ンカが 実 行 可 能<br />
ファイルに 保 存 されます。 こ のオプシ ョ ンは、 フ ァ イルの 実 行 時 に 使 用 する<br />
特 定 のダ イナ ミ ッ ク リ ンカ を 指 定 し ます。 <strong>ARM</strong> Linux プラッ ト フォームで 作<br />
業 している 場 合 は、/lib/ld-linux.so.3 がデフ ォル ト のダ イナ ミ ッ ク リ ンカ と<br />
見 なされます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-19<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.33 --edit=file_list<br />
こ のオプシ ョ ン を 使 用 する と 、 出 力 バ イナ リ のシンボルテーブルを 編 集 する<br />
コマンドを 含 むステアリ ングファイルを 指 定 できます。 ステアリ ングファイ<br />
ルには 以 下 の こ と を 行 う コ マン ド を 指 定 で き ます。<br />
• グ ローバルシンボルを 非 表 示 に し ます。 このオプションを 使 用 すると、<br />
オブジ ェ ク ト フ ァ イル 内 の 特 定 のグ ローバルシンボルを 非 表 示 にで き ま<br />
す。 非 表 示 に し たシンボルは、 パブ リ ッ ク には 表 示 さ れません。<br />
• グローバルシンボルの 名 前 を 変 更 し ます。 こ のオプシ ョ ン を 使 用 する<br />
と、 シンボル 名 の 競 合 を 解 決 でき ます。<br />
構 文<br />
--edit=file_list<br />
file_list には、 コ ンマ 区 切 り の 複 数 のス テア リ ン グ フ ァ イ ルを 指 定 で き ます。<br />
コンマの 後 にスペースを 挿 入 しないで 下 さい。<br />
例<br />
--edit=file1 --edit=file2 --edit=file3<br />
--edit=file1,file2,file3<br />
関 連 項 目<br />
• 「ステア リ ングファ イルのコマン ド」 (ページ 2-73)<br />
• 「グ ローバルシンボルの 非 表 示 と 名 前 の 変 更 」 (ページ 4-14)<br />
2.1.34 --entry=location<br />
こ のオプシ ョ ンは、 イ メ ージ 固 有 の 初 期 エン ト リ ポ イ ン ト を 指 定 し ます。<br />
構 文<br />
--entry=location<br />
2-20 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
location は 以 下 のいずれかにな り ます。<br />
entry_address<br />
数 値 。 以 下 に 例 を 示 し ます。 --entry=0x0<br />
symbol<br />
イメージのエント リポイントを symbol のアド レス と して 指 定 し<br />
ます。 以 下 に 例 を 示 し ます。 --entry=reset_handler<br />
offset+object(section)<br />
イ メ ージのエン ト リ ポ イ ン ト を 特 定 の object 内 の section 内 にあ<br />
る offset と して 指 定 し ます。 以 下 に 例 を 示 し ます。<br />
--entry=8+startup.o(startupseg)<br />
--entry の 引 数 内 にはスペース を 挿 入 し ないで 下 さ い。 入 力 セ ク<br />
シ ョ ン と オブジ ェ ク ト 名 では 大 文 字 と 小 文 字 が 区 別 さ れません。<br />
以 下 の 単 純 な 表 記 を 使 用 で き ます。<br />
• offset がゼロの 場 合 は object(section)。<br />
• 入 力 セ ク シ ョ ンが 1 つだけの 場 合 は、 object。 object 内 に 複<br />
数 の 入 力 セ ク シ ョ ンが 存 在 する と armlink でエラーメ ッセー<br />
ジが 生 成 さ れます。<br />
注<br />
イメージのエント リアドレスが Thumb 状 態 の 場 合 、 ア ド レ スの 最 下 位 ビ ッ ト<br />
を 1 に 設 定 する 必 要 があ り ます。 シンボルを 指 定 する と 、 自 動 的 に 設 定 さ れ<br />
ます。 例 えば、 Thumb 状 態 でエン ト リ コー ド がア ド レ ス 0x8000 で 開 始 する 場<br />
合 は、--entry=0x8001 を 使 用 する 必 要 があ り ます。<br />
使 用 法<br />
イメージには 複 数 のエント リポイントを 含 めることができますが、 このオプ<br />
シ ョ ン を 使 用 し て 指 定 さ れた 初 期 エン ト リ ポ イ ン ト は、 ローダで 使 用 で き る<br />
よ う に 実 行 可 能 フ ァ イルのヘ ッ ダに 保 存 さ れます。 このオプショ ンはコマン<br />
ドライン 内 で 1 回 のみ 指 定 で き ます。 <strong>RealView</strong> ® Debugger でイ メージをロード<br />
する と き、 このエン ト リ アドレスを 使 用 してプログラムカウンタ (PC) が 初<br />
期 化 さ れます。 初 期 エン ト リ ポイン ト は、 以 下 の 条 件 を 満 たしている 必 要 が<br />
あります。<br />
• イ メ ージのエン ト リ ポ イ ン ト は、 実 行 領 域 内 にあ る 必 要 があ り ます。<br />
• 実 行 領 域 は、 オーバーレ イ でないルー ト 実 行 領 域 (ロー ド ア ド レ ス ==<br />
実 行 ア ド レ ス) であ る こ と が 必 要 です。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-21<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「--[no_]startup=symbol」 (ページ 2-63)<br />
2.1.35 --errors=file<br />
こ のオプシ ョ ンは、 診 断 結 果 の 出 力 を 標 準 のエ ラース ト リ ームか ら file に 転<br />
送 します。<br />
指 定 さ れた フ ァ イ ルは、 リ ン ク ス テージの 開 始 時 に 作 成 さ れます。 同 じ 名 前<br />
のフ ァ イ ルが 既 に 存 在 する 場 合 、 そのフ ァ イ ルは 上 書 き さ れます。<br />
file にパス 情 報 が 指 定 されていない 場 合 は、 現 在 のディ レ ク ト リ にフ ァ イル<br />
が 作 成 されます。<br />
2.1.36 --[no_]exceptions<br />
このオプシ ョ ンは 最 終 イ メージの 例 外 テーブルの 生 成 を 制 御 し ます。<br />
デフォルト<br />
デフォル ト は --exceptions です。<br />
使 用 法<br />
--no_exceptions を 使 用 する と 、 未 使 用 セ ク シ ョ ンの 削 除 後 イ メ ージに 例 外 セ<br />
クションがある 場 合 にエラーメッセージが 生 成 されます。 このオプショ ンを<br />
使 用 する と 、 コー ド では 例 外 が 処 理 さ れません。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「コマンド ラ インオプシ ョ ンを 使 用 した C++<br />
例 外 の 処 理 」 (ページ 3-35)<br />
2.1.37 --[no_]exceptions_tables=action<br />
このオプションは、 例 外 の unwind テーブルがまだ 含 まれていないオブジェ ク<br />
ト の 例 外 テーブルの 生 成 方 法 を 指 定 し ます。<br />
構 文<br />
--[no_]exceptions_tables=action<br />
2-22 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
action は 以 下 のいずれかにな り ます。<br />
nocreate<br />
unwind<br />
cantunwind<br />
リ ンカは、 見 つから ない 例 外 テーブルを 作 成 し ません。<br />
リンカでは、 例 外 テーブルを 含 んでいないイメージのセクショ<br />
ンごとに unwind テーブルを 作 成 し ます。<br />
リンカでは、 例 外 テーブルを 含 んでいないイメージのセクショ<br />
ンごとに nounwind テーブルを 作 成 し ます。<br />
デフォルト<br />
The default is --exceptions_tables=nocreate<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「コマンド ラ インオプシ ョ ンを 使 用 した C++<br />
例 外 の 処 理 」 (ページ 3-35)<br />
2.1.38 --[no_]export_all<br />
このオプショ ンは、 動 的 シンボルテーブルへのシンボルのエクスポート を 制<br />
御 します。<br />
デフォルト<br />
共 有 ラ イ ブ ラ リ と DLL の 場 合 、 デフ ォル ト は --export_all です。<br />
アプ リ ケーシ ョ ンの 場 合 、 デフォル ト は --no_export_all です。<br />
使 用 法<br />
--export_all を 使 用 する と 、 実 行 可 能 フ ァ イルま たは DLL からグローバルな<br />
非 表 示 でないすべてのシンボルを 動 的 にエ ク ス ポー ト し ます。 動 的 シンボル<br />
テーブルへのシンボルのエ ク ス ポー ト を 防 止 する には、 --no_export_all を 使 用<br />
します。<br />
シンボルのエクスポート をよ り 厳 密 に 制 御 するには、 ステア リ ングファイル<br />
を 使 用 し ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-23<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「グ ローバルシンボルの 非 表 示 と 名 前 の 変 更 」<br />
(ページ 4-14)<br />
2.1.39 --feedback=file<br />
このオプシ ョ ンを 使 用 する と、 次 にファイルをコンパイルする と きのために、<br />
未 使 用 の 関 数 について コ ンパ イ ラ に 通 知 する フ ィ ー ド バ ッ ク フ ァ イ ルが 生 成<br />
されます。<br />
次 回 ファイルをコンパイルする と きに、 コンパイラオプシ ョ ン<br />
--feedback=file で、 使 用 する フ ィ ー ド バ ッ ク フ ァ イルを 指 定 し ます。 未 使 用<br />
の 関 数 は、 関 数 自 体 のセ ク シ ョ ン 内 に 配 置 され、 後 で リ ンカによ って 削 除 で<br />
きるようになっています。<br />
関 連 項 目<br />
• 「--feedback_image=option」<br />
• 「--feedback_type=type」 (ページ 2-25)<br />
• 『コンパイ ラユーザガイ ド』 の 「--feedback=filename」 (ページ<br />
2-62)<br />
• 『リンカユーザガイド』 の 「フ ィードバッ ク」 (ページ 3-16)<br />
2.1.40 --feedback_image=option<br />
このオプションは、 フィードバックファイルを 記 述 するときのリンカの 動 作<br />
を 変 更 し ます。 こ のオプシ ョ ン を 使 用 する と 、 実 行 可 能 な ELF イ メージを 通<br />
常 は 作 成 で き ないフ ィ ー ド バ ッ ク フ ァ イルが 生 成 さ れます。<br />
構 文<br />
--feedback_image=option<br />
option は 以 下 のいずれかにな り ます。<br />
none<br />
領 域 のサ イ ズ 制 限 を 決 定 する には、 ス キ ャ ッ タ フ ァ イルを 使 用<br />
します。 領 域 の 重 複 と 領 域 サ イ ズのオーバーフ ロー メ ッ セージ を<br />
無 効 に し ます。 ELF イ メージを 記 述 しません。 領 域 が 32 ビッ トア<br />
ドレス 空 間 をオーバーフローする 場 合 でも、 エラーメッセージ<br />
が 生 成 されます。<br />
2-24 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
noerrors<br />
simple<br />
full<br />
領 域 のサ イ ズ 制 限 を 判 別 するには、 ス キ ャ ッ タ フ ァ イルを 使 用<br />
します。 領 域 の 重 複 と 領 域 サ イ ズのオーバーフ ロー 警 告 メ ッ セー<br />
ジが 表 示 さ れます。 ELF イ メ ージを 記 述 し ますが、 実 行 可 能 でな<br />
い 場 合 があ り ます。 領 域 が 32 ビッ トアドレス 空 間 をオーバーフ<br />
ローする 場 合 で も、 エ ラー メ ッ セージが 生 成 さ れます。<br />
スキャッタファイルを 無 視 します。 ROPI/RWPI エラーと 警 告 を 無<br />
効 にし ます。 ELF イ メ ージを 記 述 し ますが、 実 行 可 能 でない 場 合<br />
があ り ます。<br />
エラーメ ッセージ と 警 告 メ ッセージをすべて 有 効 にし、 有 効 な<br />
ELF イ メージを 記 述 します。<br />
デフォルト<br />
デフォル ト のオプシ ョ ンは --feedback_image=full です。<br />
例<br />
コー ド が、 ス キ ャ ッ タ フ ァ イルに 記 述 さ れた 領 域 サ イ ズの 制 限 を 越 え る 場 合<br />
は、 リ ンカフ ィ ード バッ ク を 使 用 し て 未 使 用 の 関 数 を 削 除 する 前 に、<br />
--feedback_image=noerrors を 使 用 します。<br />
関 連 項 目<br />
• 「--feedback=file」 (ページ 2-24)<br />
• 「--feedback_type=type」<br />
• 『コンパイ ラユーザガイ ド』 の 「--feedback=filename」 (ページ<br />
2-62)<br />
• 『リンカユーザガイド』 の 「フ ィードバッ ク」 (ページ 3-16)<br />
2.1.41 --feedback_type=type<br />
こ のオプシ ョ ンは、 リ ンカがフ ィ ー ド バ ッ ク フ ァ イルに 挿 入 する 情 報 を 制 御<br />
します。<br />
構 文<br />
--feedback_type=type<br />
type は、 以 下 の ト ピ ッ ク キーワー ド か ら の コ ンマ 区 切 り の リ ス ト です。<br />
[no]iw インターワークのサポートが 必 要 な 関 数 を 制 御 します。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-25<br />
Non-Confidential
リンカコマンドラインオプション<br />
[no]unused<br />
イ メ ージ 内 の 未 使 用 の 関 数 を 制 御 し ます。<br />
デフォルト<br />
デフォル ト のオプシ ョ ンは --feedback_type=unused,noiw です。<br />
関 連 項 目<br />
• 「--feedback=file」 (ページ 2-24)<br />
• 「--feedback_image=option」 (ページ 2-24)<br />
• 『コンパイ ラユーザガイ ド』 の 「--feedback=filename」 (ページ<br />
2-62)<br />
• 『リンカユーザガイド』 の 「フ ィードバッ ク」 (ページ 3-16)<br />
2.1.42 --[no_]filtercomment<br />
このオプションは .comment セクションを 制 御 して 一 般 的 なコメントのマージ<br />
を 改 善 し ます。 フィルタを 無 効 にする 場 合 は、--no_filtercomment を 使 用 し ま<br />
す。<br />
デフォルト<br />
デフォル ト は --filtercomment です。<br />
2.1.43 --fini=symbol<br />
こ のオプシ ョ ンは、 終 了 処 理 コー ド のエン ト リ ポ イ ン ト の 定 義 に 使 用 する シ<br />
ンボル 名 を 指 定 します。 実 行 可 能 フ ァ イルま たは 共 有 オブジ ェ ク ト を アン<br />
ロー ド する と き に、 ダ イ ナ ミ ッ ク リ ン カに よ っ て こ の コー ド が 実 行 さ れます。<br />
関 連 項 目<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.44 --first=section_id<br />
このオプシ ョ ンは、 選 択 した 入 力 セクシ ョ ンを 実 行 領 域 の 最 初 に 配 置 します。<br />
例 えば、 ベ ク タ テーブルを 含 むセ ク シ ョ ン を イ メ ージの 最 初 に 配 置 で き ます。<br />
構 文<br />
--first=section_id<br />
2-26 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
section_id は 以 下 のいずれかにな り ます。<br />
symbol<br />
symbol を 定 義 する セ ク シ ョ ン を 選 択 し ます。 最 初 に 配 置 で き る セ<br />
クションは 1 つだけなので、 複 数 の 定 義 を 含 むシンボルは 指 定 し<br />
ないで 下 さい。 以 下 に 例 を 示 し ます。 --first=reset<br />
object(section)<br />
object から section を 選 択 し ます。 object と 開 きかっこの 間 にはス<br />
ペース を 挿 入 し ないで 下 さ い。 以 下 に 例 を 示 し ます。<br />
--first=init.o(init)<br />
object<br />
object 内 の 1 つの 入 力 セ ク シ ョ ン を 選 択 し ます。 この 短 縮 形 を 使<br />
用 し た 場 合 に 複 数 の 入 力 セ ク シ ョ ンが 存 在 する と 、 リ ンカでエ<br />
ラー メ ッ セージが 生 成 さ れます。 例 : --first=init.o<br />
注<br />
スキャッタロードを 使 用 しているときは、 スキャッタファイルで +FIRST を 使<br />
用 して 下 さい。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「セ ク シ ョ ンの 配 置 」 (ページ 3-9)<br />
2.1.45 --[no_]force_so_throw<br />
こ のオプシ ョ ンは、 イ メ ージが 例 外 を ス ローで き る かど う かを 制 御 し ます。<br />
デフ ォル ト では、 コー ド で 例 外 がス ローされない 場 合 は 例 外 テーブルが 破 棄<br />
されます。<br />
デフォルト<br />
デフォル ト は --no_force_so_throw です。<br />
使 用 法<br />
すべての 共 有 オブジ ェ ク ト が 例 外 を ス ローする 可 能 性 があ る こ と を 指 定 し、<br />
イ メージが 例 外 をス ローでき るかど う かに 関 係 な く 、 例 外 テーブルを 保 持 す<br />
るようにリンカに 指 示 するには、--force_so_throw を 使 用 し ます。 --sysv オプ<br />
シ ョ ン を 使 用 し てい る 場 合 は、--force_so_throw が 自 動 設 定 さ れます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-27<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「--sysv」 (ページ 2-66)<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.46 --fpic<br />
このオプションを 使 用 すると、--apcs=/fpic 修 飾 子 を 使 用 してコンパイルされ<br />
た 位 置 非 依 存 コー ド (PIC) を リ ンクできます。 コードで System V の 共 有 ラ イ<br />
ブ ラ リ を 使 用 し てい る 場 合 にのみ、 相 対 ア ド レ スが 実 装 さ れます。<br />
注<br />
--shared が 使 用 され --fpic が 使 用 さ れない 場 合 、 リ ン カは 降 格 可 能 なエ ラー<br />
を 出 力 し ます。<br />
関 連 項 目<br />
• 「--shared」 (ページ 2-60)<br />
2.1.47 --fpu=list<br />
このオプションを 使 用 すると、--fpu=name オプシ ョ ン と 組 み 合 わせて 使 用 可 能<br />
なサポー ト されている FPU アーキテ ク チャ 名 が 一 覧 表 示 さ れます。<br />
関 連 項 目<br />
• 「--fpu=name」<br />
2.1.48 --fpu=name<br />
このオプションを 使 用 すると、 リンカでターゲッ トの FPU アーキテクチャを<br />
指 定 で き ます。<br />
選 択 し た FPU アーキテ ク チ ャ と 互 換 性 のない 機 能 に コ ンポーネン ト オブジ ェ<br />
ク ト フ ァ イルが 依 存 し ている 場 合 は、 リ ン ク 処 理 に 失 敗 し ます。 また、 リ ン<br />
カは こ のオプシ ョ ン を 使 用 し て 最 終 イ メ ージを 構 築 する と き に 生 成 する 必 要<br />
のあ る シ ス テム ラ イ ブ ラ リ と ベニアの 選 択 を 最 適 化 し ます。 デフォル ト は、<br />
すべての コ ンポーネン ト オブジ ェ ク ト フ ァ イ ル と 互 換 性 のあ る FPU の 選 択 で<br />
す。<br />
このオプションの 形 式 は、 コンパイラでサポート されている 形 式 と 同 じです。<br />
2-28 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「--fpu=list」 (ページ 2-28)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--fpu=name」 (ページ 2-69)<br />
2.1.49 --help<br />
こ のオプシ ョ ン を 選 択 する と 、 主 な コ マン ド ラ イ ンオプシ ョ ンの 一 覧 が 表 示<br />
されます。<br />
デフォルト<br />
これは、 オプショ ンやソースファイルなしで armlink を 指 定 する 場 合 のデフォ<br />
ルトです。<br />
関 連 項 目<br />
• 「--show_cmdline」 (ページ 2-60)<br />
• 「--vsn」 (ページ 2-70)<br />
2.1.50 --info=topic[,topic,...]<br />
こ のオプシ ョ ンは 特 定 の ト ピ ッ ク に 関 する 情 報 を 印 刷 し ます。<br />
構 文<br />
--info=topic[,topic,...]<br />
topic は、 以 下 の ト ピ ッ ク キーワー ド か ら の コ ンマ 区 切 り の リ ス ト です。<br />
architecture CPU、 FPU、 およびバイ ト 順 序 を 一 覧 表 示 し て、 イ メ ージのアー<br />
キテ ク チ ャ を 要 約 し ます。<br />
common<br />
debug<br />
exceptions<br />
inline<br />
イ メージから 削 除 されたすべての 共 通 セクシ ョ ンが 一 覧 表 示 さ<br />
れます。 このオプションを 使 用 すると、--info=common,totals を 指<br />
定 したこ とになり ます。<br />
--remove を 使 用 し た 結 果 、 イ メ ージか ら 削 除 さ れる 拒 否 さ れた 入<br />
力 デバ ッ グセ ク シ ョ ンがすべて 一 覧 にな り ます。 このオプショ ン<br />
を 使 用 する と 、--info debug,totals を 指 定 したこ とにな り ます。<br />
例 外 テーブルの 生 成 と 最 適 化 に 関 する 情 報 が 表 示 さ れます。<br />
--inline を 使 用 した 場 合 に リ ンカによってインラ イン 化 されたす<br />
べての 関 数 およびイ ン ラ イ ンの 総 数 が 表 示 さ れます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-29<br />
Non-Confidential
リンカコマンドラインオプション<br />
inputs<br />
libraries<br />
merge<br />
pltgot<br />
sizes<br />
stack<br />
summarysizes<br />
入 力 シンボル、 オブジ ェ ク ト 、 および ラ イ ブ ラ リ を 一 覧 表 示 し<br />
ます。<br />
リ ン ク ステージに 対 して 自 動 選 択 されたすべてのラ イブラ リ の<br />
完 全 パス 名 を 一 覧 表 示 し ます。<br />
このオプションを --info_lib_prefix と 一 緒 に 使 用 する と、 特 定 の<br />
ラ イブラ リ に 関 する 情 報 を 表 示 できます。<br />
リンカによってマージされる const 文 字 列 を 一 覧 に し ます。 各 項<br />
目 に、 マージ 結 果 、 マージ さ れる 文 字 列 、 および 関 連 する オブ<br />
ジェク ト ファイルが 表 示 されます。<br />
実 行 可 能 フ ァ イルま たは DLL にビルド された PLT エン ト リ を 一<br />
覧 表 示 し ます。<br />
イメージ 内 の 入 力 オブジェクトおよびライブラリのメンバごと<br />
に、 コード と データ (RO データ、 RW データ、 ZI データ、 およ<br />
びデバ ッ グデータ) のサ イ ズが 一 覧 表 示 さ れます。 このオプショ<br />
ンを 使 用 すると、--info=sizes,totals を 指 定 したこ とにな り ます。<br />
すべてのグ ローバルシンボルのス タ ッ ク 使 用 状 況 を 一 覧 表 示 し<br />
ます。<br />
イ メ ージの コー ド サ イ ズ と データ サ イ ズ を 要 約 し ます。<br />
summarystack すべてのグ ローバルシンボルのス タ ッ ク 使 用 状 況 を 要 約 し ます。<br />
tailreorder<br />
totals<br />
unused<br />
veneers<br />
--tailreorder を 使 用 し た 結 果 、 ターゲ ッ ト の 上 に 移 動 するすべて<br />
の Tail の 呼 び 出 し セ ク シ ョ ンが 一 覧 にな り ます。<br />
入 力 オブジ ェ ク ト と ラ イ ブ ラ リ の コー ド と データ (RO データ、<br />
RW データ、 ZI データ、 およびデバ ッ グデータ) の 合 計 サ イ ズが<br />
一 覧 にな り ます。<br />
--remove を 使 用 し た 結 果 、 イ メ ージか ら 削 除 さ れる 未 使 用 のセ ク<br />
ションがすべて 一 覧 になります。<br />
リ ンカに よ って 生 成 さ れるベニアが 一 覧 にな り ます。<br />
veneercallers<br />
リ ンカによ って 生 成 されるベニアを、 各 ベニアへの 呼 び 出 し 元<br />
に 関 する 追 加 情 報 と 共 に 一 覧 表 示 し ます。 呼 び 出 し を 個 別 に 表 示<br />
するには、 --verbose と 一 緒 に 使 用 します。<br />
2-30 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
visibility<br />
シンボルの 可 視 性 情 報 を 一 覧 に し ます。 このオプションを<br />
--info=inputs または --verbose と 一 緒 に 使 用 して 出 力 を 向 上 でき<br />
ます。<br />
--info=sizes,totals の 出 力 には、 常 に 入 力 オブジェ ク ト と ラ イブラ リ の 合 計 に<br />
パッ ドする 値 が 含 まれます。<br />
RW データ 圧 縮 (デフ ォル ト ) を 使 用 し てい る 場 合 、 ま たは<br />
--datacompressor=id オプシ ョ ンを 使 用 してコンプレ ッサを 指 定 した 場 合<br />
は、--info=sizes,totals からの 出 力 には Grand Totals の 下 に、 イ メ ージの 実 際 の<br />
サ イ ズを 示 すエン ト リ が 表 示 さ れます。<br />
注<br />
リスト 内 のトピックキーワードの 間 にはスペースを 挿 入 しないで 下 さい。 例<br />
えば、 「--info=sizes,totals」 は 入 力 できますが、 「--info=sizes, totals」 は 入 力<br />
できません。<br />
関 連 項 目<br />
• 「--datacompressor=opt」 (ページ 2-14)<br />
• 「--info_lib_prefix=opt」<br />
• 「--[no_]inline」 (ページ 2-32)<br />
• 「--[no_]merge」 (ページ 2-44)<br />
• 「--[no_]remove」 (ページ 2-54)<br />
• 「--[no_]tailreorder」 (ページ 2-66)<br />
• 「--verbose」 (ページ 2-68)<br />
• 『リンカユーザガイド』 の 「RW データ 圧 縮 」 (ページ 3-19)<br />
• 『リンカユーザガイド』 の 「イ メ ージに 関 する 情 報 の 取 得 」 (ページ<br />
3-37)<br />
2.1.51 --info_lib_prefix=opt<br />
このオプショ ンは --info=libraries オプシ ョ ンのフ ィルタです。 このフィルタ<br />
と 同 じ 接 頭 辞 の ラ イ ブ ラ リ のみが 表 示 さ れます。<br />
構 文<br />
armlink --info=libraries --info_lib_prefix=opt<br />
opt は 必 要 な ラ イ ブ ラ リ の 接 頭 辞 です。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-31<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.52 --init=symbol<br />
例<br />
• フィルタを 使 用 しないライブラリ 一 覧 の 表 示 :<br />
armlink --info=libraries test.o<br />
ラ イ ブ ラ リ の リ ス ト を 生 成 し ます。 例 :<br />
install_directory\...\lib\armlib\c_4.l<br />
install_directory\...\lib\armlib\fz_4s.l<br />
install_directory\...\lib\armlib\h_4.l<br />
install_directory\...\lib\armlib\m_4s.l<br />
install_directory\...\lib\armlib\vfpsupport.l<br />
• フィルタを 使 用 したライブラリ 一 覧 の 表 示<br />
armlink --info=libraries --info_lib_prefix=c test.o<br />
指 定 し た 接 頭 辞 を 使 用 し て ラ イ ブ ラ リ 一 覧 を 生 成 し ます。 例 :<br />
install_directory\...\lib\armlib\c_4.l<br />
こ のオプシ ョ ンは、 初 期 化 コー ド の 定 義 に 使 用 する シンボル 名 を 指 定 し ます。<br />
実 行 可 能 ファイルまたは 共 有 オブジェク ト をロードする と きに、 ダイナミ ッ<br />
クリンカによってこのコードが 実 行 されます。<br />
関 連 項 目<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.53 --[no_]inline<br />
こ のオプシ ョ ンは、 イ メ ージ 内 の 小 さ い 関 数 呼 び 出 し を 最 適 化 する 分 岐 の イ<br />
ンラ イン 化 を 有 効 または 無 効 にします。<br />
デフォルト<br />
デフォル ト は --no_inline です。<br />
注<br />
分 岐 の 最 適 化 を 有 効 にする と イ メ ージが 変 更 さ れ、 デバ ッ グ 情 報 が 不 適 切 に<br />
な る 可 能 性 があ る ため、 分 岐 の 最 適 化 はデフ ォル ト では 無 効 になっています。<br />
分 岐 の 最 適 化 を 有 効 にする と 、 デバ ッ グ 情 報 の 修 正 は 行 われません。<br />
2-32 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「--[no_]branchnop」 (ページ 2-7)<br />
• 「--[no_]tailreorder」 (ページ 2-66)<br />
• 『リンカユーザガイド』 の 「インライン」 (ページ 3-26)<br />
2.1.54 --[no_]inlineveneer<br />
このオプシ ョ ンは、 リ ンカのセクシ ョ ン 配 置 の 制 御 を 強 化 する インラ インベ<br />
ニアの 生 成 を 有 効 ま たは 無 効 に し ます。<br />
デフォルト<br />
デフォル ト は --inlineveneer です。<br />
関 連 項 目<br />
• 「--[no_]piveneer」 (ページ 2-46)<br />
• 「--[no_]veneershare」 (ページ 2-68)<br />
• 『リンカユーザガイド』 の 「ベニア」 (ページ 3-22)<br />
2.1.55 input_file_list<br />
オブジェ ク ト 、 ラ イブラ リ 、 またはシンボル 定 義 (symdefs) ファイルをス<br />
ペースで 区 切 って 指 定 し ます。<br />
使 用 法<br />
リンカでは、 入 力 ファイルリストが 順 にソートされます。 リンカが 入 力 ファ<br />
イ ルの 問 題 を 解 決 で き ない 場 合 は、 診 断 メ ッ セージが 生 成 さ れます。<br />
このリ ス トに symdefs ファイルを 含 めることで、 前 に 生 成 されたイメージ<br />
ファイルのグローバルシンボル 値 を 指 定 できます。<br />
入 力 フ ァ イル リ ス ト 内 の ラ イ ブ ラ リ は、 以 下 の 方 法 で 使 用 で き ます。<br />
• 非 weak 型 の 未 解 決 参 照 を 解 決 する メ ンバがあ る 場 合 に 追 加 する、 その<br />
メ ンバの 抽 出 に 使 用 する ラ イ ブ ラ リ を ラ イ ブ ラ リ リ ス ト に 指 定 し ます。<br />
例 えば、 入 力 フ ァ イル リ ス ト に mystring.lib と 指 定 します。<br />
注<br />
このリ ス トのライブラ リのメンバは、 非 weak 型 の 未 解 決 参 照 を 解 決 す<br />
る 場 合 にのみ、 イ メ ージに 追 加 さ れます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-33<br />
Non-Confidential
リンカコマンドラインオプション<br />
• ライブラリから 抽 出 し、 個 別 のオブジェクトとしてイメージに 追 加 する<br />
特 定 の メ ンバを 指 定 し ます。 メンバはコンマ 区 切 りのパターン 一 覧 から<br />
選 択 さ れ、 ワ イ ル ド カー ド も 含 め る こ と がで き ます。 スペースは 許 可 さ<br />
れていませんが、 使 用 する 場 合 は 入 力 フ ァ イル 全 体 を 引 用 符 で 囲 む 必 要<br />
があ り ます。<br />
以 下 に、 スペースがあ る 場 合 と ない 場 合 の 入 力 フ ァ イ ルの 例 を 示 し ま<br />
す。<br />
mystring.lib(strcmp.o,std*.o)<br />
“mystring.lib(strcmp.o, std*.o)”<br />
リ ンカは、 イ メ ージに 最 適 な 標 準 関 数 を 選 択 する ために、 適 し た C ライブラ<br />
リおよび C++ ラ イ ブ ラ リ を 自 動 的 に 検 索 し ます。 --no_scanlib を 使 用 して、 標<br />
準 ラ イ ブ ラ リ を 自 動 的 に 検 索 し ない よ う にする こ と がで き ます。<br />
リ ン カでは、 入 力 フ ァ イ ル リ ス ト が 以 下 の 順 序 で 処 理 さ れます。<br />
1. オブジ ェ ク ト を 無 条 件 に イ メ ージに 追 加 し ます。<br />
2. パターンを 使 用 してライブラ リから 選 択 したメンバを、 オブジェク ト と<br />
して 無 条 件 にイメージに 追 加 します。 例 えば、mystring.lib からすべての<br />
a*.o オブジェ ク ト と stdio.o を 追 加 する には、 以 下 を 使 用 し ます。<br />
“mystring.lib(stdio.o, a*.o)”<br />
3. 残 り の 参 照 の 解 決 のために 後 で 使 用 する 標 準 C または C++ ライブラリ<br />
をリストに 追 加 します。<br />
関 連 項 目<br />
• 「--[no_]scanlib」 (ページ 2-58)<br />
• 『リンカユーザガイド』 の 「ラ イ ブ ラ リ の 検 索 、 選 択 、 ス キ ャ ン」<br />
(ページ 3-41)<br />
• 『リンカユーザガイド』 の 「 別 の イ メ ージに 含 まれてい る シンボルへの<br />
アクセス」 (ページ 4-10)<br />
2.1.56 --keep=section_id<br />
こ のオプシ ョ ンは、 未 使 用 セ ク シ ョ ンの 排 除 に よ って 削 除 し てはいけない 入<br />
力 セ ク シ ョ ンを 指 定 し ます。<br />
構 文<br />
--keep=section_id<br />
2-34 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
section_id は 以 下 のいずれかにな り ます。<br />
symbol<br />
未 使 用 セ ク シ ョ ンの 削 除 中 に、 symbol を 定 義 している 入 力 セク<br />
ションを 保 持 することを 指 定 します。 symbol が 複 数 定 義 さ れてい<br />
る 場 合 は、 armlink からエラーメ ッセージが 生 成 されます。<br />
例 えば、--keep=int_handler を 使 用 できます。<br />
_handler で 終 わる シンボルを 定 義 するすべてのセ ク シ ョ ンを 保 持<br />
するには、--keep=*_handler を 使 用 し ます。<br />
object(section)<br />
未 使 用 セ ク シ ョ ンの 削 除 中 に、 object の section を 保 持 する こ と<br />
を 指 定 し ます。 例 えば、vectors.o オブジェ ク ト の vect セクション<br />
を 保 持 する には、 以 下 のオプシ ョ ン を 使 用 し ます。<br />
--keep=vectors.o(vect)<br />
vectors.o オブジェ ク ト のセクシ ョ ンで、 セクシ ョ ン 名 の 先 頭 3<br />
文 字 が vec のセ ク シ ョ ン をすべて 保 持 するには、<br />
--keep=vectors.o(vec*) を 使 用 します。<br />
object<br />
未 使 用 セ ク シ ョ ンの 削 除 中 に、 object の 1 つの 入 力 セ ク シ ョ ンを<br />
保 持 する こ と を 指 定 し ます。 こ の 短 縮 形 を 使 用 し た 場 合 に object<br />
に 複 数 の 入 力 セ ク シ ョ ンが 存 在 する と 、 リ ンカでエ ラー メ ッ<br />
セージが 生 成 されます。<br />
例 えば、--keep=dspdata.o を 使 用 できます。<br />
dsp で 始 ま る 名 前 の 各 オブジェ ク ト で、 それぞれ 1 つの 入 力 セ ク<br />
ションを 保 持 するには、--keep=dsp*.o を 使 用 し ます。<br />
すべての 形 式 の section_id 引 数 には、 ワ イル ド 文 字 * と ? を 含 める こ とができ<br />
ます。 コマンド ラインでは --keep オプシ ョ ン を 複 数 指 定 で き ます。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「イ メ ージ 構 造 の 指 定 」 (ページ 3-2)<br />
2.1.57 --[no_]largeregions<br />
こ のオプシ ョ ンは、 大 き い 実 行 領 域 でセ ク シ ョ ンの ソ ー ト 順 序 を 制 御 し て、<br />
相 互 に 呼 び 出 すセ ク シ ョ ン 間 の 距 離 を 最 小 限 に し ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-35<br />
Non-Confidential
リンカコマンドラインオプション<br />
使 用 法<br />
実 行 領 域 に、 分 岐 命 令 の 範 囲 を 超 え る コー ド が 含 まれてい る 場 合 は、 大 領 域<br />
モード に 切 り 替 わ り ます。 こ のモー ド では、 各 セ ク シ ョ ンの 近 似 平 均 コール<br />
深 度 に 従 って 昇 順 に ソ ー ト さ れます。 また、 ベニアの 数 を 最 小 限 に 抑 えるた<br />
めに、 コー ド セ ク シ ョ ン 間 に 分 散 ベニアが 配 置 さ れる 場 合 も あ り ます。<br />
注<br />
大 領 域 モー ド では、 入 力 に 加 えた 変 更 が 少 しの 場 合 でも、 イ メ ージのレ イ ア<br />
ウトが 大 幅 に 変 わる 可 能 性 があります。<br />
大 領 域 モー ド を 無 効 に し、 語 句 順 に 戻 すには、--no_largeregions を 使 用 し ます。<br />
セ ク シ ョ ンの 配 置 が 予 測 で き、 イ メ ージの 比 較 が 予 測 しやす く な り ます。 た<br />
だ し、 一 部 の 分 岐 は ターゲ ッ ト に 到 達 せず、 リ ン ク 手 順 が 失 敗 する 可 能 性 が<br />
あります。 その 場 合 は、 適 切 な ス キ ャ ッ タ ロー ド 記 述 フ ァ イ ルを 使 用 し て<br />
コー ド と データ のセ ク シ ョ ン を 明 示 的 に 配 置 する 必 要 があ り ます。<br />
デフォルト<br />
デフォル ト のオプシ ョ ンは --no_largeregions です。 ただし、 少 な く と も 1 つの<br />
実 行 領 域 に、 最 小 の イ ン ターセ ク シ ョ ン 分 岐 を 越 え る コー ド が 含 まれてい る<br />
場 合 、 デフ ォル ト のオプシ ョ ンは --largeregions です。 最 小 の イ ン ターセ ク<br />
シ ョ ン 分 岐 は、 領 域 内 のコー ド と ターゲ ッ ト プ ロ セ ッ サに よ って 異 な り ます。<br />
32Mb <strong>ARM</strong> のみを 含 む 実 行 領 域 。<br />
16Mb<br />
4Mb<br />
実 行 領 域 に Thumb が 含 まれてお り 、 Thumb-2 がサポー ト されて<br />
います。<br />
実 行 領 域 に Thumb が 含 まれてお り 、 Thumb-2 がサポー ト されて<br />
いません。<br />
関 連 項 目<br />
• 「--sort=algorithm」 (ページ 2-61)<br />
• 『リンカユーザガイド』 の 「ベニア」 (ページ 3-22)<br />
2.1.58 --last=section_id<br />
このオプシ ョ ンは、 選 択 した 入 力 セクシ ョ ンを 実 行 領 域 の 最 後 に 配 置 します。<br />
例 えば、 こ のオプシ ョ ン を 使 用 する と 、 チェ ッ ク サム を 含 む 入 力 セ ク シ ョ ン<br />
を RW セ ク シ ョ ンの 最 後 に 配 置 で き ます。<br />
2-36 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
構 文<br />
--last=section_id<br />
section_id は 以 下 のいずれかを 指 定 し ます。<br />
symbol<br />
symbol を 定 義 する セ ク シ ョ ン を 選 択 し ます。 最 後 に 配 置 で き る セ<br />
クションは 1 つだけなので、 複 数 の 定 義 を 含 むシンボルは 指 定 し<br />
ないで 下 さい。 以 下 に 例 を 示 し ます。 --last=checksum<br />
object(section)<br />
object から section を 選 択 し ます。 object と 開 きかっこの 間 にはス<br />
ペース を 挿 入 し ないで 下 さ い。 以 下 に 例 を 示 し ます。<br />
--last=checksum.o(check)<br />
object<br />
object から 1 つの 入 力 セ ク シ ョ ン を 選 択 し ます。 object に 複 数 の<br />
入 力 セ ク シ ョ ンが 存 在 する 場 合 は、 armlink からエラーメ ッセー<br />
ジが 生 成 さ れます。<br />
注<br />
スキャッタロードを 使 用 しているときは、 スキャッタファイルで +LAST を 使 用<br />
して 下 さい。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「セ ク シ ョ ンの 配 置 」 (ページ 3-9)<br />
2.1.59 --[no_]legacyalign<br />
デフ ォル ト では、 リ ンカで 実 行 領 域 およびロー ド 領 域 が 4 バイ ト 境 界 で 整 列<br />
されると 想 定 されています。 このオプショ ンによ り、 リンカはイ メージに 挿<br />
入 するパデ ィ ングを 最 小 限 に 抑 え る こ と がで き ます。<br />
--nolegacyalign オプシ ョ ン を 使 用 する と 、 パデ ィ ン グが 挿 入 さ れ 自 然 な 境 界<br />
整 列 が 使 用 されるよ うにリ ンカが 設 定 されます。 自 然 な 境 界 整 列 と は、 その<br />
領 域 におけ る 既 知 の 最 大 境 界 に よ る 整 列 です。<br />
ELF の 仕 様 に 厳 密 に 適 合 するには、 こ のオプシ ョ ンを 使 用 し て 下 さい。<br />
デフォルト<br />
デフォル ト は --legacyalign です。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-37<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「セ ク シ ョ ンの 配 置 」 (ページ 3-9)<br />
2.1.60 --library=name<br />
このオプションは、 コマンドラインのその 時 点 でダイナミ ックライブラ リ 検<br />
索 が 有 効 かど う かによ って、 libname.so または libname.a という 名 前 のライブ<br />
ラリを 検 索 します。<br />
使 用 法<br />
ダ イ ナ ミ ッ ク 検 索 は --[no_]search_dynamic_libraries オプシ ョ ンによ って 制 御<br />
されます。<br />
共 有 ラ イ ブ ラ リ への 参 照 が イ メ ージに 追 加 さ れ、 実 行 時 にダ イ ナ ミ ッ ク ロー<br />
ダによってラ イブラ リへの 参 照 が 解 決 されます。 ライブラリへの 参 照 が 解 決<br />
さ れる 順 序 は、 コ マン ド ラ イ ンで ラ イ ブ ラ リ が 指 定 さ れてい る 順 序 です。 こ<br />
れは、 ダ イナ ミ ッ ク リ ンカに よ って 依 存 関 係 が 解 決 さ れる 順 序 で も あ り ます。<br />
–-runpath オプシ ョ ン を 使 用 し て、 ラ イ ブ ラ リ の 実 行 時 の 場 所 を 指 定 で き ます。<br />
例<br />
例 2-2 は libfoo.a よ り 先 に libfoo.so を 検 索 し ますが、libbar.a のみを 検 索 し ま<br />
す。<br />
例 2-2 ダ イナ ミ ッ ク ラ イ ブ ラ リ の 検 索<br />
次 のコマン ド ラ イ ンオプシ ョ ンで armlink を 使 用 し ます。<br />
--arm_linux --shared --fpic --search_dynamic_libraries --library=foo<br />
--no_search_dynamic_libraries --library=bar<br />
関 連 項 目<br />
• 「--arm_linux」 (ページ 2-3)<br />
• 「--runpath=pathlist」 (ページ 2-56)<br />
• 「--[no_]search_dynamic_libraries」 (ページ 2-59)<br />
2-38 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.61 --libpath=pathlist<br />
このオプショ ンは、 <strong>ARM</strong> の 標 準 C および C++ ライブラリの 検 索 に 使 用 され<br />
るパスのリ ス ト を 指 定 します。<br />
<strong>ARM</strong> の ラ イ ブ ラ リ を 含 む 親 デ ィ レ ク ト リ の 標 準 設 定 のパスは、 RVCTverLIB 環<br />
境 変 数 で 指 定 さ れます。 こ こ で 指 定 するパスは、 環 境 変 数 で 指 定 し たパス を<br />
オーバーラ イ ド し ます。<br />
構 文<br />
--libpath=pathlist<br />
pathlist は 必 要 な <strong>ARM</strong> ラ イ ブ ラ リ の 検 索 のみに 使 用 するパス を コ ンマで 区<br />
切 って 指 定 し ます。 複 数 のパス 名 を 指 定 する と きは、 コンマとパス 名 の 間 に<br />
スペースを 挿 入 しないで 下 さい ( 例 : path1,path2,path3,...,pathn)。<br />
注<br />
こ のオプシ ョ ンは、 ユーザ ラ イ ブ ラ リ の 検 索 には 影 響 し ません。 ユーザラ イ<br />
ブラ リの 検 索 には --userlibpath を 使 用 して 下 さい。<br />
関 連 項 目<br />
• 「--userlibpath=pathlist」 (ページ 2-68)<br />
• 『リンカユーザガイド』 の 「ライブラ リの 検 索 、 選 択 、 スキャン」<br />
(ページ 3-41)<br />
2.1.62 --library_type=lib<br />
こ のオプシ ョ ンは、 リ ン ク 時 に 使 用 する ラ イ ブ ラ リ を 選 択 し ます。<br />
注<br />
このオプショ ンは、 コンパイラ、 アセンブラ、 またはリンカで 使 用 できます。<br />
このオプションでリンカを 使 用 すると、 他 のすべての --library_type オプシ ョ<br />
ンをオーバーライドします。<br />
構 文<br />
--library_type=lib<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-39<br />
Non-Confidential
リンカコマンドラインオプション<br />
lib は 以 下 のいずれかにな り ます。<br />
standardlib<br />
microlib<br />
完 全 な <strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> の 実 行 時 ラ イ ブ ラ リ が リ<br />
ン ク 時 に 選 択 さ れる よ う に 指 定 し ます。<br />
C micro-library (microlib) がリ ンク 時 に 選 択 されるよ うに<br />
指 定 し ます。<br />
デフォルト<br />
リンク 時 に --library_type を 指 定 せず、 オブジ ェ ク ト フ ァ イルで も 指 定 さ れて<br />
いない 場 合 は、--library_type=standardlib と 見 なされます。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「microlib を 使 用 したアプ リ ケーシ ョ ンの 作<br />
成 」 (ページ 3-4)<br />
2.1.63 --licretry<br />
このオプションは、 特 定 の FLEXnet エ ラーコー ド に 遭 遇 する と 、 ラ イ セン ス<br />
の 確 認 を 約 10 秒 間 隔 で 最 大 10 回 再 試 行 する よ う に リ ンカに 指 示 し ます。<br />
2.1.64 --linux_abitag=version_id<br />
こ のオプシ ョ ン を 使 用 する と 、 ビル ド し てい る 実 行 可 能 フ ァ イルに、 最 低 限<br />
互 換 性 のあ る Linux カーネルバージ ョ ン を 指 定 で き ます。<br />
関 連 項 目<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.65 --list=file<br />
このオプションは、--info、--map、--symbols、 --verbose、--xref、--xreffrom、 およ<br />
び --xrefto コマンドの 出 力 から file に 診 断 結 果 の 出 力 を 転 送 し ます。<br />
指 定 さ れた フ ァ イ ルは、 診 断 結 果 の 出 力 時 に 作 成 さ れます。 同 じ 名 前 のフ ァ<br />
イルが 既 に 存 在 する 場 合 、 そのファイルは 上 書 きされます。 ただし、 診 断 結<br />
果 が 出 力 さ れない 場 合 はフ ァ イルが 作 成 さ れません。 この 場 合 、 同 じ 名 前 の<br />
既 存 のフ ァ イルの 内 容 は 変 更 さ れません。<br />
2-40 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
file にパスが 指 定 さ れていない 場 合 、 出 力 デ ィ レ ク ト リ ( 出 力 イ メ ージが 書<br />
き 込 まれるデ ィ レ ク ト リ ) にフ ァ イ ルが 作 成 さ れます。<br />
関 連 項 目<br />
• 「--info=topic[,topic,...]」 (ページ 2-29)<br />
• 「--[no_]map」 (ページ 2-43)<br />
• 「--[no_]symbols」 (ページ 2-64)<br />
• 「--verbose」 (ページ 2-68)<br />
• 「--[no_]xref」 (ページ 2-71)<br />
• 「--[no_]xrefdbg」 (ページ 2-72)<br />
2.1.66 --[no_]list_mapping_symbols<br />
このオプショ ンは、--symbols が 生 成 する 出 力 へのマ ッ ピ ングシンボルの 追 加 を<br />
有 効 ま たは 無 効 に し ます。 例 :<br />
$a <strong>ARM</strong> コード<br />
$t Thumb コード<br />
$d データ<br />
マッピングシンボルは、 <strong>ARM</strong> コード、 Thumb コード、 およびデータ 間 のフラ<br />
グの 遷 移 に 使 用 されます。<br />
デフォルト<br />
デフォル ト は --no_list_mapping_symbols です。<br />
関 連 項 目<br />
• ELF for the <strong>ARM</strong> Architecture (AAELF)。<br />
2.1.67 --[no_]locals<br />
こ のオプシ ョ ンは、 実 行 可 能 イ メ ージの 生 成 時 に、 出 力 シンボルテーブルへ<br />
の ローカルシンボルの 追 加 を 有 効 ま たは 無 効 に し ます。<br />
--no_locals は、 出 力 シンボルテーブルのサ イ ズを 小 さ く する 場 合 に 有 用 な 最<br />
適 化 です。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-41<br />
Non-Confidential
リンカコマンドラインオプション<br />
デフォルト<br />
デフォル ト は --locals です。<br />
2.1.68 --ltcg<br />
こ のオプシ ョ ンは、 リ ン ク 時 のコー ド 生 成 の 最 適 化 を 有 効 に し ます。 入 力 オ<br />
ブジェ ク ト が --ltcg を 使 用 してコンパイルされた 場 合 は、 このオプシ ョ ンを<br />
使 用 する 必 要 があ り ます。<br />
関 連 項 目<br />
• 「--profile=filename」 (ページ 2-50)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--ltcg」 (ページ 2-97)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--profile=filename」 (ペー<br />
ジ 2-119)<br />
2.1.69 --[un]mangled<br />
このオプションは、 診 断 メ ッセージと、--xref、--xreffrom、--xrefto、 および<br />
--symbols オプシ ョ ンで 生 成 された リ ス ト に、 符 号 化 された C++ シンボル 名 、<br />
または 符 号 化 されていない C++ シンボル 名 を 表 示 する よ う に リ ンカに 指 示 し<br />
ます。<br />
デフォルト<br />
デフォル ト は --unmangled です。<br />
使 用 法<br />
--unmangled を 選 択 する と、 C++ シンボル 名 がソースコードのとおりに 表 示 さ<br />
れます。<br />
--mangled を 選 択 する と、 C++ シンボル 名 は、 オブジェク ト シンボルテーブル<br />
のとおりに 表 示 されます。<br />
関 連 項 目<br />
• 「--[no_]symbols」 (ページ 2-64)<br />
• 「--[no_]xref」 (ページ 2-71)<br />
• 「--[no_]xrefdbg」 (ページ 2-72)<br />
• 「--xref{from|to}=object(section)」 (ページ 2-72)<br />
2-42 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.70 --[no_]map<br />
こ のオプシ ョ ンは、 メ モ リ マ ッ プの 出 力 を 有 効 ま たは 無 効 に し ます。<br />
このマップには、 各 ロード 領 域 、 実 行 領 域 、およびイメージの 入 力 セクショ<br />
ン ( リ ンカに よ って 生 成 さ れた 入 力 セ ク シ ョ ン を 含 む) のア ド レ ス と サ イ ズ<br />
が 含 まれます。 これは、--list を 使 用 し てテキ ス ト フ ァ イ ルに 出 力 する こ と も<br />
できます。<br />
デフォルト<br />
デフォル ト は --no_map です。<br />
関 連 項 目<br />
• 「--list=file」 (ページ 2-40)<br />
• 「--section_index_display=type」 (ページ 2-59)<br />
2.1.71 --match=crossmangled<br />
このオプシ ョ ンは、 以 下 の 組 み 合 わせを 一 緒 にマ ッ チングする よ う に リ ンカ<br />
に 指 示 し ます。<br />
• 符 号 化 さ れていないシンボルへの 参 照 と 符 号 化 さ れた 定 義<br />
• 符 号 化 さ れたシンボルへの 参 照 と 符 号 化 さ れていない 定 義<br />
ラ イ ブ ラ リ と マ ッ チン グの 組 み 合 わせは 以 下 の よ う に 処 理 さ れます。<br />
• ラ イ ブ ラ リ の メ ンバに よ って 符 号 化 さ れた 定 義 が 定 義 さ れていて、 符 号<br />
化 さ れていない 未 解 決 の 参 照 が 存 在 する 場 合 、 こ の よ う な 参 照 を 解 決 す<br />
るためにメンバをロードします。<br />
• ラ イ ブ ラ リ の メ ンバに よ って 符 号 化 さ れていない 定 義 が 定 義 さ れてい<br />
て、 符 号 化 さ れた 未 解 決 の 参 照 が 存 在 する 場 合 、 こ の よ う な 参 照 を 解 決<br />
するためにメ ンバをロード します。<br />
注<br />
こ のオプシ ョ ン を 部 分 的 な リ ン ク に 使 用 し て も 機 能 し ません。 部 分 的 に リ ン<br />
ク さ れたオブジ ェ ク ト には、 符 号 化 さ れた 定 義 が 存 在 する 場 合 で も、 符 号 化<br />
されていないシンボルへの 未 解 決 の 参 照 がすべて 保 持 されます。 マッチング<br />
は、 リ ン ク の 最 終 手 順 でのみ 行 われます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-43<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.72 --max_visibility=type<br />
こ のオプシ ョ ンは、 すべてのシンボル 定 義 の 可 視 性 を 制 御 し ます。<br />
構 文<br />
--max_visibility=type<br />
type は 以 下 のいずれかにな り ます。<br />
default デフ ォル ト の 可 視 性 。<br />
protected 保 護 さ れた 可 視 性 。<br />
使 用 法<br />
すべてのシンボル 定 義 の 可 視 性 を 制 限 する には、--max_visibility=protected を<br />
使 用 し ます。 このオプシ ョ ンを 指 定 する と、 通 常 はデフォル ト の 可 視 性 を 備<br />
えたグ ローバルシンボル 定 義 の 可 視 性 が 保 護 さ れます。<br />
デフォルト<br />
デフォル ト は --max_visibility=default です。<br />
2.1.73 --[no_]merge<br />
このオプションは、 共 有 可 能 なセクションにコンパイラが 配 置 する const 文 字<br />
列 のマージを 有 効 または 無 効 にし ます。 --merge を 使 用 する と 、 const 文 字 列 間<br />
に 類 似 があ る 場 合 に、 イ メ ージのサイ ズを 小 さ く する こ と ができ ます。<br />
マージ された const 文 字 列 の リ ス ト を 表 示 する には、--info=merge を 使 用 できま<br />
す。<br />
デフォルト<br />
デフォル ト は --merge です。<br />
関 連 項 目<br />
• 「--info=topic[,topic,...]」 (ページ 2-29)<br />
2.1.74 --[no_]muldefweak<br />
このオプションは、 シンボルの 複 数 の weak 定 義 を 有 効 ま たは 無 効 に し ます。<br />
2-44 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
有 効 にする と 、 最 初 に 出 現 する 定 義 が 選 択 さ れ、 他 の 重 複 する 定 義 はすべて<br />
破 棄 さ れます。 無 効 にする と 、 重 複 し て 定 義 さ れた weak シンボルすべてにつ<br />
いてエラーメ ッセージが 生 成 されます。<br />
デフォルト<br />
デフォル ト は --no_muldefweak です。<br />
2.1.75 --output=file<br />
出 力 フ ァ イルの 名 前 を 指 定 し ます。 出 力 フ ァ イ ルには、 部 分 的 に リ ン ク さ れ<br />
たオブジ ェ ク ト と 実 行 可 能 イ メ ージのいずれかを 指 定 で き ます。<br />
構 文<br />
--output=file<br />
--output=file を 指 定 しなければ、 次 のデフォル ト フ ァ イル 名 が 使 用 されます。<br />
__image.axf<br />
__object.o<br />
出 力 が 実 行 可 能 イ メ ージの 場 合<br />
出 力 が 部 分 的 に リ ン ク さ れたオブジ ェ ク ト の 場 合<br />
file にパス 情 報 が 指 定 さ れていない 場 合 、 現 在 の 作 業 デ ィ レ ク ト リ にフ ァ イ<br />
ルが 作 成 さ れます。 パス 情 報 が 指 定 さ れてい る 場 合 は、 そのデ ィ レ ク ト リ が<br />
デフ ォル ト の 出 力 デ ィ レ ク ト リ にな り ます。<br />
関 連 項 目<br />
• 「--callgraph_file=filename」 (ページ 2-9)<br />
• 「--partial」 (ページ 2-46)<br />
2.1.76 --override_visibility<br />
このオプショ ンは、 ステアリングファイルで EXPORT ディレクティブと IMPORT<br />
デ ィ レ ク テ ィ ブを 有 効 に し て、 シンボルの 可 視 性 をオーバーラ イ ド し ます。<br />
関 連 項 目<br />
• 「EXPORT」 (ページ 2-74)<br />
• 「IMPORT」 (ページ 2-77)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-45<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.77 --pad=num<br />
こ のオプシ ョ ン を 使 用 する と 、 パデ ィ ングバ イ ト の 値 を 設 定 で き ます。 リン<br />
カでは、 ロー ド 領 域 ま たは 実 行 領 域 に 挿 入 さ れるすべてのパデ ィ ングバイ ト<br />
にこの 値 を 割 り 当 てます。<br />
構 文<br />
--pad=num<br />
num には 16 進 形 式 の 整 数 を 指 定 でき ます。 例 えば、num に 0xFF を 設 定 する こ と<br />
で、ROM のプ ロ グ ラ ミ ング 時 間 を 短 縮 で き る 場 合 があ り ます。 num の 値 が 0xFF<br />
よ り も 大 き い 場 合 は、 パデ ィ ン グバ イ ト に (char)num が 設 定 されます。<br />
注<br />
パデ ィ ングの 挿 入 には、 以 下 の 制 限 があ り ます。<br />
• パデ ィ ングはロー ド 領 域 内 に 挿 入 さ れます。 ロード 領 域 と ロード 領 域 の<br />
間 には、 パディ ングは 挿 入 されません。<br />
• パデ ィ ングは 固 定 実 行 領 域 と 固 定 実 行 領 域 の 間 に 挿 入 さ れます ( 同 時 に<br />
境 界 調 整 の 設 定 も 行 います)。 ロー ド 領 域 の 先 頭 に 固 定 実 行 領 域 があ る<br />
場 合 を 除 き、 ロード 領 域 の 最 大 長 までパディ ングが 挿 入 される こ とはあ<br />
りません。<br />
• 境 界 調 整 の 制 約 に 確 実 に 準 拠 する ために、 セ ク シ ョ ン と セ ク シ ョ ンの 間<br />
にパデ ィ ングが 挿 入 されます。<br />
2.1.78 --partial<br />
こ のオプシ ョ ンは、 次 の リ ン ク 手 順 で 使 用 可 能 な 部 分 的 に リ ン ク さ れたオブ<br />
ジェク ト を 作 成 します。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「 部 分 リ ン ク 」 (ページ 2-4)<br />
2.1.79 --[no_]piveneer<br />
このオプションは、 PI コードから 絶 対 コードへの 呼 び 出 しのベニアの 生 成 を<br />
有 効 ま たは 無 効 に し ます。 --no_piveneer を 使 用 する と、 リ ンカによって PI<br />
コードから 絶 対 コードへの 呼 び 出 しが 検 出 される とエラーメ ッセージが 生 成<br />
されます。<br />
2-46 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
デフォルト<br />
デフォル ト は --piveneer です。<br />
関 連 項 目<br />
• 「--[no_]inlineveneer」 (ページ 2-33)<br />
• 「--[no_]veneershare」 (ページ 2-68)<br />
• 『リンカユーザガイド』 の 「ベニア」 (ページ 3-22)<br />
2.1.80 --pltgot=type<br />
このオプショ ンは、 BPABI のさまざまなアドレシングモードに 合 わせて、 使<br />
用 するプロシージャ リ ンクテーブル (PLT) およびグローバルオフセッ ト<br />
テーブル (GOT) のタイプを 指 定 します。<br />
構 文<br />
--pltgot=type<br />
type は、 以 下 のいずれかにな り ます。<br />
none<br />
direct<br />
indirect<br />
sbrel<br />
プラッ ト フォーム 固 有 のポス ト リンカによって、 インポート し<br />
たシンボルへの 参 照 が 処 理 を 行 う ダ イナ ミ ッ ク な 再 配 置 と し て<br />
追 加 さ れます。<br />
インポート したシンボルへの 参 照 が、 インポート したシンボル<br />
への 読 み 出 し 専 用 ポ イ ン タ に 解 決 さ れます。 これらは 直 接 ポイン<br />
タ 参 照 です。<br />
リンカはインポートしたシンボルの GOT を 作 成 します。 PLT エ<br />
ント リが 作 成 されることもあります。 indirect は PLT または GOT<br />
エン ト リ を 参 照 します。<br />
1 つの 例 外 を 除 いて indirect と 同 じ 参 照 です。 GOT エン ト リは、<br />
実 行 時 に R9 に 保 持 されるセグ メ ン ト のス タ テ ィ ッ クベースア ド<br />
レスのオフセッ ト として 保 存 されます。<br />
デフォルト<br />
オプシ ョ ン --bpabi または --dll を 使 用 している 場 合 、 デフォル ト は<br />
--pltgot=direct です。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-47<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.81 --pltgot_opts=mode<br />
このオプションは、 PLT エン ト リの 生 成 時 に weak 型 の 参 照 を 有 効 または 無 効<br />
にします。<br />
構 文<br />
--pltgot_opts=mode<br />
mode は 以 下 のいずれかにな り ます。<br />
weakrefs<br />
noweakrefs<br />
weak 型 の 参 照 によ り 、 PLT エン ト リが 生 成 されます。 これらの 参<br />
照 は、 後 の リ ン ク 段 階 で 解 決 さ れる 必 要 があ り ます。<br />
関 数 呼 び 出 し に 対 し ては NOP、 データに 対 しては 0 を 生 成 し ま<br />
す。 PLT エン ト リは 生 成 されません。 インポート したシンボルへ<br />
の weak 型 の 参 照 は 未 解 決 のま まです。<br />
デフォルト<br />
デフォル ト は --pltgot_opts=noweakrefs です。<br />
2.1.82 --predefine=”string”<br />
こ のオプシ ョ ン を 使 用 する と 、 ス キ ャ ッ タ フ ァ イルの 最 初 の 行 で 指 定 さ れて<br />
いるプリプロセッサにコマンドを 渡 すこ とができます。 同 義 語 --pd=”string”<br />
も 使 用 できます。<br />
構 文<br />
--predefine=” string”<br />
複 数 の --predefine オプシ ョ ンをコマン ド ラ インで 使 用 する こ とができ ます。<br />
このオプションは --scatter と 一 緒 に 使 用 します。<br />
例<br />
例 2-3 (ページ 2-49) は、 前 処 理 の 前 のスキ ャ ッ タ フ ァ イルを 示 し ています。<br />
2-48 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
例 2-3 前 処 理 前 のスキャ ッ タ フ ァ イル<br />
Scatter file:<br />
#! armcc -E<br />
lr1 BASE<br />
{<br />
er1 BASE<br />
{<br />
*(+RO)<br />
}<br />
er2 BASE2<br />
{<br />
*(+RW+ZI)<br />
}<br />
}<br />
コマンド ラインオプショ ンで armlink を 使 用 し ます。<br />
--predefine="-DBASE=0x8000" --predefine="-DBASE2=0x1000000" --scatter=file<br />
これはコマンド ラインオプショ ンの -DBASE=0x8000 -DBASE2=0x1000000 をコンパ<br />
イ ラ に 渡 し て ス キ ャ ッ タ フ ァ イルを 前 処 理 し ます。<br />
例 2-4 は、 前 処 理 後 のス キ ャ ッ タ フ ァ イルを 示 し ています。<br />
例 2-4 前 処 理 後 のスキャ ッ タ フ ァ イル<br />
lr1 0x8000<br />
{<br />
er1 0x8000<br />
{<br />
*(+RO)<br />
}<br />
er2 0x1000000<br />
{<br />
*(+RW+ZI)<br />
}<br />
}<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-49<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.83 --[no_]prelink_support<br />
このオプションは、 アプリケーションに 空 のプログラムヘッダテーブルエン<br />
ト リ を 余 分 に 追 加 する 機 能 、 およびアプ リ ケーシ ョ ン と 共 有 ラ イ ブ ラ リ の 両<br />
方 に DT_NULL ダイナ ミ ッ ク タグを 余 分 に 追 加 する 機 能 を 有 効 または 無 効 に<br />
します。 事 前 リ ン ク ツールは こ の 予 約 スペース を 使 用 し て、 ダ イ ナ ミ ッ ク<br />
ローダが 必 要 と する 追 加 情 報 を 書 き 込 みます。<br />
デフォルト<br />
--sysv を 指 定 する 場 合 、 デフ ォル ト は --prelink_support です。<br />
このスペースを 予 約 しないよ うにするには、--no_prelink_support を 使 用 し ま<br />
す。<br />
関 連 項 目<br />
• 「--sysv」 (ページ 2-66)<br />
2.1.84 --privacy<br />
このオプシ ョ ンは、 マッ ピングおよびビルド 属 性 シンボルを 除 くすべての<br />
ローカルシンボルとセクシ ョ ン 名 をデフォル ト 値 に 変 更 し ます。 サード パー<br />
テ ィ に 配 信 さ れる イ メ ージ と オブジ ェ ク ト の 知 的 所 有 権 を 隠 すには、 こ のオ<br />
プシ ョ ンを 使 用 します。<br />
例 えば、 コード セク シ ョ ン 名 は .text に 変 わ り ます。<br />
関 連 項 目<br />
• 『ユーテ ィ リ テ ィ ガイ ド』 の 「--privacy」 (ページ 2-40)<br />
• 『ユーテ ィ リ テ ィ ガイ ド』 の 「--strip=option[,option,...]」<br />
(ページ 2-48)<br />
2.1.85 --profile=filename<br />
このオプションは、 プロファイラによるフィードバックをコンパイラに 渡 し<br />
ます。<br />
使 用 法<br />
リンク 時 コード 生 成 (--ltcg) を 使 用 すると、 プロファイラファイル filename<br />
をコンパイラに 渡 して、 プロファイルによるフィードバックを 使 用 できるよ<br />
うにします。<br />
2-50 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「--ltcg」 (ページ 2-42)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--ltcg」 (ページ 2-97)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--profile=filename」 (ペー<br />
ジ 2-119)<br />
2.1.86 --[no_]project=filename<br />
このオプショ ンは、 指 定 したプロジェク トテンプレート ファイルのロードを<br />
リンカに 指 示 します。<br />
構 文<br />
--no_project<br />
--project=filename<br />
filename は プロジェク トテンプレート ファイルの 名 前 です。<br />
注<br />
filename をデフ ォル ト のプ ロ ジ ェ ク ト フ ァ イル と し て 使 用 する には、<br />
RVDS_PROJECT 環 境 変 数 を filename に 設 定 し ます。<br />
--no_project を 指 定 する と 、 環 境 変 数 RVDS_PROJECT で 指 定 されたデフ ォル ト の<br />
プロジェク トテンプレート ファイルは 使 用 されません。<br />
デフォルト<br />
デフォル ト は --no_project です。<br />
制 約 条 件<br />
プロジェク トテンプレート ファイルのオプショ ンは、 コマンド ラインで 設 定<br />
済 みのオプシ ョ ン と 競 合 し ない 場 合 にのみ 設 定 で き ます。 プロジェク トテン<br />
プレー ト フ ァ イルのオプシ ョ ンが 既 存 のコマン ド ラ インオプシ ョ ン と 競 合 す<br />
る 場 合 は、 コ マン ド ラ イ ンオプシ ョ ンが 優 先 さ れます。<br />
例<br />
以 下 のプ ロ ジ ェ ク ト テンプレー ト フ ァ イルについて 考 えてみます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-51<br />
Non-Confidential
リンカコマンドラインオプション<br />
<br />
<br />
<br />
<br />
--cpu=<strong>ARM</strong>926EJ-S<br />
--fpu=vfpv2<br />
<br />
<br />
<br />
the RVDS_PROJECT 環 境 変 数 が こ のフ ァ イルを 示 すよ う に 設 定 さ れてい る 場 合 、<br />
コマンド<br />
armlink foo.o<br />
の 実 際 のコマン ド ラ イ ンは、 以 下 のよ う にな り ます。<br />
armlink --cpu=<strong>ARM</strong>926EJ-S --fpu=VFPv2 foo.o<br />
関 連 項 目<br />
• 「--reinitialize_workdir」 (ページ 2-53)<br />
• 「--workdir=directory」 (ページ 2-71)<br />
2.1.87 --[no_]reduce_paths<br />
こ のオプシ ョ ン を 使 用 する と 、 フ ァ イルパスの 冗 長 なパス 名 情 報 の 除 外 を 有<br />
効 にする かま たは 無 効 にで き ます。<br />
モード<br />
Windows システムでのみ 有 効 です。<br />
デフォルト<br />
デフォル ト は --no_reduce_paths です。<br />
使 用 法<br />
Windows システムには、ファイルパスが 260 文 字 まで と い う 制 限 があ り ます。<br />
絶 対 名 が 260 文 字 を 超 えるパス 名 が 存 在 する 場 合 、 --reduce_paths オプシ ョ ン<br />
を 使 用 して、 ディ レ ク ト リ を .. の 対 応 する イ ン ス タ ン ス と マ ッ チア ッ プ し、<br />
directory/.. シーケ ン ス をペアで 削 除 する こ と に よ り 、 絶 対 パス 名 の 長 さ を 短<br />
縮 でき ます。<br />
2-52 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
注<br />
--reduce_paths オプシ ョ ン を 使 用 し てパスの 長 さ を 短 縮 するのではな く 、 長 い<br />
フ ァ イルパスや 深 いネ ス ト 構 造 のフ ァ イルパス を 使 用 し ない よ う にする こ と<br />
をお 勧 めし ます。<br />
例<br />
ファイルのリンク :<br />
..\..\..\xyzzy\xyzzy\objects\file.c<br />
次 のデ ィ レ ク ト リ :<br />
\foo\bar\baz\gazonk\quux\bop<br />
からコンパイルしたときの 実 際 のパスは、 以 下 のよ うになります。<br />
\foo\bar\baz\gazonk\quux\bop\..\..\..\xyzzy\xyzzy\objects\file.o<br />
オプシ ョ ン --reduce_paths を 使 用 して 同 じディ レ ク ト リ から 同 じフ ァ イルを リ<br />
ン ク する と 、 実 際 のパスは 以 下 の よ う にな り ます。<br />
\foo\bar\baz\xyzzy\xyzzy\objects\file.c<br />
2.1.88 --[no_]ref_cpp_init<br />
このオプショ ンは、 RVCT ライブラリの C++ 静 的 オブジ ェ ク ト 初 期 化 ルーチ<br />
ンへの 参 照 の 追 加 を 有 効 または 無 効 にし ます。 追 加 さ れるデフ ォル ト の 参 照<br />
は __cpp_initialize__aeabi_ です。 これを 変 更 するには、--cppinit を 使 用 し ま<br />
す。<br />
デフォルト<br />
デフォル ト は --ref_cpp_init です。<br />
関 連 項 目<br />
• 「--[no_]cppinit」 (ページ 2-13)<br />
2.1.89 --reinitialize_workdir<br />
このオプションを 使 用 すると、--workdir を 使 用 してプロジェ ク ト テンプレー<br />
ト の 作 業 デ ィ レ ク ト リ を 再 初 期 化 する かど う かを 指 定 で き ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-53<br />
Non-Confidential
リンカコマンドラインオプション<br />
--workdir を 使 用 して 設 定 されたディ レ ク ト リ が、 変 更 されたプロジェ ク ト テ<br />
ンプレー ト フ ァ イ ルが 含 まれてい る 既 存 の 作 業 デ ィ レ ク ト リ を 参 照 し てい る<br />
場 合 、 こ のオプシ ョ ン を 指 定 する と 、 作 業 デ ィ レ ク ト リ は 削 除 さ れ、 元 のプ<br />
ロ ジ ェ ク ト テンプレー ト フ ァ イルの 新 し い コ ピーで 再 作 成 さ れます。<br />
制 約 条 件<br />
このオプションは、--workdir オプシ ョ ン と 組 み 合 わせて 使 用 する 必 要 があ り<br />
ます。<br />
関 連 項 目<br />
• 「--[no_]project=filename」 (ページ 2-51)<br />
• 「--workdir=directory」 (ページ 2-71)<br />
2.1.90 --reloc<br />
こ のオプシ ョ ンは、 連 続 する 実 行 領 域 を 使 用 し て 再 配 置 可 能 な ロー ド 領 域 を<br />
1 つ 作 成 し ます。<br />
注<br />
こ のオプシ ョ ンは、 こ の タ イ プの 再 配 置 可 能 な ELF イ メージがあるレガシー<br />
シ ス テムにのみ 使 用 し て 下 さ い。 生 成 さ れた イ メ ージは、 <strong>ARM</strong> アーキテク<br />
チャ 仕 様 の ELF と 若 干 異 な る 可 能 性 があ り ます。<br />
新 しいシステムの 場 合 は、 BPABI に 準 拠 する イ メ ージの 使 用 を 検 討 し て 下 さ<br />
い。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「タイプ 1 : 1 つのロード 領 域 と 連 続 する 実 行<br />
領 域 」 (ページ 5-32)<br />
2.1.91 --[no_]remove<br />
こ のオプシ ョ ンは、 イ メ ージか ら の 未 使 用 入 力 セ ク シ ョ ンの 削 除 を 有 効 ま た<br />
は 無 効 にし ます。 入 力 セ ク シ ョ ンに イ メ ージのエン ト リ ポ イ ン ト が 含 まれる<br />
場 合 、 ま たは 入 力 セ ク シ ョ ンが 使 用 さ れてい る セ ク シ ョ ンか ら 参 照 さ れてい<br />
る 場 合 、 その 入 力 セ ク シ ョ ンは 使 用 さ れてい る と 見 な さ れます。<br />
2-54 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
デフォルト<br />
デフォル ト は --remove です。<br />
使 用 法<br />
デバ ッ グ 時 に --no_remove オプシ ョ ン を 使 用 する と 、 未 使 用 の 入 力 セ ク シ ョ ン<br />
があ って も、 すべての 入 力 セ ク シ ョ ンが 最 終 イ メ ージに 含 まれます。<br />
--keep オプシ ョ ン を 使 用 する と 、 特 定 のセ ク シ ョ ン を 通 常 のビル ド に 保 持 し<br />
ます。<br />
関 連 項 目<br />
• 「--keep=section_id」 (ページ 2-34)<br />
• 『リンカユーザガイド』 の 「セ ク シ ョ ンの 削 除 」 (ページ 3-12)<br />
2.1.92 --ro_base=address<br />
このオプショ ンは、 指 定 したアドレスに RO 出 力 セ ク シ ョ ン を 含 む 領 域 の<br />
ロード ア ド レス と 実 行 ア ド レスの 両 方 を 設 定 し ます。<br />
構 文<br />
--ro_base=address<br />
address はワー ド 境 界 で 整 列 させる 必 要 があ り ます。<br />
デフォルト<br />
こ のオプシ ョ ン を 指 定 せず、 ス キ ャ ッ タ ロー ド フ ァ イル も 指 定 し なければ、<br />
デフォル ト は --ro_base=0x8000 にな り ます。<br />
関 連 項 目<br />
• 「--ropi」 (ページ 2-56)<br />
• 「--rosplit」 (ページ 2-56)<br />
• 「--rw_base=address」 (ページ 2-57)<br />
• 「--rwpi」 (ページ 2-57)<br />
• 「--scatter=file」 (ページ 2-58)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-55<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.93 --ropi<br />
このオプションは、 RO 出 力 セ ク シ ョ ン を 含 むロー ド 領 域 と 実 行 領 域 が 位 置 に<br />
依 存 し な く な り ます。 こ のオプシ ョ ン を 使 用 し ない 場 合 、 領 域 は 絶 対 と し て<br />
マーク されます。 通 常 、 読 み 出 し 専 用 の 入 力 セ ク シ ョ ンは、 読 み 出 し 専 用 の<br />
位 置 非 依 存 (ROPI) でなければなり ません。 こ のオプシ ョ ン を 使 用 する と 、<br />
リンカは 以 下 の 処 理 を 行 います。<br />
• セ ク シ ョ ン 間 の 再 配 置 が 有 効 であ る こ と をチェ ッ ク し ます。<br />
• リンカ 自 体 が 生 成 したコード (インターワークベニアなど) が ROPI で<br />
あるよ うにします。<br />
注<br />
--ropi が --rwpi または --rw_base な し で 使 用 さ れる と 、 リ ンカで 降 格 可 能 エ<br />
ラーが 生 成 されます。<br />
関 連 項 目<br />
• 「--ro_base=address」 (ページ 2-55)<br />
• 「--rosplit」<br />
• 「--rw_base=address」 (ページ 2-57)<br />
• 「--rwpi」 (ページ 2-57)<br />
2.1.94 --rosplit<br />
このオプションは、 デフォルトの RO ロード 領 域 を、RO-CODE に 1 つ、 RO-DATA<br />
に 1 つ、 合 計 2 つの RO 出 力 セ ク シ ョ ンに 分 割 し ます。<br />
関 連 項 目<br />
• 「--ro_base=address」 (ページ 2-55)<br />
• 「--ropi」<br />
• 「--rw_base=address」 (ページ 2-57)<br />
• 「--rwpi」 (ページ 2-57)<br />
2.1.95 --runpath=pathlist<br />
こ のオプシ ョ ンは、 検 索 パスに 追 加 さ れるパスの リ ス ト を 指 定 し ます。 Linux<br />
ダイナミ ック リンカは、 必 要 な 共 有 オブジェク トを 見 つけるためにこれらの<br />
パスを 使 用 します。<br />
2-56 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
構 文<br />
--runpath=pathlist<br />
pathlist は コ ンマで 区 切 ら れたパスの リ ス ト です。 複 数 のパス 名 を 指 定 する と<br />
きは、 コンマとパス 名 の 間 にスペースを 挿 入 しないで 下 さい ( 例 :<br />
path1,path2,path3,...,pathn)。<br />
2.1.96 --rw_base=address<br />
このオプショ ンは、 指 定 したアドレスに RW 出 力 セ ク シ ョ ン を 含 む 領 域 の 実<br />
行 ア ド レ ス を 設 定 し ます。<br />
構 文<br />
--rw_base=address<br />
address は、 ワード 境 界 で 整 列 させる 必 要 があ り ます。<br />
関 連 項 目<br />
• 「--ro_base=address」 (ページ 2-55)<br />
• 「--ropi」 (ページ 2-56)<br />
• 「--rosplit」 (ページ 2-56)<br />
• 「--rwpi」<br />
• 「--split」 (ページ 2-62)<br />
2.1.97 --rwpi<br />
このオプションを 使 用 すると、 RW 出 力 セ ク シ ョ ン と ZI 出 力 セ ク シ ョ ン を 含<br />
むロー ド 領 域 と 実 行 領 域 が 位 置 に 依 存 し な く な り ます。 このオプションを 使<br />
用 し ない 場 合 、 領 域 は 絶 対 と し てマー ク さ れます。 このオプショ ンに<br />
は、--rw-base の 値 が 必 要 です。 --rw-base を 指 定 しないと、--rw-base=0 を 指 定 し<br />
たと 見 なされます。 通 常 、 書 き 込 み 可 能 な 入 力 セ ク シ ョ ンは、 読 み 出 し - 書 き<br />
込 み 可 能 な 位 置 非 依 存 (RWPI) にする 必 要 があ り ます。<br />
こ のオプシ ョ ン を 選 択 する と 、 リ ン カは 以 下 の 処 理 を 行 います。<br />
• すべての 読 み 出 し - 書 き 込 み 可 能 な 実 行 領 域 への 入 力 セ ク シ ョ ンに、 PI<br />
属 性 が 設 定 さ れてい る こ と をチェ ッ ク し ます。<br />
• セ ク シ ョ ン 間 の 再 配 置 が 有 効 であ る こ と をチェ ッ ク し ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-57<br />
Non-Confidential
リンカコマンドラインオプション<br />
• テーブル Region$$Table にスタティ ッ クベース 相 対 エン ト リ を 生 成 しま<br />
す。<br />
こ のテーブルは、 領 域 がコ ピー、 伸 張 、 または 初 期 化 される と きに 使 用<br />
します。<br />
関 連 項 目<br />
• 「--ro_base=address」 (ページ 2-55)<br />
• 「--ropi」 (ページ 2-56)<br />
• 「--rosplit」 (ページ 2-56)<br />
• 「--rw_base=address」 (ページ 2-57)<br />
2.1.98 --[no_]scanlib<br />
このオプシ ョ ンは、 参 照 を 解 決 するためのデフォル ト ラ イブラ リ のスキャン<br />
を 有 効 ま たは 無 効 に し ます。 独 自 の ラ イ ブ ラ リ を リ ン ク する 場 合<br />
は、--no_scanlib を 使 用 し ます。<br />
デフォルト<br />
デフォル ト は --scanlib です。<br />
2.1.99 --scatter=file<br />
こ のオプシ ョ ン を 使 用 する と 、 指 定 のフ ァ イルに 含 まれる ス キ ャ ッ タ ロー ド<br />
記 述 子 を 使 用 し て、 イ メ ージの メ モ リ マ ッ プが 作 成 さ れます。 記 述 子 には、<br />
イ メ ージ 内 のさ まざまな 領 域 およびセ ク シ ョ ンのグループ 化 と 配 置 に 関 する<br />
詳 細 が 記 述 さ れています。<br />
構 文<br />
--scatter=file<br />
file はスキャ ッ タファ イルの 名 前 です。<br />
使 用 法<br />
--scatter オプシ ョ ンは<br />
--bpabi、--dll、--partial、--ro-base、--rw-base、--ropi、--rwpi<br />
--rosplit、--split、--reloc、--shared、--startup、 および --sysv と 一 緒 に 使 用 できま<br />
せん。<br />
2-58 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 第 5 章 スキャッタロード 記 述 ファイルの 使 用<br />
2.1.100 --[no_]search_dynamic_libraries<br />
このオプショ ンは、--library オプシ ョ ンで 指 定 したダイナ ミ ッ ク ラ イブラ リ の<br />
検 索 を 有 効 ま たは 無 効 に し ます。<br />
使 用 法<br />
--search_dynamic_libraries 設 定 は、 コ マン ド ラ イ ンに<br />
--no_search_dynamic_libraries オプシ ョ ンが 出 現 する まで、 後 続 のすべての<br />
--library オプシ ョ ンに 適 用 さ れます。 リンカは、すべての 参 照 が 解 決 される<br />
か、 指 定 したライブラリで 参 照 を 解 決 できなくなるまで、 コマンドラインの<br />
順 序 で ラ イ ブ ラ リ を 繰 り 返 し 検 索 し ます。<br />
デフォルト<br />
デフォル ト は --search_dynamic_libraries です。<br />
関 連 項 目<br />
• 「--arm_linux」 (ページ 2-3)<br />
• 「--library=name」 (ページ 2-38)<br />
2.1.101 --section_index_display=type<br />
こ のオプシ ョ ンは、 メ モ リ マ ッ プを 出 力 する と き に、 イ ンデ ク ス 列 の 表 示 を<br />
変 更 し ます。 このオプションは --map と 一 緒 に 使 用 します。<br />
構 文<br />
--section_index_display=type<br />
type は 以 下 のいずれかにな り ます。<br />
internal<br />
input<br />
イ ンデ ク ス 値 は、 リ ンカがセ ク シ ョ ン を 作 成 する 順 序 を 表 し ま<br />
す。<br />
イ ンデク ス 値 は、 元 の 入 力 フ ァ イル 内 のセ ク シ ョ ンのセ ク シ ョ<br />
ンインデクスを 表 します。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-59<br />
Non-Confidential
リンカコマンドラインオプション<br />
使 用 法<br />
入 力 オブジ ェ ク ト の 正 確 なセ ク シ ョ ン を 見 つけ る には、 --map を<br />
--section_index_display=input と 一 緒 に 使 用 します。<br />
デフォルト<br />
デフォル ト は --section_index_display=internal です。<br />
関 連 項 目<br />
• 「--[no_]map」 (ページ 2-43)<br />
2.1.102 --shared<br />
このオプションは SysV 共 有 オブジ ェ ク ト を 作 成 し ます。<br />
関 連 項 目<br />
• 「--bpabi」 (ページ 2-6)<br />
• 「--dll」 (ページ 2-19)<br />
• 「--runpath=pathlist」 (ページ 2-56)<br />
• 「--soname=name」 (ページ 2-61)<br />
• 「--sysv」 (ページ 2-66)<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.103 --show_cmdline<br />
こ のオプシ ョ ンは、 コ マン ド ラ イ ンオプシ ョ ンの 処 理 方 法 を 示 し ます。<br />
コ マン ド は 適 切 な 形 式 で 表 示 さ れます。 ま た、 via ファイルの 内 容 は 展 開 され<br />
ます。<br />
関 連 項 目<br />
• 「--help」 (ページ 2-29)<br />
• 「--vsn」 (ページ 2-70)<br />
2-60 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.104 --soname=name<br />
このオプシ ョ ンは 共 有 オブジェ ク ト のラ ンタ イ ム 名 を 指 定 し ます。 ラ ンタ イ<br />
ム 名 は、 この 共 有 オブジェク トに 対 してリンクされるすべてのオブジェク ト<br />
で 依 存 関 係 名 と し て 使 用 さ れます。 こ の 依 存 関 係 は 結 果 のフ ァ イルに 保 存 さ<br />
れます。<br />
関 連 項 目<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.105 --sort=algorithm<br />
こ のオプシ ョ ンは、 実 行 領 域 でセ ク シ ョ ンの 順 序 を 決 定 する ソー ト アルゴ リ<br />
ズム を 指 定 し て、 相 互 に 呼 び 出 すセ ク シ ョ ン 間 の 距 離 を 最 小 限 に し ます。<br />
ソー ト アルゴ リ ズムは 標 準 的 な 規 則 に 従 って、 入 力 セ ク シ ョ ン を 属 性 の 昇 順<br />
に 配 置 し ます。<br />
ソート アルゴ リズムは、SORTTYPE キーワー ド を 使 用 し て 個 々の 実 行 領 域 のス<br />
キャッタファイルでも 指 定 できます。<br />
構 文<br />
--sort=algorithm<br />
algorithm は 以 下 のいずれかにな り ます。<br />
List<br />
Lexical<br />
使 用 可 能 な ソー ト アルゴ リ ズム を リ ス ト 表 示 し ます。 リンカはリ<br />
ス ト を 表 示 した 後 で 終 了 します。<br />
セクション 名 に 従 ってソート し、 名 前 が 同 じ 場 合 は 入 力 順 に 並<br />
べます。<br />
AvgCallDepth Thumb コードすべてを <strong>ARM</strong> コード よ り 先 にソート してから、 各<br />
セ ク シ ョ ンの 近 似 平 均 コール 深 度 に 従 って 昇 順 に ソー ト し ます。<br />
長 分 岐 ベニアの 数 を 最 小 限 にする には、 こ のアルゴ リ ズム を 使<br />
用 します。<br />
注<br />
平 均 コール 深 度 の 近 似 値 は 入 力 セ ク シ ョ ンの 順 序 に よ って 異 な<br />
ります。 したがって、 このソートアルゴリズムは、 例 えば<br />
RunningDepth を 使 用 する よ り も、 入 力 セ ク シ ョ ンの 順 序 に 大 き く<br />
依 存 し ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-61<br />
Non-Confidential
リンカコマンドラインオプション<br />
CallTree<br />
リンカは、CallTree ソー ト が 有 効 になってい るすべての 実 行 領 域<br />
のコールツ リーを、 読 み 取 り 専 用 のコードセクショ ンを 含 むリ<br />
ス ト に 平 板 化 し ます。<br />
こ の リ ス ト のセ ク シ ョ ンがその 実 行 領 域 に コ ピーされた 後 、 読<br />
み 取 り 専 用 以 外 のすべての コー ド セ ク シ ョ ンが 語 句 順 に ソ ー ト<br />
されます。 こ の よ う にする と 、 相 互 を 呼 び 出 すセ ク シ ョ ンが 近 く<br />
に 配 置 されます。<br />
注<br />
このソートアルゴリズムは、RunningDepth または AvgCallDepth を 使<br />
用 する 場 合 ほど、 入 力 セ ク シ ョ ンの 順 序 に 依 存 し ません。<br />
RunningDepth Thumb コードすべてを <strong>ARM</strong> コード よ り 先 にソート してから、 セ<br />
ク シ ョ ンの 実 行 深 度 に 従 って 昇 順 にソー ト し ます。 セクション S<br />
の 実 行 深 度 は、 S を 呼 び 出 すすべてのセ ク シ ョ ンの 平 均 コール 深<br />
度 で、 S を 呼 び 出 す 回 数 で 重 みが 付 け ら れます。<br />
長 分 岐 ベニアの 数 を 最 小 限 にする には、 こ のアルゴ リ ズム を 使<br />
用 します。<br />
デフォルト<br />
デフォル ト のアルゴ リ ズムは --sort=Lexical です。 ただし、 1 つ 以 上 の 実 行 領<br />
域 が 最 大 分 岐 サ イ ズを 超 え る 場 合 、 デフ ォル ト のアルゴ リ ズムは<br />
--sort=AvgCallDepth です。<br />
関 連 項 目<br />
• 「 実 行 領 域 の 記 述 」 (ページ 3-7)<br />
• 『リンカユーザガイド』 の 「セ ク シ ョ ンの 配 置 」 (ページ 3-9)<br />
2.1.106 --split<br />
このオプションを 使 用 すると、RO 出 力 セ ク シ ョ ンおよび RW 出 力 セ ク シ ョ ン<br />
を 含 むデフ ォル ト の ロー ド 領 域 が、 以 下 の ロー ド 領 域 に 分 割 さ れます。<br />
• RO 出 力 セ ク シ ョ ン を 含 む 領 域 。 デフォル ト のロードアド レスは 0x8000<br />
ですが、--ro_base オプシ ョ ン を 使 用 する と 別 のア ド レ ス を 指 定 で き ます。<br />
2-62 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
• RW 出 力 セ ク シ ョ ン と ZI 出 力 セ ク シ ョ ン を 含 む 領 域 。 ロードアド レスは<br />
--rw_base オプシ ョ ンで 指 定 し ます。 このオプショ ンには、--rw_base の 値<br />
が 必 要 です。 --rw_base を 指 定 しないと、--rw_base=0 を 指 定 したと 見 なさ<br />
れます。<br />
この 2 つの 領 域 はルー ト 領 域 です。<br />
関 連 項 目<br />
• 「--ro_base=address」 (ページ 2-55)<br />
• 「--rw_base=address」 (ページ 2-57)<br />
• 『リンカユーザガイド』 の 「イ メ ージ 構 造 の 指 定 」 (ページ 3-2)<br />
2.1.107 --[no_]startup=symbol<br />
こ のオプシ ョ ン を 使 用 する と 、 必 要 に 応 じ て 起 動 シンボルが 異 な る 別 の C ラ<br />
イブラ リ を リ ンカが 使 用 できます。<br />
構 文<br />
--startup=symbol<br />
デフォル ト では、 symbol は __main に 設 定 されます。<br />
--no_startup は symbol 引 数 を 使 用 し ません。<br />
デフォルト<br />
デフォル ト は --startup=__main です。<br />
使 用 法<br />
C ライブラリスタートアップコードによって 定 義 されるシンボルへの 参 照 が<br />
あ る 場 合 は、 リ ン カには C ライブラリスタートアップコードが 含 まれます。<br />
このシンボル 参 照 を 起 動 シンボルと 呼 びます。 これは、main() の 定 義 が 検 出 さ<br />
れた 場 合 に リ ン カに よ っ て 自 動 的 に 作 成 さ れます。 --startup オプシ ョ ンを 使<br />
用 する と 、 こ のシンボル 参 照 を 変 更 で き ます。<br />
• リンカで main() の 定 義 が 検 出 され、 symbol への 参 照 (ま たは 定 義 ) が 検<br />
出 さ れない 場 合 、 エ ラーが 生 成 さ れます。<br />
• リンカで main() の 定 義 と symbol への 参 照 (ま たは 定 義 ) が 検 出 さ れ、 エ<br />
ン ト リ ポ イ ン ト が 指 定 さ れない 場 合 、 リ ンカは 警 告 を 生 成 し ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-63<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「--entry=location」 (ページ 2-20)<br />
2.1.108 --strict<br />
こ のオプシ ョ ンは、 失 敗 する 可 能 性 があ る 状 態 を、 警 告 ではな く エ ラー と し<br />
てレポートするよ うにリ ンカに 指 示 します。 このよ うな 状 態 の 例 としては、<br />
インターワーク 用 にコンパイルされていない 関 数 から インターワーク 関 数 の<br />
アドレスを 受 け 取 る 場 合 などがあります。<br />
2.1.109 --[no_]strict_relocations<br />
このオプションを 使 用 すると、 レガシーまたはサードパーティのオブジェク<br />
トをアプ リ ケーシ ョ ンバイナ リ インタフェース (ABI) に 準 拠 させるこ とが<br />
できます。<br />
使 用 法<br />
廃 止 ま たは 廃 止 予 定 の 再 配 置 の 例 を レポー ト する よ う に リ ンカに 指 示 するに<br />
は、--strict_relocations を 使 用 し ます。<br />
多 く の 場 合 、 再 配 置 のエ ラー と 警 告 は、 前 のバージ ョ ンの <strong>ARM</strong> ツールでビ<br />
ル ド さ れたオブジ ェ ク ト フ ァ イルを リ ン ク し てい る 場 合 に 発 生 し ます。<br />
デフォルト<br />
デフォル ト は --no_strict_relocations です。<br />
2.1.110 --[no_]symbols<br />
このオプションは、 リンク 手 順 で 使 用 される 各 ローカルシンボルとグローバ<br />
ルシンボル、 およびその 値 の リ ス ト 表 示 を 有 効 または 無 効 にし ます。<br />
注<br />
これにはマッピングシンボルは 含 まれません。 出 力 結 果 にマ ッ ピ ングシンボ<br />
ルを 含 めるには、--list_mapping_symbols を 使 用 して 下 さい。<br />
デフォルト<br />
デフォル ト は --no_symbols です。<br />
2-64 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「--[no_]list_mapping_symbols」 (ページ 2-41)<br />
2.1.111 --symdefs=file<br />
このオプシ ョ ンは、 出 力 イ メージからグローバルシンボル 定 義 を 含 むフ ァ イ<br />
ルを 作 成 します。<br />
デフォルト<br />
デフォル ト では、 すべてのグローバルシンボルが symdefs ファイルに 書 き 込<br />
まれます。 file という symdefs ファイルが 既 に 存 在 する 場 合 、 リンカはこの<br />
フ ァ イルに 記 述 されている シンボルの 出 力 を 制 限 し ます。<br />
注<br />
この 処 理 が 必 要 ない 場 合 は、 リ ン ク 手 順 の 前 にすべての 既 存 の symdefs ファ<br />
イルを 削 除 して 下 さい。<br />
使 用 法<br />
file にパス 情 報 が 指 定 さ れていない 場 合 、 リ ン カは 出 力 イ メ ージが 書 き 込 ま<br />
れるディ レク ト リ 内 でファ イルを 検 索 します。 ファイルが 検 出 されない 場 合<br />
は、 そのデ ィ レ ク ト リ 内 に 作 成 さ れます。<br />
シンボル 定 義 フ ァ イルは、 他 の イ メ ージを リ ン クする と きの 入 力 と し て 使 用<br />
できます。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「 別 の イ メ ージに 含 まれてい る シンボルへの<br />
アクセス」 (ページ 4-10)<br />
2.1.112 --symver_script=file<br />
このオプションは、 暗 黙 のシンボルバージョン 管 理 を 有 効 にします。file は<br />
シンボルのバージ ョ ンスク リプトです。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「シンボルのバージ ョ ン 管 理 」 (ページ 4-17)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-65<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.113 --symver_soname<br />
このオプションは、 静 的 バインドを 強 制 するために 暗 黙 のシンボルバージョ<br />
ン 管 理 を 有 効 にし ます。 シンボルにバージ ョ ンが 定 義 されていない 場 合 は、<br />
リンクしているファイルの SONAME が 使 用 されます。<br />
デフォルト<br />
BPABI 互 換 の 実 行 可 能 フ ァ イルを 生 成 し ていて も、 オプシ ョ ン<br />
--symver_script を 使 用 し てバージ ョ ン ス ク リ プ ト を 指 定 し ていない 場 合 は、<br />
ここでの 指 定 がデフォルトになります。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「シンボルのバージ ョ ン 管 理 」 (ページ 4-17)<br />
• <strong>ARM</strong> アーキテ ク チャ 用 ベースプ ラ ッ ト フ ォーム ABI (BPABI)。<br />
2.1.114 --sysv<br />
このオプションは、 <strong>ARM</strong> Linux で 使 用 でき る SysV 形 式 の ELF 実 行 可 能 フ ァ<br />
イルを 作 成 します。<br />
関 連 項 目<br />
• 「--bpabi」 (ページ 2-6)<br />
• 「--dll」 (ページ 2-19)<br />
• 「--[no_]prelink_support」 (ページ 2-50)<br />
• 「--runpath=pathlist」 (ページ 2-56)<br />
• 「--shared」 (ページ 2-60)<br />
• 第 4 章 BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
2.1.115 --[no_]tailreorder<br />
このオプションは、 可 能 であれば Tail の 呼 び 出 し セ ク シ ョ ン を ターゲ ッ ト の<br />
直 前 に 移 動 し、 セ ク シ ョ ンの 終 わ り にあ る 分 岐 命 令 を 最 適 化 し ます。 Tail の 呼<br />
び 出 し セ ク シ ョ ン と は、 セ ク シ ョ ンの 終 わ り に 分 岐 命 令 を 含 むセ ク シ ョ ンで<br />
す。 分 岐 には、 セ ク シ ョ ンの 先 頭 に 関 数 を ターゲ ッ ト と する 再 配 置 が 含 まれ<br />
ている 必 要 があ り ます。<br />
2-66 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
デフォルト<br />
デフォル ト は --no_tailreorder です。<br />
制 約 条 件<br />
リンカには 以 下 の 制 限 があります。<br />
• 移 動 で き る のは、 末 尾 呼 び 出 し ターゲ ッ ト 1 つにつき 1 つの 末 尾 呼 び 出<br />
しセクションのみです。 1 つのセ ク シ ョ ンに 対 し て 複 数 の Tail 呼 び 出 し<br />
があ る 場 合 、 同 じ セ ク シ ョ ン 名 の 付 いた Tail の 呼 び 出 しセ ク シ ョ ンが<br />
ターゲッ トの 前 に 移 動 されます。 末 尾 呼 び 出 し セ ク シ ョ ンで 名 前 が 一 致<br />
するセクシ ョ ン 名 が 見 つからない 場 合 、 リ ンカは、 最 初 に 検 出 し たセ ク<br />
ションを 移 動 します。<br />
• 末 尾 呼 び 出 し セ ク シ ョ ン をその 実 行 領 域 外 に 移 動 で き ません。<br />
• 末 尾 呼 び 出 し セ ク シ ョ ン を イ ン ラ イ ンベニアの 前 には 移 動 し ません。<br />
関 連 項 目<br />
• 「--[no_]branchnop」 (ページ 2-7)<br />
• 「--[no_]inline」 (ページ 2-32)<br />
• 『リンカユーザガイド』 の 「インライン」 (ページ 3-26)。<br />
2.1.116 --unresolved=symbol<br />
このオプションは、 未 定 義 のシンボルへの 参 照 を、 指 定 したシンボルのグ<br />
ローバル 定 義 と 照 合 します。<br />
構 文<br />
--unresolved=symbol<br />
symbol は 定 義 済 みかつグ ローバルでなければな り ません。 それ 以 外 のシンボ<br />
ルは 未 定 義 シンボル と し て 一 覧 さ れ リ ン ク 手 順 が 失 敗 し ます。<br />
使 用 法<br />
こ のオプシ ョ ン を 使 用 する と 、 見 つか ら ない 関 数 への 各 参 照 と ダ ミ ー 関 数 と<br />
のマッチングを 行 う こ とによって、 部 分 的 に 実 装 されたシステムをテス トで<br />
き る 為 、 ト ッ プダウ ン 方 式 の 開 発 に 特 に 役 立 ちます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-67<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.117 --userlibpath=pathlist<br />
このオプションは、 ユーザライブラ リの 検 索 に 使 用 されるパスのリ ス トを 指<br />
定 します。<br />
構 文<br />
--userlibpath=pathlist<br />
pathlist は、 必 要 な ラ イ ブ ラ リ の 検 索 に 使 用 さ れるパスのコ ンマ 区 切 り の リ ス<br />
トです。 複 数 のパス 名 を 指 定 する と きは、 コ ンマ と パス 名 の 間 にスペース を<br />
挿 入 し ないで 下 さ い ( 例 : path1,path2,path3,...,pathn)。<br />
関 連 項 目<br />
• 「--libpath=pathlist」 (ページ 2-39)<br />
• 『リンカユーザガイド』 の 「ラ イ ブ ラ リ の 検 索 、 選 択 、 ス キ ャ ン」<br />
(ページ 3-41)<br />
2.1.118 --[no_]veneershare<br />
このオプシ ョ ンは、 ベニア 共 有 を 有 効 または 無 効 にし ます。 ベニアの 共 有 に<br />
よ り 、 イ メ ージサイ ズを 大 幅 に 縮 小 でき る 場 合 があ り ます。<br />
デフォルト<br />
デフォル ト は --veneershare です。<br />
関 連 項 目<br />
• 「--[no_]inlineveneer」 (ページ 2-33)<br />
• 「--[no_]piveneer」 (ページ 2-46)<br />
• 『リンカユーザガイド』 の 「ベニア」 (ページ 3-22)<br />
2.1.119 --verbose<br />
こ のオプシ ョ ンは、 含 まれる オブジ ェ ク ト や 取 得 元 の ラ イ ブ ラ リ な ど、 リ ン<br />
ク 操 作 についての 詳 細 情 報 を 印 刷 し ます。 こ の 出 力 は、 未 定 義 のシンボル 参<br />
照 や 複 数 定 義 シンボルの ト レースに 特 に 便 利 です。 通 常 こ の 出 力 は 非 常 に 長<br />
いため、 このコマン ド を --list=file コマンド と 一 緒 に 使 用 して、 情 報 を file<br />
に 転 送 する こ と をお 勧 め し ます。<br />
2-68 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
診 断 を stdout に 出 力 する には、--verbose を 使 用 し ます。<br />
関 連 項 目<br />
• 「--[no_]muldefweak」 (ページ 2-44)<br />
• 「--unresolved=symbol」 (ページ 2-67)<br />
2.1.120 --vfemode=mode<br />
仮 想 関 数 の 削 除 (VFE) は、 リ ンカで 多 く の 未 使 用 セ ク シ ョ ン を 識 別 で き る<br />
ようにする 技 法 です。<br />
VFE 情 報 と ランタイム 型 情 報 (RTTI) オブジ ェ ク ト を 削 除 する 方 法 を 指 定 す<br />
るには、 このオプシ ョ ンを 使 用 します。<br />
構 文<br />
--vfemode=mode<br />
mode は 以 下 のいずれかにな り ます。<br />
on<br />
off<br />
コマンド ラインオプショ ン --vfemode=on を 使 用 する と 、 リ ン カは<br />
VFE に 対 応 し ます。<br />
こ のモー ド では、 リ ン カは、 オブジ ェ ク ト フ ァ イ ルの 内 容 に<br />
よって、force または off モード を 選 択 し ます。<br />
• すべてのオブジ ェ ク ト フ ァ イルが VFE 情 報 を 保 持 し てい る<br />
か、 または C++ ラ イ ブ ラ リ を 参 照 し ていない 場 合 、 リ ンカ<br />
は force モードが 選 択 されている と 見 なして、 削 除 を 続 行<br />
します。<br />
• VFE 情 報 がな く 、 C++ ライブラリを 参 照 しているオブジェ<br />
ク ト フ ァ イルがあ る 場 合 ( 例 えば、 以 前 リ リ ース さ れた<br />
<strong>ARM</strong> ツールを 使 用 してコードがコンパイルされている 場<br />
合 ) は、 off モード が 選 択 されている と 見 なすため、 VFE が<br />
自 動 的 に 無 効 にな り ます。 この 場 合 に off モード を 選 択 し て<br />
VFE を 無 効 にする と、 VFE 情 報 のないオブジ ェ ク ト が 使 用<br />
する 仮 想 関 数 を リ ン カが 削 除 し ない よ う に し ます。<br />
コマンド ラインオプショ ン --vfemode=off を 使 用 する と 、 armlink<br />
はコ ンパ イ ラ が 提 供 する 追 加 情 報 を 無 視 し ます。 このモードで<br />
は、 最 終 イ メ ージは VFE に 対 応 し ていないコ ンパイルおよび リ<br />
ン ク に よ って 生 成 さ れる イ メ ージ と 同 じ にな り ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-69<br />
Non-Confidential
リンカコマンドラインオプション<br />
force<br />
コマンド ラインオプショ ン --vfemode=force を 使 用 する と、 リ ンカ<br />
は VFE に 対 応 し、 VFE アルゴ リ ズムを 強 制 的 に 適 用 でき ます。<br />
オブジェ ク ト フ ァ イルの 一 部 に VFE 情 報 が 含 まれていない 場 合<br />
( 例 えば、 以 前 リ リ ース さ れた <strong>ARM</strong> ツールを 使 用 してコンパイ<br />
ル さ れてい る 場 合 )、 リ ン カは 削 除 を 続 行 し ますが、 エ ラーが 発<br />
生 する 可 能 性 のあ る こ と を 示 す 警 告 メ ッ セージを 生 成 し ます。<br />
force_no_rtti<br />
コマンド ラインオプショ ン --vfemode=force_no_rtti を 使 用 する と 、<br />
リンカは VFE に 対 応 し、 すべての RTTI オブジ ェ ク ト が 強 制 的 に<br />
削 除 さ れます。 こ のモー ド では、 すべての 仮 想 関 数 は 保 持 さ れま<br />
す。<br />
デフォルト<br />
デフォル ト は --vfemode=on です。<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 「セ ク シ ョ ンの 削 除 」 (ページ 3-12)<br />
2.1.121 --via=file<br />
このオプションは、file か ら 入 力 フ ァ イル 名 と リ ンカのオプシ ョ ンの 追 加 リ<br />
ス ト を 読 み 取 り ます。<br />
リ ン カの コ マン ド ラ イ ンに 複 数 の --via オプシ ョ ンを 入 力 でき ます。 また、via<br />
ファイル 内 に --via オプシ ョ ンを 含 める こ と もでき ます。<br />
関 連 項 目<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「via ファイルの 概 要 」 (ページ<br />
A-2)<br />
2.1.122 --vsn<br />
このオプションを 選 択 すると、バージョン 情 報 とライセンス 情 報 が 表 示 され<br />
ます。<br />
関 連 項 目<br />
• 「--help」 (ページ 2-29)<br />
2-70 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
• 「--show_cmdline」 (ページ 2-60)<br />
2.1.123 --workdir=directory<br />
こ のオプシ ョ ン を 使 用 する と 、 プ ロ ジ ェ ク ト テンプレー ト に 作 業 デ ィ レ ク ト<br />
リを 提 供 するかどうかを 指 定 できます。<br />
注<br />
プ ロ ジ ェ ク ト テンプレー ト に 作 業 デ ィ レ ク ト リ が 必 要 と な る のは、 作 業 デ ィ<br />
レクト リに <strong>RealView</strong> Debugger 設 定 フ ァ イルな どのフ ァ イルが 含 まれてい る 場<br />
合 のみです。<br />
構 文<br />
--workdir=directory<br />
directory は プロジェク トディレク ト リの 名 前 です。<br />
制 約 条 件<br />
--workdir を 使 用 し てプ ロ ジ ェ ク ト 作 業 デ ィ レ ク ト リ を 指 定 する 場 合 、<br />
--project を 使 用 し てプ ロ ジ ェ ク ト フ ァ イルを 指 定 する 必 要 があ り ます。<br />
関 連 項 目<br />
• 「--[no_]project=filename」 (ページ 2-51)<br />
• 「--reinitialize_workdir」 (ページ 2-53)<br />
2.1.124 --[no_]xref<br />
こ のオプシ ョ ンは、 入 力 セ ク シ ョ ン 間 のすべての 相 互 参 照 を 一 覧 表 示 し ます。<br />
デフォルト<br />
デフォル ト は --no_xref です。<br />
関 連 項 目<br />
• 「--xref{from|to}=object(section)」 (ページ 2-72)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-71<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.1.125 --[no_]xrefdbg<br />
こ のオプシ ョ ンは、 入 力 デバ ッ グセ ク シ ョ ン 間 のすべての 相 互 参 照 を 一 覧 表<br />
示 します。<br />
デフォルト<br />
デフォル ト は --no_xrefdbg です。<br />
2.1.126 --xref{from|to}=object(section)<br />
こ のオプシ ョ ンは 相 互 参 照 を 一 覧 表 示 し ます。<br />
• object の 入 力 section から 他 の 入 力 セクションへ<br />
• 他 の 入 力 セ ク シ ョ ンから object の 入 力 section へ<br />
これは --xref リンカオプションが 生 成 するリストのサブセットで、 特 定 の 入<br />
力 セ ク シ ョ ン と の 間 の 参 照 を 調 べる 場 合 に 便 利 です。 このオプショ ンを 複 数<br />
使 用 し て、 複 数 の 入 力 セ ク シ ョ ン と の 間 の 参 照 の 一 覧 を 表 示 でき ます。<br />
関 連 項 目<br />
• 「--[no_]xref」 (ページ 2-71)<br />
2-72 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.2 ステアリングファイルのコマンド<br />
このセクショ ンは、 コンパイラでサポート されているステアリングファイル<br />
コマンドをアルファベッ ト 順 に 表 示 します。<br />
ス テア リ ン グ フ ァ イ ルの コ マン ド では、 以 下 の こ と が 可 能 です。<br />
• シンボルテーブル 内 のシンボルを 管 理 する。<br />
• 静 的 シンボルテーブルから 動 的 シンボルテーブルへのシンボルのコピー<br />
を 制 御 する。<br />
• リ ン ク ユニ ッ ト が 依 存 する ラ イ ブ ラ リ に 関 する 情 報 を 保 存 する。<br />
注<br />
ステアリ ングファイルのコマンドは、グローバルシンボルのみを 制 御 します。<br />
ローカルシンボルはどのコマンドの 影 響 も 受 けません。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-73<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.2.1 EXPORT<br />
EXPORT コ マン ド は、 他 の 共 有 オブジ ェ ク ト ま たは 実 行 可 能 フ ァ イルか ら シン<br />
ボルにア クセスでき る こ と を 指 定 し ます。<br />
構 文<br />
EXPORT pattern [AS replacement_pattern] [,pattern [AS replacement_pattern]] *<br />
各 パ ラ メ ータには 以 下 の 意 味 があ り ます。<br />
pattern 0 個 以 上 の 定 義 済 みグ ローバルシンボル と 一 致 する ワ イル ド カー<br />
ド 文 字 (* または ?) をオプシ ョ ンで 含 めるこ とができる 文 字 列<br />
です。 pattern がどの 定 義 済 みグ ローバルシンボル と も 一 致 し ない<br />
場 合 、 その コ マン ド は 無 視 さ れます。 オペラ ン ド は、 定 義 済 みグ<br />
ローバルシンボルのみとマッチングを 行 う こ とができます。<br />
replacement_pattern<br />
ワイルドカード 文 字 (* または ?) をオプシ ョ ンで 含 めるこ とが<br />
で き る 文 字 列 です。 定 義 済 みグ ローバルシンボルの 名 前 は、 こ<br />
こ で 指 定 し た 名 前 に 変 更 さ れます。 ワイルドカード 文 字 は pattern<br />
内 のワ イ ル ド カー ド 文 字 と 対 応 し てい る 必 要 があ り ます。<br />
replacement_pattern 内 のワ イル ド カー ド 文 字 に 一 致 する 文 字 が、<br />
pattern のワイルドカード 文 字 に 置 き 換 わり ます。<br />
以 下 に 例 を 示 し ます。<br />
EXPORT my_func AS func1<br />
定 義 済 みシンボル my_func の 名 前 を func1 に 変 更 し、 エ ク スポー<br />
トします。<br />
使 用 法<br />
シンボルを 既 に 存 在 する 名 前 にエ ク スポー ト する こ と はでき ません。 EXPORT で<br />
は、 ワ イル ド カー ド 文 字 (* または ?) は 1 文 字 し か 使 用 で き ません。<br />
動 的 シンボルテーブルが 存 在 する 場 合 、 定 義 済 みシンボルは ( 指 定 さ れてい<br />
る 場 合 は replacement_pattern と し て、 指 定 さ れていない 場 合 は pattern として)<br />
動 的 シンボルテーブルに 含 め ら れます。<br />
2-74 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.2.2 HIDE<br />
HIDE コ マン ド は、 シンボルテーブル 内 の 定 義 済 みグ ローバルシンボルを 匿 名<br />
にします。<br />
構 文<br />
HIDE pattern [,pattern] *<br />
各 パラ メ ータには 以 下 の 意 味 があ り ます。<br />
pattern 0 個 以 上 の 定 義 済 みグ ローバルシンボルに 一 致 する ワ イル ド カー<br />
ド 文 字 をオプシ ョ ンで 含 め る こ と がで き る 文 字 列 です。 pattern が<br />
どの 定 義 済 みグ ローバルシンボル と も 一 致 し ない 場 合 、 その コ<br />
マンドは 無 視 されます。 未 定 義 シンボルを 非 表 示 にする こ と はで<br />
きません。<br />
使 用 法<br />
HIDE コマンド と SHOW コ マン ド を 使 用 し て、 出 力 イ メ ージ 内 ま たは 部 分 的 に リ<br />
ン ク されたオブジェ ク ト 内 の 特 定 のグ ローバルシンボルを 匿 名 にする こ と が<br />
できます。 例 2-5 に 示 すよ う に、 オブジ ェ ク ト フ ァ イル 内 またはラ イブラ リ 内<br />
でシンボルを 非 表 示 にする こ と は、 知 的 所 有 権 を 保 護 する 手 段 と し て も 有 効<br />
です。 この 例 では、os_ で 始 まるグローバルシンボル 以 外 のすべてのグローバ<br />
ルシンボルを 非 表 示 に し て、 部 分 的 に リ ン ク さ れる オブジ ェ ク ト を 作 成 し て<br />
います。<br />
例 2-5 HIDE コ マン ド の 使 用<br />
steer.txt<br />
HIDE *<br />
SHOW os_*<br />
; Hides all global symbols<br />
; Shows all symbols beginning with ’ os_’<br />
この 例 を 以 下 のコマンドでリンクします。<br />
armlink --partial input_object.o --edit steer.txt -o partial_object.o<br />
結 果 の 部 分 オブジ ェ ク ト は、 非 表 示 のシンボルへの 参 照 を 含 んでいない 他 の<br />
オブジェ ク ト と リ ン クでき ます。 出 力 オブジ ェ ク ト 内 でシンボルが 非 表 示 に<br />
なってい る 場 合 は、 その 後 の リ ン ク 手 順 で 非 表 示 のシンボルに 対 し て SHOW コ<br />
マンドを 使 用 しても 効 果 はあ り ません。 非 表 示 の 参 照 は、 出 力 シンボルテー<br />
ブルから 削 除 されます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-75<br />
Non-Confidential
リンカコマンドラインオプション<br />
関 連 項 目<br />
• 「SHOW」 (ページ 2-84)<br />
2-76 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.2.3 IMPORT<br />
IMPORT コ マン ド は、 シンボルが 実 行 時 に 共 有 オブジ ェ ク ト で 定 義 さ れる こ と<br />
を 指 定 し ます。<br />
構 文<br />
IMPORT pattern [AS replacement_pattern] [,pattern [AS replacement_pattern]] *<br />
各 パラ メ ータには 以 下 の 意 味 があ り ます。<br />
pattern 0 個 以 上 の 未 定 義 のグ ローバルシンボル と 一 致 する ワ イル ド カー<br />
ド 文 字 (* または ?) をオプシ ョ ンで 含 めるこ とができる 文 字 列<br />
です。 pattern がどの 未 定 義 グ ローバルシンボル と も 一 致 し ない 場<br />
合 、 そのコ マン ド は 無 視 さ れます。 オペラ ン ド は、 未 定 義 のグ<br />
ローバルシンボルのみとマッチングを 行 う こ とができます。<br />
replacement_pattern<br />
ワイルドカード 文 字 (* または ?) をオプシ ョ ンで 含 めるこ とが<br />
で き る 文 字 列 です。 グ ローバルシンボルの 名 前 は、 こ こ で 指 定<br />
した 名 前 に 変 更 されます。 ワイルドカード 文 字 は pattern 内 のワ<br />
イルドカード 文 字 と 対 応 している 必 要 があり ます。 pattern 内 のワ<br />
イル ド カー ド 文 字 に 一 致 する 文 字 が、 replacement_pattern のワイ<br />
ル ド カード 文 字 に 置 き 換 わ り ます。<br />
以 下 に 例 を 示 し ます。<br />
IMPORT my_func AS func<br />
未 定 義 シンボル my_func をインポート し、 名 前 を func に 変 更 し ま<br />
す。<br />
使 用 法<br />
現 在 の 共 有 オブジ ェ ク ト ま たは 実 行 可 能 フ ァ イルで 定 義 さ れてい る シンボル<br />
はインポートできません。 IMPORT では、 ワ イルド カード 文 字 (* または ?) は 1<br />
文 字 し か 使 用 で き ません。<br />
動 的 シンボルテーブルが 存 在 する 場 合 、 未 定 義 シンボルは ( 指 定 さ れてい る<br />
場 合 は replacement_pattern と して、 指 定 されていない 場 合 は pattern として)<br />
動 的 シンボルテーブルに 含 め られます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-77<br />
Non-Confidential
リンカコマンドラインオプション<br />
注<br />
IMPORT コマンドは、 未 定 義 グローバルシンボルのみに 影 響 を 与 えます。 共 有 ラ<br />
イ ブ ラ リ に よ って 解 決 さ れたシンボルは、 動 的 シンボルテーブルに 暗 黙 に イ<br />
ンポート されます。 リンカでは、 暗 黙 にインポートされたシンボルをター<br />
ゲッ ト とする IMPORT ディレクティブはすべて 無 視 されます。<br />
2-78 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.2.4 RENAME<br />
RENAME コ マン ド に よ って、 定 義 済 みあ るいは 未 定 義 のグ ローバルシンボルの<br />
名 前 を 変 更 で き ます。<br />
構 文<br />
RENAME pattern AS replacement_pattern [,pattern AS replacement_pattern] *<br />
各 パラ メ ータには 以 下 の 意 味 があ り ます。<br />
pattern<br />
0 個 以 上 のグ ローバルシンボル と 一 致 する ワ イル ド カー ド 文 字<br />
(* または ?) をオプシ ョ ンで 含 め る こ と がで き る 文 字 列 です。<br />
pattern がどのグ ローバルシンボル と も 一 致 し ない 場 合 、 その コ<br />
マンドは 無 視 されます。 オペラ ン ド は、 定 義 済 み と 未 定 義 のグ<br />
ローバルシンボルのどちら と もマッチングを 行 う こ とができま<br />
す。<br />
replacement_pattern<br />
ワイルドカード 文 字 (* または ?) をオプシ ョ ンで 含 めるこ とが<br />
で き る 文 字 列 です。 グ ローバルシンボルの 名 前 は、 こ こ で 指 定<br />
した 名 前 に 変 更 されます。 ワイルドカード 文 字 は pattern 内 のワ<br />
イルドカード 文 字 と 対 応 している 必 要 があり ます。 pattern 内 のワ<br />
イル ド カー ド 文 字 に 一 致 する 文 字 が、 replacement_pattern のワイ<br />
ル ド カード 文 字 に 置 き 換 わ り ます。<br />
例 えば、 シンボルの 名 前 が func1 の 場 合<br />
RENAME f* AS my_f*<br />
名 前 func1 を my_func1 に 変 更 し ます。<br />
使 用 法<br />
ターゲ ッ ト のシンボル 名 自 体 が 変 更 さ れてい る 場 合 で も、 シンボルの 名 前 を<br />
既 存 の 名 前 に 変 更 する こ と はで き ません。 RENAME では、 ワ イルド カード 文 字<br />
(* または ?) は 1 文 字 し か 使 用 で き ません。 例 えば、 シンボル func1、 func2、<br />
および func3 を 含 んでいる イ メージがある と し ます。<br />
EXPORT func1 AS func2<br />
RENAME func3 AS b2<br />
EXPORT func1 AS func3<br />
;invalid, func2 exists<br />
;invalid, func3 exists, even though it is renamed to b2<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-79<br />
Non-Confidential
リンカコマンドラインオプション<br />
リンカでは、 置 き 換 えを 行 う 前 にステアリングファイルを 処 理 します。 その<br />
ため、 1 行 目 で RENAME A AS B を 使 用 し、 2 行 目 で RENAME B AS A を 使 用 する こ と<br />
はでき ません。<br />
2-80 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.2.5 REQUIRE<br />
REQUIRE コ マン ド は、 動 的 配 列 内 に DT_NEEDED タグを 作 成 します。DT_NEEDED タグ<br />
は、 アプ リ ケーシ ョ ンで 使 用 さ れてい る 共 有 ラ イ ブ ラ リ な どの 他 の 共 有 オブ<br />
ジ ェ ク ト と の 依 存 関 係 を 指 定 し ます。<br />
構 文<br />
REQUIRE pattern [,pattern] *<br />
各 パラ メ ータには 以 下 の 意 味 があ り ます。<br />
pattern<br />
フ ァ イル 名 を 表 す 文 字 列 です。 ワイルドカードは 使 用 できませ<br />
ん。<br />
使 用 法<br />
リンカでは、pattern の 値 を 含 んでいる DT_NEEDED タ グ を 動 的 配 列 に 挿 入 し ま<br />
す。 このタグは、 ダイナミ ッ クローダが 現 在 ロード しているファ イルで<br />
pattern を ロー ド する 必 要 があ る こ と を ローダに 通 知 し ます。<br />
注<br />
REQUIRE コ マン ド の 結 果 と し て 挿 入 さ れる DT_NEEDED タグは、 コマンドラインで<br />
配 置 さ れる 共 有 オブジ ェ ク ト ま たは DLL から 生 成 される DT_NEEDED タグの 後 に<br />
追 加 さ れます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-81<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.2.6 RESOLVE<br />
RESOLVE コ マン ド に よ って、 特 定 の 未 定 義 の 参 照 と 、 定 義 済 みのグ ローバルシ<br />
ンボルとのマッチングが 行 われます。<br />
構 文<br />
RESOLVE pattern AS defined_pattern<br />
各 パ ラ メ ータには 以 下 の 意 味 があ り ます。<br />
pattern<br />
定 義 済 みグ ローバルシンボルに 一 致 する 必 要 のあ る ワ イル ド<br />
カード 文 字 をオプシ ョ ンで 含 める こ とができ る 文 字 列 です。<br />
defined_pattern<br />
0 個 以 上 の 定 義 済 みグ ローバルシンボルに 一 致 する ワ イル ド カー<br />
ド 文 字 をオプシ ョ ンで 含 め る こ と がで き る 文 字 列 です。<br />
defined_pattern がどの 定 義 済 みグ ローバルシンボル と も 一 致 し な<br />
い 場 合 、 その コ マン ド は 無 視 さ れます。 未 定 義 参 照 と 未 定 義 シン<br />
ボルのマッチングを 行 う こ とはでき ません。<br />
使 用 法<br />
RESOLVE は、 既 存 の armlink --unresolved コ マン ド ラ イ ンオプシ ョ ン を 拡 張 する<br />
コマンドです。 --unresolved を 使 用 する と 、 すべての 未 定 義 参 照 について 1 つ<br />
の 定 義 と のマッチングができ るのに 対 して、 RESOLVE では よ り 限 定 的 な 参 照 と<br />
シンボルのマッチングができる 点 が 異 なり ます。<br />
未 定 義 参 照 は、 出 力 シンボルテーブルか ら 削 除 さ れます。<br />
RESOLVE は、 部 分 的 な リ ン ク を 実 行 する と き で も、 通 常 の リ ン ク を 実 行 する と<br />
きでも 機 能 します。<br />
例 えば、 例 2-6 (ページ 2-83) に 示 すよ うに、 2 つのフ ァ イル file1.c と<br />
file2.c がある と します。 こ こで、RESOLVE MP3* AS MyMP3* とい う 行 を 含 んでいる<br />
ed.txt ファイルを 作 成 し、 以 下 のコマンドを 発 行 します。<br />
armlink file1.o file2.o --edit ed.txt --unresolved foobar<br />
こ の コ マン ド では、 以 下 の 処 理 が 行 われます。<br />
• file1.o からの 参 照 (foo、 MP3_Init()、 MP3_Play()) は、 ステア リ ングファ<br />
イル ed.txt での 指 示 に 従 って、 file2.o での 定 義 (foobar、 MyMP3_Init()、<br />
MyMP3_Play()) とそれぞれマッチングが 行 われます。<br />
2-82 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
リンカコマンドラインオプション<br />
• ed.txt で 指 定 されている RESOLVE コマンドでは、MP3 関 数 のマ ッ チングが<br />
行 われ、--unresolved オプシ ョ ンによ って、 残 り のすべての 参 照 のマッチ<br />
ングが 行 われます。 この 場 合 は、foo と foobar のマッチングが 行 われま<br />
す。<br />
• イ メ ージか 部 分 的 に リ ン ク さ れる オブジ ェ ク ト かに 関 係 な く 、 出 力 シン<br />
ボルテーブルには、 シンボル foo、 MP3_Init、 MP3_Play はいずれも 含 めら<br />
れません。<br />
例 2-6 RESOLVE コ マン ド の 使 用<br />
file1.c<br />
extern int foo;<br />
extern void MP3_Init(void);<br />
extern void MP3_Play(void);<br />
int main(void)<br />
{<br />
int x = foo + 1;<br />
MP3_Init();<br />
MP3_Play();<br />
return x;<br />
}<br />
file2.c:<br />
int foobar;<br />
void MyMP3_Init()<br />
{<br />
}<br />
void MyMP3_Play()<br />
{<br />
}<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 2-83<br />
Non-Confidential
リンカコマンドラインオプション<br />
2.2.7 SHOW<br />
SHOW コマンドは、 グローバルシンボルを 表 示 します。 このコマンドは、 ワイ<br />
ルドカードを 指 定 した HIDE コマンドを 使 用 して 非 表 示 にした 特 定 のシンボル<br />
を 表 示 する 場 合 に 便 利 です。<br />
構 文<br />
SHOW pattern [,pattern] *<br />
各 パ ラ メ ータには 以 下 の 意 味 があ り ます。<br />
pattern<br />
0 個 以 上 のグ ローバルシンボルに 一 致 する ワ イ ル ド カー ド 文 字 を<br />
オプシ ョ ンで 含 める こ とができ る 文 字 列 です。 pattern がどのグ<br />
ローバルシンボル と も 一 致 し ない 場 合 、 そのコ マン ド は 無 視 さ<br />
れます。<br />
使 用 法<br />
SHOW の 使 用 方 法 は、 HIDE の 使 用 方 法 と 密 接 に 関 連 し ています。<br />
関 連 項 目<br />
• 「HIDE」 (ページ 2-75)<br />
2-84 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
第 3 章<br />
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
本 章 では、 ス キ ャ ッ タ ロー ド 記 述 フ ァ イルの 形 式 について 説 明 し ます。 以 下<br />
のセクシ ョ ンから 構 成 されています。<br />
• 「BNF 記 法 と 構 文 」 (ページ 3-2)<br />
• 「ス キ ャ ッ タ ロー ド 記 述 フ ァ イルに 使 用 さ れる 構 文 の 概 要 」<br />
(ページ 3-3)<br />
• 「ロー ド 領 域 の 記 述 」 (ページ 3-4)<br />
• 「 実 行 領 域 の 記 述 」 (ページ 3-7)<br />
• 「ア ド レ ス 指 定 属 性 」 (ページ 3-11)<br />
• 「 入 力 セ ク シ ョ ンの 記 述 」 (ページ 3-14)<br />
• 「 複 数 のマ ッ チン グの 解 決 」 (ページ 3-20)<br />
• 「パス 名 の 解 決 」 (ページ 3-24)<br />
• 「スキ ャ ッ タ フ ァ イル 内 の 式 の 評 価 」 (ページ 3-25)<br />
ス キ ャ ッ タ ロー ド 記 述 フ ァ イルの 使 用 法 の 詳 細 については、 『リンカユーザガ<br />
イド』 の 「 第 5 章 スキャッタロード 記 述 ファイルの 使 用 」 を 参 照 して 下 さ<br />
い。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-1<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.1 BNF 記 法 と 構 文<br />
表 3-1 は、 形 式 言 語 の 記 述 に 使 用 さ れるバッカスナウア 記 法 (BNF) のシン<br />
ボルを 示 しています。<br />
表 3-1 BNF の 構 文<br />
シンボル<br />
説 明<br />
" 二 重 引 用 符 は、 通 常 は BNF 構 文 の 一 部 であ る 文 字 が 定 義 の 中 で リ テ<br />
ラ ル 文 字 と し て 使 用 さ れる こ と を 示 す 場 合 に 使 用 し ます。 例 えば、 定<br />
義 B"+"C は、 パターン B+C のみに 置 き 換 え られます。 例 えば、 定 義 B+C<br />
は、 パターン BC、 BBC、 または BBBC に 置 き 換 え られます。<br />
A ::= B<br />
[A]<br />
A を B として 定 義 します。 例 えば、 A::= B"+" | C は、 A が B+ または C<br />
のいずれか と 等 価 であ る こ と を 意 味 し ます。 ::= は、 そのコ ンポーネ<br />
ン ト におけ る 上 位 の 構 成 を 定 義 する ために 使 用 さ れます。 各 コンポー<br />
ネン ト には、 さ ら に 単 純 な コ ンポーネン ト に 関 連 し てそれを 定 義 す<br />
る ::= 定 義 を 使 用 する こ と も で き ます。 例 えば、A::= B と B::= C | D は、<br />
A の 定 義 がパターン C または D に 等 しいこ と を 意 味 し ます。<br />
任 意 の 要 素 A を 表 します。 例 えば、 A::= B[C]D は、 定 義 A が BD または<br />
BCD として 解 釈 されます。<br />
A+ 要 素 A が 1 つ 以 上 あ る こ と を 表 し ます。 例 えば、A::= B+ は、 定 義 A が<br />
B,BB、 または BBB として 解 釈 されます。<br />
A* 要 素 A が 0 個 以 上 あ る こ と を 表 し ます。<br />
A | B<br />
要 素 A または B のど ち ら かが 出 現 する 可 能 性 があ り 、 両 方 出 現 する<br />
こ と はない こ と を 意 味 し ます。<br />
(A B) 要 素 A および B が 一 緒 にグループ 化 される こ と を 意 味 し ます。 このシ<br />
ンボルは、 | 演 算 子 が 使 用 さ れる 場 合 、 ま たは 複 雑 なパターンが 繰 り<br />
返 される 場 合 に 特 に 便 利 です。 例 えば、 A::=(B C)+ (D | E) は、 定 義 A<br />
が BCD,BCE、 BCBCD、 BCBCE、 BCBCBCD、 または BCBCBCE として 解 釈 されま<br />
す。<br />
注<br />
このセクションの BNF の 定 義 では、 読 みやす く するために 改 行 と スペースが<br />
挿 入 さ れています。 ス キ ャ ッ タ ロー ド の 定 義 に 改 行 やスペース を 挿 入 する 必<br />
要 はな く 、 フ ァ イル 内 に 存 在 し ている 場 合 は 無 視 されます。<br />
3-2 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.2 スキャ ッ タ ロー ド 記 述 フ ァ イルに 使 用 される 構 文 の 概 要<br />
図 3-1 は、 典 型 的 な ス キ ャ ッ タ ロー ド 記 述 フ ァ イルの コ ンポーネン ト と 構 成<br />
を 示 しています。<br />
Scatter description<br />
LOAD_ROM_1 0x0000<br />
{<br />
EXEC_ROM_1 0x0000<br />
{<br />
program1.o (+RO)<br />
}<br />
}<br />
DRAM 0x18000 0x8000<br />
{<br />
program1.o (+RW,+ZI)<br />
}<br />
LOAD_ROM_2 0x4000<br />
{<br />
EXEC_ROM_2 0x4000<br />
{<br />
program2.o (+RO)<br />
}<br />
}<br />
SRAM 0x8000 0x8000<br />
{<br />
program2.o (+RW,+ZI)<br />
}<br />
Load region description<br />
Execution region description<br />
Input section description<br />
Execution region description<br />
Input section description<br />
Load region description<br />
Execution region description<br />
Input section description<br />
Execution region description<br />
Input section description<br />
Module selector pattern<br />
Input section attributes<br />
図 3-1 スキャ ッ タロード 記 述 フ ァ イルのコンポーネン ト<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-3<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.3 ロー ド 領 域 の 記 述<br />
ロード 領 域 には 以 下 が 指 定 されます。<br />
• 名 前 ( 各 ロー ド 領 域 を 識 別 する ために リ ン カに よ って 使 用 さ れます)<br />
• ベースアドレス (ロードビューのコードとデータの 開 始 アドレスです)<br />
• ロード 領 域 の 特 性 を 指 定 する 属 性<br />
• 最 大 サ イ ズの 指 定 ( 任 意 )<br />
• 1 つ 以 上 の 実 行 領 域<br />
図 3-2 は、 典 型 的 な ロー ド 領 域 の 記 述 に 含 まれてい る コ ンポーネン ト を 示 し<br />
ています。<br />
LOAD_ROM_1 0x0000<br />
{<br />
EXEC_ROM_1 0x0000<br />
{<br />
program1.o (+RO)<br />
}<br />
Load region description<br />
A load region description contains<br />
one or more execution region<br />
descriptions<br />
}<br />
DRAM 0x18000 0x8000<br />
{<br />
program1.o (+RW,+ZI)<br />
}<br />
図 3-2 ロー ド 領 域 の 記 述 に 含 まれている コ ンポーネン ト<br />
3.3.1 ロー ド 領 域 記 述 の 構 文<br />
BNF での 構 文 は 以 下 のとお り です。<br />
load_region_description ::=<br />
load_region_name (base_address | ("+" offset)) [attribute_list] [max_size]<br />
"{"<br />
execution_region_description+<br />
"}"<br />
各 項 目 には 以 下 の 意 味 があ り ます。<br />
load_region_name<br />
ロー ド 領 域 の 名 前 。<br />
3-4 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
base_address 領 域 内 のオブジ ェ ク ト が リ ン ク さ れる ア ド レ ス を 指 定 し ます。<br />
base_address はワー ド 境 界 で 整 列 さ せる 必 要 があ り ます。<br />
+offset<br />
前 のロード 領 域 の 終 わ り から offset バイ ト 離 れたベースアドレ<br />
スを 指 定 します。 offset には 4 で 割 った 余 り が 0 になる 値 を 指 定<br />
する 必 要 があ り ます。 これが 最 初 のロード 領 域 の 場 合 、 +offset は<br />
ベース ア ド レ スがゼ ロ か ら offset バ イ ト で 開 始 する と い う 意 味<br />
です。<br />
attribute_list<br />
以 下 の 属 性 を 使 用 し て、 ロー ド 領 域 の 内 容 の 特 性 を 指 定 し ます。<br />
ABSOLUTE<br />
絶 対 ア ド レ ス。 領 域 の ロー ド ア ド レ スはベー<br />
ス 指 定 子 で 指 定 さ れます。<br />
ALIGN alignment. ロー ド 領 域 の 境 界 整 列 の 制 約 を 4 から<br />
alignment に 引 き 上 げます。 alignment には、 2<br />
の 累 乗 で 正 の 数 を 指 定 する 必 要 があ り ます。<br />
ロード 領 域 に base_address が 指 定 されている<br />
場 合 、 alignment で 整 列 される 必 要 があ り ま<br />
す。 ロード 領 域 に +offset が 指 定 されている 場<br />
合 、 領 域 の 計 算 さ れたベース ア ド レ スは<br />
alignment 境 界 で 整 列 さ れます。<br />
NOCOMPRESS<br />
OVERLAY<br />
PI<br />
RELOC<br />
デフォル ト では、 RW データ 圧 縮 は 有 効 に<br />
なっています。 NOCOMPRESS キーワード を 使 用 す<br />
ると、 最 終 イメージでロード 領 域 の 内 容 が 圧<br />
縮 されないよ うに 指 定 できます。<br />
OVERLAY キーワード を 使 用 する と、 同 じア ド レ<br />
スに 複 数 の ロー ド 領 域 を 指 定 で き ます。 <strong>ARM</strong><br />
ツールはオーバーレイ 機 能 をサポー ト してい<br />
ません。 同 じアドレスにある 複 数 のロード 領<br />
域 を 使 用 するには、 独 自 のオーバーレ イマ<br />
ネージ ャ を 使 用 する 必 要 があ り ます。<br />
こ の 領 域 は 位 置 に 依 存 し ません。<br />
こ の 領 域 は 再 配 置 可 能 です。<br />
max_size<br />
ロー ド 領 域 の 最 大 サ イ ズを 指 定 し ます。 こ れは、 展 開 やゼ ロ 初 期<br />
化 が 発 生 する 前 のロード 領 域 のサイ ズです。 オプシ ョ ン と して<br />
max_size の 値 が 指 定 さ れてい る 場 合 、 その 領 域 に max_size バイ ト<br />
を 超 えるサイズが 割 り 当 てられている と、 armlink によってエ<br />
ラーが 生 成 されます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-5<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
execution_region_description<br />
実 行 領 域 の 名 前 、 ア ド レ ス、 および 内 容 を 指 定 し ます。 「 実 行 領<br />
域 の 記 述 」 (ページ 3-7) を 参 照 して 下 さい。<br />
3-6 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.4 実 行 領 域 の 記 述<br />
実 行 領 域 には 以 下 が 指 定 されます。<br />
• 名 前 ( 各 実 行 領 域 を 識 別 する ために リ ン カに よ って 使 用 さ れます)<br />
• ベース ア ド レ ス ( 絶 対 ア ド レ ス ま たは 相 対 ア ド レ ス)<br />
• 実 行 領 域 の 特 性 を 指 定 する 属 性<br />
• 最 大 サ イ ズの 指 定 ( 任 意 )<br />
• 入 力 セ ク シ ョ ンの 1 つ 以 上 の 記 述 ( 実 行 領 域 内 に 配 置 さ れる モジ ュー<br />
ル)<br />
図 3-3 は、 典 型 的 な 実 行 領 域 の 記 述 に 含 まれてい る コ ンポーネン ト を 示 し て<br />
います。<br />
EXEC_ROM_1 0x0000<br />
{<br />
program1.o (+RO)<br />
}<br />
Execution region description<br />
An execution region description contains<br />
one or more input section descriptions<br />
図 3-3 実 行 領 域 の 記 述 に 含 まれている コ ンポーネン ト<br />
3.4.1 実 行 領 域 の 記 述 に 含 まれている 構 文<br />
execution_region_description ::=<br />
BNF での 実 行 領 域 の 記 述 構 文 は 次 の と お り です。<br />
exec_region_name (base_address | "+" offset) [attribute_list] [max_size | length]<br />
"{"<br />
input_section_description*<br />
"}"<br />
各 項 目 には 以 下 の 意 味 があ り ます。<br />
exec_region_name 実 行 領 域 の 名 前 を 指 定 し ます。<br />
base_address 領 域 内 のオブジ ェ ク ト が リ ン ク さ れる ア ド レ ス を 指 定 し ます。<br />
base_address はワー ド 境 界 で 整 列 さ せる 必 要 があ り ます。<br />
+offset<br />
前 の 実 行 領 域 の 終 わ り か ら offset バ イ ト 離 れたベース ア ド レ ス<br />
を 指 定 し ます。 offset には 4 で 割 った 余 り が 0 にな る 値 を 指 定 す<br />
る 必 要 があ り ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-7<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
前 の 実 行 領 域 がない 場 合 (つま り 、 こ れが ロー ド 領 域 内 の 最 初<br />
の 実 行 領 域 であ る 場 合 ) には、 +offset は、 ロー ド 領 域 のベース<br />
から offset バイ ト 離 れた 位 置 でベース ア ド レ スが 開 始 する こ と<br />
を 意 味 し ます。<br />
attribute_list<br />
こ れは 以 下 の 属 性 を 使 用 し て、 実 行 領 域 の 内 容 の 特 性 を 指 定 し<br />
ます。<br />
ABSOLUTE<br />
絶 対 ア ド レ ス。 領 域 の 実 行 ア ド レ スはベース<br />
指 定 子 で 指 定 さ れます。<br />
ALIGN alignment 実 行 領 域 の 境 界 整 列 の 制 約 を 4 から alignment<br />
に 引 き 上 げます。 alignment には、 2 の 累 乗 で<br />
正 の 数 を 指 定 する 必 要 があ り ます。 実 行 領 域<br />
に base_address が 指 定 されている 場 合 、<br />
alignment で 整 列 さ れる 必 要 があ り ます。 実 行<br />
領 域 に +offset が 指 定 さ れてい る 場 合 、 領 域 の<br />
計 算 さ れたベース ア ド レ スは alignment 境 界 で<br />
整 列 さ れます。<br />
EMPTY こ のオプシ ョ ン を 指 定 する と 、 通 常 は ヒ ープ<br />
またはスタックのために、 指 定 された 長 さの<br />
空 メ モ リ ブロ ッ ク が 実 行 領 域 内 に 確 保 されま<br />
す。 EMPTY 属 性 のあ る 領 域 にはセ ク シ ョ ン を 配<br />
置 でき ません。<br />
FILL<br />
値 を 含 んでい る リ ンカ 生 成 領 域 を 作 成 し ま<br />
す。 FILL を 指 定 する 場 合 、 以 下 の よ う に 値 を<br />
指 定 する 必 要 があ り ます。 FILL 0xFFFFFFFF. FILL<br />
属 性 は 次 の 組 み 合 わせを 置 き 換 え ます。 EMPTY<br />
ZEROPAD PADVALUE<br />
シミュレーションなどの 特 定 の 状 況 では、ゼ<br />
ロ を 書 き 込 むループに 時 間 を 費 やすよ り も 、<br />
こ のオプシ ョ ン を 使 用 する こ と をお 勧 め し ま<br />
す。<br />
FIXED<br />
固 定 ア ド レ ス。 リ ン カはパデ ィ ン グ を 挿 入 し<br />
て、 実 行 アドレスをロードアドレスと 等 しく<br />
しようとします。 これによって 領 域 がルート<br />
領 域 にな り ます。 これが 不 可 能 な 場 合 は、 エ<br />
ラーが 生 成 されます。<br />
3-8 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
NOCOMPRESS<br />
OVERLAY<br />
PADVALUE<br />
PI<br />
SORTTYPE<br />
UNINIT<br />
ZEROPAD<br />
デフォル ト では、 RW データ 圧 縮 は 有 効 に<br />
なっています。 NOCOMPRESS キーワード を 使 用 す<br />
る と 、 最 終 イ メ ージで 実 行 領 域 の RW データ<br />
が 圧 縮 されないよ う に 指 定 でき ます。<br />
オーバーレ イ ア ド レ ス 範 囲 のあ るセ ク シ ョ ン<br />
に 使 用 し ます。 OVERLAY 属 性 と +0 のベースオフ<br />
セ ッ ト を 使 用 する 連 続 し た 実 行 領 域 には、 同<br />
じベースアドレスが 指 定 されます。 詳 細 につ<br />
いては、 『リンカユーザガイド』 の 「オー<br />
バーレ イ を 使 用 し たセ ク シ ョ ンの 配 置 」<br />
(ページ 5-23) を 参 照 して 下 さい。<br />
パッ ドする 値 を 定 義 します。 PADVALUE を 指 定 す<br />
る 場 合 、 以 下 の よ う に 値 を 指 定 する 必 要 があ<br />
ります。<br />
EXEC 0x10000 PADVALUE 0xFFFFFFFF EMPTY ZEROPAD<br />
0x2000<br />
この 結 果 、0xFFFFFFFF でパデ ィ ングサイズ<br />
0x2000 の 領 域 が 作 成 されます。<br />
PADVALUE のサイズは 1 ワードである 必 要 があ<br />
ります。 ロード 領 域 の PADVALUE 属 性 は 無 視 さ<br />
れます。<br />
こ の 領 域 には、 位 置 に 依 存 し ないセ ク シ ョ ン<br />
のみが 含 まれています。<br />
例 えば、 実 行 領 域 の ソー ト アルゴ リ ズム を 指<br />
定 します。<br />
ER1 +0 SORTTYPE=CallTree<br />
詳 細 については、 「--sort=algorithm」<br />
(ページ 2-61) を 参 照 して 下 さい。<br />
これを 使 用 して、 初 期 化 されていないデータ<br />
またはメモリマップされた I/O を 含 む 実 行 領<br />
域 を 作 成 し ます。<br />
ゼロで 初 期 化 されたセクショ ンが、 ゼロのブ<br />
ロックとして ELF ファイルに 書 き 込 まれま<br />
す。 こ のオプシ ョ ン を 指 定 し た 場 合 、 実 行 時<br />
にセ ク シ ョ ンにゼ ロ を 書 き 込 む 必 要 はあ り ま<br />
せん。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-9<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
ルー ト 実 行 領 域 に 限 り 、 ZEROPAD 属 性 を 使 用 し<br />
てゼ ロ で 初 期 化 で き ます。 ルー ト 以 外 の 実 行<br />
領 域 で ZEROPAD 属 性 を 使 用 する と 、 警 告 が 生 成<br />
されて 属 性 は 無 視 されます。<br />
シミュレーションなどの 特 定 の 状 況 では、ゼ<br />
ロ を 書 き 込 むループに 時 間 を 費 やすよ り も 、<br />
こ のオプシ ョ ン を 使 用 する こ と をお 勧 め し ま<br />
す。<br />
max_size EMPTY または FILL と マー ク さ れた 実 行 領 域 の 場 合 、 max_size の 値<br />
は 領 域 の 長 さ と 解 釈 されます。 それ 以 外 の 場 合 は、 max_size の 値<br />
は 実 行 領 域 の 最 大 サ イ ズ と 解 釈 さ れます。<br />
[–]length<br />
EMPTY と だけ 使 用 可 能 で、 メ モ リ 内 で 下 方 に 増 加 される ス タ ッ ク<br />
を 表 し ます。 長 さ に 負 の 値 が 指 定 されている 場 合 は、base_address<br />
が、 その 領 域 の 終 了 ア ド レ ス と し て 使 用 されます。<br />
input_section_description<br />
入 力 セ ク シ ョ ンの 内 容 を 指 定 し ます。 「 入 力 セ ク シ ョ ンの 記 述 」<br />
(ページ 3-14) を 参 照 して 下 さい。<br />
3-10 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.5 ア ド レス 指 定 属 性<br />
ロー ド 領 域 と 実 行 領 域 の 属 性 のサブセ ッ ト が、 領 域 の 内 容 と リ ン ク 後 の 動 作<br />
について リ ンカに 通 知 し ます。 これらの 属 性 は 以 下 のとおりです。<br />
ABSOLUTE<br />
PI<br />
RELOC<br />
OVERLAY<br />
リ ン ク 後 に 変 更 されない 固 定 ア ド レ スに 内 容 が 配 置 されます。<br />
内 容 は 固 定 ア ド レ スに 依 存 せず、 リ ン ク 後 、 追 加 の 処 理 な し に<br />
移 動 で き ます。<br />
内 容 は 固 定 ア ド レ スに 依 存 し、 再 配 置 情 報 が 出 力 さ れて、 他 の<br />
ツールで 内 容 を 別 の 場 所 に 移 動 で き ます。<br />
リ ン ク 後 に 変 更 されない 固 定 ア ド レ スに 内 容 が 配 置 されます。 内<br />
容 は OVERLAY のあ る 他 の 領 域 と 重 複 する 可 能 性 があ り ます。<br />
一 般 に、 ロー ド 領 域 内 のすべての 実 行 領 域 には 同 じ ア ド レ ス 指 定 属 性 があ り<br />
ます。 こ れを 選 択 しやす く するには、 ア ド レ ス 指 定 属 性 を 前 の 領 域 か ら 継 承<br />
して、 1 か 所 で 設 定 するだけで 済 むよ う に し ます。 ア ド レ ス 指 定 属 性 の 設 定 と<br />
継 承 の 規 則 は、 以 下 の と お り です。<br />
• ア ド レ ス 指 定 属 性 を 明 示 的 に 設 定 する。<br />
— ロード 領 域 は ABSOLUTE、 PI、 RELOC または OVERLAY 属 性 を 使 用 して 明<br />
示 的 に 設 定 で き ます。<br />
— 実 行 領 域 は、 ABSOLUTE、 PI または OVERLAY 属 性 を 使 用 し て 明 示 的 に 設<br />
定 でき ます。 実 行 領 域 を RELOC 属 性 で 設 定 するには、 親 ロー ド 領 域<br />
か ら 継 承 する 必 要 があ り ます。<br />
• 指 定 がない 場 合 にア ド レ ス 指 定 属 性 を 暗 黙 的 に 設 定 する。<br />
— OVERLAY 属 性 は 継 承 でき ません。 OVERLAY 属 性 のあ る 領 域 は 継 承 で き<br />
ません。<br />
— ベース ア ド レ スの ロー ド 領 域 ま たは 実 行 領 域 は 常 に ABSOLUTE がデ<br />
フォルトになります。<br />
— +offset ロー ド 領 域 はア ド レ ス 指 定 属 性 を 前 の ロー ド 領 域 か ら 継 承<br />
し ます。 前 の ロー ド 領 域 が 存 在 し ない 場 合 は、 ABSOLUTE か ら 継 承 し<br />
ます。<br />
— +offset 実 行 領 域 はア ド レ ス 指 定 属 性 を 前 の 実 行 領 域 か ら 継 承 し ま<br />
す。 前 の 実 行 領 域 が 存 在 し ない 場 合 は、 親 ロード 領 域 から 継 承 し<br />
ます。<br />
ア ド レ ス 指 定 属 性 を 設 定 する 継 承 規 則 については、 例 3-1 (ページ 3-12)、<br />
例 3-2 (ページ 3-12)、 および 例 3-3 (ページ 3-13) を 参 照 して 下 さい。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-11<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
例 3-1 ロー ド 領 域 の 継 承<br />
LR1 0x8000 PI<br />
{<br />
...<br />
}<br />
LR2 +0<br />
{<br />
...<br />
}<br />
LR3 0x1000<br />
{<br />
...<br />
}<br />
LR4 +0<br />
{<br />
...<br />
}<br />
LR5 +0 RELOC<br />
{<br />
...<br />
}<br />
LR6 +0 OVERLAY<br />
{<br />
...<br />
}<br />
LR7 +0<br />
{<br />
...<br />
}<br />
; LR2 inherits PI from LR1<br />
; LR3 does not inherit because it has no relative base,<br />
gets default of ABSOLUTE<br />
; LR4 inherits ABSOLUTE from LR3<br />
; LR5 does not inherit because it explicitly sets RELOC<br />
; LR6 does not inherit, an OVERLAY cannot inherit<br />
; LR7 cannot inherit OVERLAY, gets default of ABSOLUTE<br />
例 3-2 実 行 領 域 の 継 承<br />
LR1 0x8000 PI<br />
{<br />
ER1 +0<br />
{<br />
...<br />
}<br />
ER2 +0<br />
{<br />
...<br />
}<br />
ER3 0x10000<br />
; ER1 inherits PI from LR1<br />
; ER2 inherits PI from ER1<br />
; ER3 does not inherit, because it has no relative base,<br />
gets default of ABSOLUTE<br />
3-12 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
}<br />
{<br />
...<br />
}<br />
ER4 +0<br />
; ER4 inherits ABSOLUTE from ER3<br />
{<br />
...<br />
}<br />
ER5 +0 PI ; ER5 does not inherit, it explicitly sets PI<br />
{<br />
...<br />
}<br />
ER6 +0 OVERLAY ; ER6 does not inherit, an OVERLAY cannot inherit<br />
{<br />
...<br />
}<br />
ER7 +0 ; ER7 cannot inherit OVERLAY, gets default of ABSOLUTE<br />
{<br />
...<br />
}<br />
例 3-3 RELOC の 継 承<br />
LR1 0x8000 RELOC<br />
{<br />
ER1 +0 ; inherits RELOC from LR1<br />
{<br />
...<br />
}<br />
ER2 +0 ; inherits RELOC from ER1<br />
{<br />
...<br />
}<br />
ER3 +0 RELOC ; Error cannot explicitly set RELOC on an execution region<br />
{<br />
...<br />
}<br />
}<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-13<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.6 入 力 セ ク シ ョ ンの 記 述<br />
入 力 セ ク シ ョ ンの 記 述 は、 以 下 の 名 前 や 属 性 に よ って 入 力 セ ク シ ョ ン を 識 別<br />
するパターンを 示 します。<br />
• モジュールの 名 前 (オブジェ ク ト フ ァ イルの 名 前 、 ラ イブラ リ メ ンバの<br />
名 前 、 ま たは ラ イ ブ ラ リ フ ァ イ ルの 名 前 )。 モジュールの 名 前 にはワ イ<br />
ルドカード 文 字 を 使 用 できます。<br />
• 入 力 セ ク シ ョ ンの 名 前 、 ま たは READ-ONLY や CODE などの 入 力 セクショ ン<br />
の 属 性 。<br />
• シンボル 名 。<br />
図 3-4 は、 典 型 的 な 入 力 セ ク シ ョ ンの 記 述 の コ ンポーネン ト を 示 し ています。<br />
program2.o (+RO)<br />
Input section description<br />
Module select pattern<br />
Input section attribute<br />
図 3-4 入 力 セ ク シ ョ ンの 記 述 のコ ンポーネン ト<br />
3.6.1 入 力 セ ク シ ョ ン 記 述 の 構 文<br />
BNF での 入 力 セ ク シ ョ ン 記 述 構 文 は 次 の と お り です。<br />
input_section_description ::=<br />
module_select_pattern<br />
[ "(" input_section_selector ( "," input_section_selector )* ")" ]<br />
input_section_selector ::=<br />
("+" input_section_attr | input_section_pattern | input_symbol_pattern)<br />
各 項 目 には 以 下 の 意 味 があ り ます。<br />
module_select_pattern<br />
リテラルテキストで 作 成 されるパターン。 ワイルドカード 文 字 *<br />
はゼ ロ 個 以 上 の 文 字 と 一 致 し、 ? は 任 意 の 1 文 字 と 一 致 し ます。<br />
ホ ス ト 上 でフ ァ イ ル 名 の 大 文 字 と 小 文 字 が 区 別 さ れる 場 合 で も、<br />
こ の 一 致 では 大 文 字 と 小 文 字 は 区 別 さ れません。<br />
3-14 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
すべてのオブジ ェ ク ト と 一 致 させる 場 合 は、 *.o を 使 用 し ます。<br />
すべてのオブジェク ト ファ イルおよびラ イブラ リ と 一 致 させる<br />
場 合 は、 * を 使 用 し ます。<br />
module_select_pattern が 以 下 のいずれか と 一 致 する 場 合 、 入 力 セ<br />
クションはモジュールセレクタパターンと 一 致 します。<br />
• そのセ ク シ ョ ン を 含 んでい る オブジ ェ ク ト フ ァ イ ルの 名 前 。<br />
• ライブラリ メンバの 名 前 ( 先 頭 のパス 名 を 除 く)。<br />
• セクションが 抽 出 されるライブラ リのフルネーム (パス 名<br />
を 含 む)。 名 前 にスペースが 含 まれてい る 場 合 は、 検 索 を 容<br />
易 にするためにワ イルド 文 字 を 使 用 して 下 さい。 例 えば、<br />
C:\lib dir\libname.lib とマッチングを 行 う 場 合 には<br />
*libname.lib を 使 用 し ます。<br />
特 殊 なモジ ュールセレ ク タパターン .ANY を 使 用 する と、 入 力 セ<br />
ク シ ョ ンの 親 モジ ュールを 考 慮 する こ と な く 、 入 力 セ ク シ ョ ン<br />
を 実 行 領 域 に 割 り 当 て る こ と がで き ます。 .ANY は、 実 行 領 域 を ド<br />
ントケア (Don't care) に 設 定 する 場 合 に 使 用 し ます。<br />
特 定 の 優 先 順 位 を 指 定 する には、 .ANYnum を 使 用 し ます。 こ こで、<br />
num には 0 よ り 大 きい 正 の 整 数 の 接 尾 文 字 を 指 定 し ます。 最 も 大<br />
き い 整 数 に 最 優 先 順 位 が 設 定 さ れます。<br />
例 3-4 . 整 数 の 接 尾 文 字 を 伴 う ANY<br />
lr1 0x8000 1024<br />
{<br />
er1 +0 512<br />
{<br />
.ANY1(+RO) ; evenly distributed with er3<br />
}<br />
er2 +0 256<br />
{<br />
.ANY2(+RO) ; Highest priority, so filled first<br />
}<br />
er3 +0 256<br />
{<br />
.ANY1(+RO) ; evenly distributed with er1<br />
}<br />
}<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-15<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
注<br />
• module_select_pattern と、 少 なく とも 1 つの<br />
input_section_attr または input_section_pattern の 両 方 に 一 致<br />
する 入 力 セ ク シ ョ ンのみが 実 行 領 域 に イ ン ク ルー ド さ れま<br />
す。<br />
(+ input_section_attr) と (input_section_pattern) を 省 略 した<br />
場 合 、 デフ ォル ト は +RO です。<br />
• コンパイラによって 生 成 される 入 力 セクション、 または<br />
<strong>ARM</strong> ライブラリコードによって 使 用 される 入 力 セクション<br />
名 には 依 存 し ないで 下 さい。 これらの 名 前 は、 異 なるコン<br />
パイラオプシ ョ ンが 使 用 される 場 合 など、 コンパイルごと<br />
に 変 わ る 可 能 性 があ り ます。 また、 コンパイラによって 使<br />
用 さ れる セ ク シ ョ ン 命 名 規 則 は、 リ リ ース 間 で 異 な る 場 合<br />
があ り ます。<br />
input_section_attr<br />
入 力 セ ク シ ョ ンの 属 性 と のマ ッ チングが 行 われる 属 性 セレ ク タ<br />
です。 各 input_section_attr の 前 に + を 指 定 し ます。<br />
入 力 セ ク シ ョ ンの 名 前 と マ ッ チン グが 行 われるパターン を 指 定<br />
するには、 その 名 前 の 先 頭 に + を 付 け る 必 要 があ り ます。 + の 直<br />
前 の コ ンマは 省 略 で き ます。<br />
こ のセレ ク タ では 大 文 字 と 小 文 字 が 区 別 さ れません。 以 下 のセレ<br />
クタが 認 識 されます。<br />
• RO-CODE<br />
• RO-DATA<br />
• RO (RO-CODE と RO-DATA の 両 方 が 選 択 されます)<br />
• RW-DATA<br />
• RW-CODE<br />
• RW (RW-CODE と RW-DATA の 両 方 が 選 択 されます)<br />
• ZI<br />
• ENTRY (ENTRY ポイント を 含 んでいるセクショ ン)<br />
以 下 の 同 義 語 が 認 識 さ れます。<br />
• RO-CODE の 代 わ り に CODE<br />
• RO-DATA の 代 わ り に CONST<br />
• RO の 代 わ り に TEXT<br />
• RW の 代 わ り に DATA<br />
3-16 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
• ZI の 代 わ り に BSS<br />
以 下 の 疑 似 属 性 が 認 識 さ れます。<br />
• FIRST<br />
• LAST<br />
以 下 の 属 性 セレ ク タパターンは、 実 行 領 域 内 のセ ク シ ョ ンの 配<br />
置 順 序 を 記 述 し ます。<br />
最 初 のセ ク シ ョ ン と 最 後 のセ ク シ ョ ン<br />
実 行 領 域 内 の 配 置 順 序 が 重 要 な 場 合 ( 例 えば、 特 定 の<br />
入 力 セ ク シ ョ ン を 領 域 の 最 初 に 配 置 する 必 要 があ る 場<br />
合 や、 チェ ッ ク サム を 含 んでい る 入 力 セ ク シ ョ ン を 最<br />
後 に 配 置 する 必 要 があ る 場 合 など) には、 FIRST と LAST<br />
を 使 用 して、 最 初 のセクシ ョ ン と 最 後 のセクシ ョ ンを<br />
マークでき ます。<br />
input_section_selector リストには FIRST 属 性 か LAST 属 性<br />
が 1 つだけが 存 在 でき、 単 一 の input_section_attr に 続<br />
く 必 要 があります。 以 下 に 例 を 示 し ます。<br />
*(section, +FIRST)<br />
以 下 に 正 し いパターン を 示 し ます。<br />
*(+FIRST, section)<br />
このパターンは 誤 りで、 エラーメ ッセージが<br />
生 成 さ れます。<br />
特 殊 なモジ ュールセレ ク タ<br />
特 殊 なモジ ュールセレ ク タパターン .ANY を 使 用 する と、<br />
入 力 セ ク シ ョ ンの 親 モジ ュールを 考 慮 し ないで、 入 力<br />
セ ク シ ョ ン を 実 行 領 域 に 割 り 当 て る こ と がで き ます。 1<br />
つ 以 上 の .ANY パターン を 使 用 し て、 実 行 領 域 を ドント<br />
ケア 代 入 で 埋 めます。 ほ と んどの 場 合 、 1 つの .ANY を 使<br />
用 しても、* モジュールセレ ク タを 使 用 しても、 同 じ 結<br />
果 が 得 られます。<br />
変 更 し たセレ ク タ<br />
スキャッタファイル 内 で、* セレクタを 2 つ 使 用 する こ<br />
とはできません。 ただし、2 つのセレ ク タ ( 例 えば *A と<br />
*B) を 使 用 できます。 また、 .ANY セレクタ と * モジュー<br />
ルセレ ク タ を 一 緒 に 使 用 する こ と も で き ます。 * モ<br />
ジュールセレクタは .ANY よ り 優 先 さ れます。 * セレクタ<br />
を 含 んでいるフ ァ イルの 部 分 が 削 除 される と、 .ANY セ<br />
レ ク タ が 有 効 にな り ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-17<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
割 り 当 てられていないセクション<br />
モジュールセレ ク タパターン .ANY を 含 んでいる 入 力 セ<br />
ク シ ョ ンの 記 述 は、 他 のすべての (.ANY が 使 用 されて<br />
いない) 入 力 セ ク シ ョ ンの 記 述 が 解 決 さ れた 後 に 解 決<br />
されます。 実 行 領 域 に 割 り 当 て られていないすべての<br />
セクションは、.ANY 領 域 に 割 り 当 て ら れます。<br />
複 数 の .ANY パ ターンが 存 在 し てい る 場 合 、 リ ン カは 実<br />
行 領 域 に 割 り 当 て ら れていないセ ク シ ョ ンの う ち、 サ<br />
イ ズが 最 大 のセ ク シ ョ ン を 取 得 し、 それを 最 も 限 定 的<br />
で 空 き 領 域 が 十 分 あ る .ANY 実 行 領 域 に 割 り 当 て ます。<br />
armlink によってこの 選 択 が 行 われるとき、.ANY(.text)<br />
は .ANY(+RO) よ り も 限 定 的 だ と 判 断 さ れます。<br />
複 数 の 実 行 領 域 が 等 し く 限 定 的 であ る 場 合 、 空 き 領 域<br />
が 最 も 大 き い 実 行 領 域 にセ ク シ ョ ンが 割 り 当 て られま<br />
す。<br />
以 下 に 例 を 示 し ます。<br />
• 2 つの 実 行 領 域 が 同 じ く ら い 限 定 的 であ り 、 1 つ<br />
はサイ ズ 制 限 が 0x2000 で、 も う 1 つは 制 限 がない<br />
場 合 、 後 者 の 無 制 限 の .ANY 領 域 にすべてのセ ク<br />
ションが 割 り 当 てられます。<br />
• 2 つの 実 行 領 域 が 同 じ く ら い 限 定 的 であ り 、 1 つ<br />
はサイ ズ 制 限 が 0x2000 で、 も う 1 つはサイ ズ 制 限<br />
が 0x3000 である 場 合 、 配 置 されるセクシ ョ ンはま<br />
ず、 サ イ ズ 制 限 が 0x3000 である 後 者 の .ANY 領 域<br />
に、 残 り サイ ズが 0x2000 になるまで 割 り 当 てられ<br />
ていきます。 その 後 は、 両 方 の .ANY 実 行 領 域 に 交<br />
互 にセ ク シ ョ ンが 割 り 当 て られます。<br />
input_section_pattern<br />
大 文 字 と 小 文 字 の 区 別 な く 、 入 力 セ ク シ ョ ンの 名 前 と のマ ッ チ<br />
ングが 行 われるパターンです。 リテラルテキストで 構 成 されま<br />
す。 ワイルドカード 文 字 * はゼ ロ 個 以 上 の 文 字 と 一 致 し、 ? は 任<br />
意 の 1 文 字 と 一 致 し ます。<br />
注<br />
複 数 の input_section_pattern を 使 用 する 場 合 、 曖 昧 エ ラーを 避 け<br />
る ため、 他 の 実 行 領 域 と パターンが 重 複 し ない よ う に し ます。<br />
3-18 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
input_symbol_pattern<br />
入 力 セ ク シ ョ ンに よ って 定 義 さ れてい る グ ローバルシンボルの<br />
名 前 を 使 用 し て、 そのセ ク シ ョ ン を 選 択 し ます。 このオプショ ン<br />
を 使 用 する と 、 部 分 的 に リ ン ク さ れたオブジ ェ ク ト か ら、 同 名<br />
のセクシ ョ ンを 個 別 に 選 択 でき ます。<br />
:gdef: 接 頭 文 字 でグ ローバルシンボルパターン と セ ク シ ョ ンパ<br />
ターンを 区 別 します。 例 えば、mysym を 定 義 する セ ク シ ョ ン を 選 択<br />
するには、:gdef:mysym を 使 用 し ます。 以 下 に、 グ ローバルシンボ<br />
ル mysym1 を 定 義 するセクシ ョ ン と、 グローバルシンボル mysym2<br />
を 含 んでいるセクシ ョ ンが ExecReg1 に 存 在 する 記 述 フ ァ イルの 例<br />
を 示 し ます。<br />
LoadRegion 0x8000<br />
{<br />
ExecReg1 +0<br />
{<br />
*(:gdef:mysym1)<br />
*(:gdef:mysym2)<br />
}<br />
; rest of scatter description<br />
}<br />
注<br />
複 数 の input_symbol_pattern を 使 用 する 場 合 、 曖 昧 エ ラーを 避 け<br />
る ため、 他 の 実 行 領 域 と パターンが 重 複 し ない よ う に し ます。<br />
入 力 セ ク シ ョ ンの 記 述 子 の 順 序 は、 重 要 ではあ り ません。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-19<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.7 複 数 のマ ッ チングの 解 決<br />
あ るセ ク シ ョ ン と 複 数 の 実 行 領 域 と のマ ッチングが 行 われる 場 合 、 それらの<br />
マ ッ チン グは 以 下 の よ う に 解 決 さ れます。 一 意 の 一 致 が 検 出 さ れない 場 合 は、<br />
そのスキ ャ ッ タ ロード の 記 述 の 処 理 が 中 止 されます。 各 セク シ ョ ンは、<br />
module_select_pattern と input_section_selector によって 選 択 されます。<br />
例 えば、 module_select_pattern は 以 下 のよ う に 指 定 でき ます。<br />
• * は、 任 意 のモジ ュールま たは ラ イ ブ ラ リ と 一 致 し ます。<br />
• *.o は 任 意 のオブジ ェ ク ト モジ ュール と 一 致 し ます。<br />
• math.o は math.o モジュールと 一 致 します。<br />
• *armlib* は、 <strong>ARM</strong> が 提 供 するすべての C ライブラリと 一 致 します。<br />
• *math.lib は、 math.lib で 終 わる 任 意 のラ イブラ リ パス と 一 致 し ます<br />
( 例 : C:\apps\lib\math\satmath.lib)。<br />
例 えば、 input_section_selector は 以 下 のよ う に 指 定 でき ます。<br />
• +RO は、 すべての RO コードおよびすべての RO データ と マ ッ チングが 行<br />
われる 入 力 セ ク シ ョ ン 属 性 です。<br />
• +RW,+ZI は、 すべての RW コード、 RW データ、 および ZI データ と マ ッ<br />
チングが 行 われる 入 力 セ ク シ ョ ン 属 性 です。<br />
• BLOCK_42 は、 BLOCK_42 という 名 前 のアセンブリファイルのエリアとマッチ<br />
ングが 行 われる 入 力 セクシ ョ ンパターンです。<br />
注<br />
コンパイラは、.text、 .data、 .constdata、 .bss などの 入 力 セクショ ンパ<br />
ターンに よ って 識 別 可 能 なエ リ ア を 生 成 し ます。 ただし、 これらの 名 前<br />
は 今 後 のバージ ョ ンで 変 更 さ れる 可 能 性 があ る ため、 な るべ く 使 用 し な<br />
いで 下 さい。<br />
C または C++ のファ イルに 含 まれる 特 定 の 関 数 または extern データ と の<br />
マ ッ チングを 行 う 必 要 があ る 場 合 には、 以 下 のど ち ら かを 行 って 下 さ<br />
い。<br />
— その 関 数 またはデータを 別 のモジュール 内 にコンパイルし、 その<br />
モジュールのオブジェ ク ト 名 とマッチングを 行 う。<br />
3-20 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
— #pragma arm section または __attribute__ を 使 用 して、 対 象 となる<br />
コー ド やデータ を 含 んでい る セ ク シ ョ ンの 名 前 を 指 定 し ます。 プラ<br />
グマの 詳 細 については、 『コンパイ ラ リ ファレンスガイ ド』 の 「プ<br />
ラグマ」 (ページ 4-62) を 参 照 して 下 さい。<br />
複 数 のマ ッ チングを 記 述 するには、 以 下 の 変 数 を 使 用 し ます。<br />
• m1 と m2 は、 モジ ュールセレ ク タパターンを 表 し ます。<br />
• s1 と s2 は 入 力 セ ク シ ョ ンセレ ク タ を 表 し ます。<br />
複 数 の 一 致 があ る 場 合 、 入 力 セ ク シ ョ ン を 割 り 当 て る 領 域 を、 最 も 限 定 的 な<br />
module_select_pattern と input_section_selector の 組 み 合 わせに 基 づいて 決 定 し<br />
ます。<br />
例 えば、 入 力 セ ク シ ョ ン A が 実 行 領 域 R1 の m1,s1 と 一 致 し、 さ ら に 実 行 領 域<br />
R2 の m2,s2 と も 一 致 する 場 合 は、 以 下 の よ う に 処 理 さ れます。<br />
• m1,s1 が m2,s2 よ り も 限 定 的 であ る 場 合 、 A は R1 に 割 り 当 て られます。<br />
• m2,s2 が m1,s1 よ り も 限 定 的 であ る 場 合 、 A は R2 に 割 り 当 て られます。<br />
• m1,s1 が m2,s2 よ り も 限 定 的 ではな く 、 m2,s2 が m1,s1 よ りも 限 定 的 では<br />
ない 場 合 は、 そのスキ ャ ッ タ ロード の 記 述 にエラーがあ る と 診 断 されま<br />
す。<br />
module_select_pattern と input_section_selector の 最 も 限 定 的 な 組 み 合 わせを 決<br />
定 する ために armlink で 使 用 さ れる シーケ ン スは 以 下 の と お り です。<br />
1. モジュールセレ ク タパターンの 場 合 :<br />
テキス ト 文 字 列 m1 がパターン m2 と 一 致 し、 テキ ス ト 文 字 列 m2 がパ<br />
ターン m1 と 一 致 し ない 場 合 、 m1 は m2 よ り も 限 定 的 です。<br />
2. 入 力 セ ク シ ョ ンセレ ク タ の 場 合 :<br />
• s1 と s2 が 両 方 ともセクション 名 と 一 致 するパターンである 場 合 に<br />
は、 モジ ュールセレ ク タパターン と 同 じ 定 義 が 使 用 されます。<br />
• s1 と s2 の 一 方 が 入 力 セ ク シ ョ ン 名 と 一 致 し、 他 方 が 入 力 セ ク シ ョ<br />
ン 属 性 と 一 致 する 場 合 、 s1 と s2 は 順 序 がな く 、 その 記 述 にエラー<br />
がある と 診 断 されます。<br />
• s1 と s2 の 両 方 が 入 力 セ ク シ ョ ン 属 性 に 一 致 する 場 合 、s1 が s2 より<br />
も 限 定 的 かど う かは、 以 下 の 関 係 に よ っ て 決 定 さ れます。<br />
— ENTRY が RO-CODE、 RO-DATA、 RW-CODE、 RW-DATA のどれよ り も 限 定<br />
的 であ る。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-21<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
— RO-CODE が RO よりも 限 定 的 である。<br />
— RO-DATA が RO よりも 限 定 的 である。<br />
— RW-CODE が RW よりも 限 定 的 である。<br />
— RW-DATA が RW よりも 限 定 的 である。<br />
— セ ク シ ョ ン 属 性 間 には 上 記 以 外 の (s1 が s2 よ り も 限 定 的 であ<br />
る) 関 係 がない。<br />
3. module_select_pattern, input_section_selector の 組 み 合 わせの 場 合 、 以 下<br />
のいずれかが 当 てはま る 場 合 にのみ、 m1,s1 が m2,s2 より 限 定 的 です。<br />
a. s1 が リ テラルの 入 力 セクシ ョ ン 名 (つま り、 パターン 文 字 が 含 ま<br />
れていない 名 前 ) であ り、 s2 が +ENTRY 以 外 の 入 力 セ ク シ ョ ン 属 性<br />
と 一 致 する。<br />
b. m1 が m2 よりも 限 定 的 である。<br />
c. s1 が s2 よりも 限 定 的 である。<br />
条 件 a が 条 件 b と c より 優 先 され、 条 件 b が 条 件 c よ り 優 先 さ れる よ う<br />
に、 条 件 がテス ト されます。<br />
このマッチング 方 式 による 影 響 は 以 下 のとおりです。<br />
• 記 述 は、 フ ァ イ ル 内 に 書 かれた 順 序 に 依 存 し ません。<br />
• 通 常 、 オブジ ェ ク ト の 記 述 が よ り 限 定 的 であ る ほど、 そのオブジ ェ ク ト<br />
に 含 まれてい る 入 力 セ ク シ ョ ンの 記 述 が よ り 限 定 的 にな り ます。<br />
• input_section_selector は 以 下 の 場 合 を 除 いて 検 査 さ れません。<br />
— オブジ ェ ク ト の 選 択 が 確 定 さ れない 場 合 。<br />
— 一 方 のセレ ク タ が 入 力 セ ク シ ョ ンの 名 前 を 具 体 的 に 指 定 し、 も う<br />
一 方 のセレ ク タ が 属 性 に よ って 選 択 する 場 合 。 こ の 場 合 、 明 示 的 な<br />
入 力 セ ク シ ョ ンの 名 前 は、 ENTRY を 除 く どの 属 性 よ り も 限 定 的 であ<br />
り、 1 つのオブジェ ク ト から 1 つの 入 力 セ ク シ ョ ンのみが 選 択 され<br />
ます。 こ の こ と は、 入 力 セ ク シ ョ ンの 名 前 に 関 連 する オブジ ェ ク ト<br />
のセレ ク タが、 属 性 のセレ ク タ よ り 限 定 的 ではない 場 合 にも 当 て<br />
はま り ます。<br />
例 3-5 (ページ 3-23) は、 複 数 の 実 行 領 域 と パターンのマ ッ チングを 示 し てい<br />
ます。<br />
3-22 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
例 3-5 複 数 の 実 行 領 域 とパタ ーンのマ ッ チング<br />
LR_1 0x040000<br />
{<br />
ER_ROM 0x040000<br />
; The startup exec region address is the same<br />
{ ; as the load address.<br />
application.o (+ENTRY) ; The section containing the entry point from<br />
} ; the object is placed here.<br />
ER_RAM1 0x048000<br />
{<br />
application.o (+RO-CODE) ; Other RO code from the object goes here<br />
}<br />
ER_RAM2 0x050000<br />
{<br />
application.o (+RO-DATA) ; The RO data goes here<br />
}<br />
ER_RAM3 0x060000<br />
{<br />
application.o (+RW) ; RW code and data go here<br />
}<br />
ER_RAM4 +0<br />
; Follows on from end of ER_R3<br />
{<br />
*.o (+RO, +RW, +ZI) ; Everything except for application.o goes here<br />
}<br />
}<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-23<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.8 パス 名 の 解 決<br />
スキャッタロード 記 述 ファイルのワイルドカードパターンに 対 して、 パス 名<br />
内 に 検 出 される ス ラ ッ シュ と バッ ク ス ラ ッ シュの 組 み 合 わせ と のマ ッ チング<br />
が 行 われます。 パス を 環 境 変 数 ま たは 複 数 の ソースか ら 取 得 し た 場 合 や、<br />
Windows または Unix プラッ ト フォームで 同 一 のスキャッタロード 記 述 ファイ<br />
ルを 使 用 する 場 合 に、 こ のマ ッ チング 方 法 が 役 立 ち ます。<br />
注<br />
Windows または Unix プラッ ト フォームで 認 識 されるよ うに、 パス 名 にはス<br />
ラ ッ シ ュ を 使 用 する こ と をお 勧 め し ます。<br />
3-24 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
3.9 スキャ ッ タ フ ァ イル 内 の 式 の 評 価<br />
ス キ ャ ッ タ ロー ド 記 述 フ ァ イルには、 式 と し て 指 定 さ れた 数 値 定 数 が 含 まれ<br />
ている こ とがよ く あ り ます。 リ ンカでは、 式 をパ ラ メ ータ と し て 使 用 する、<br />
ScatterAssert というアサート 関 数 も 提 供 されます。 この 式 が TRUE と 評 価 され<br />
ない 場 合 、 エ ラ ー メ ッ セージが 生 成 さ れます。 詳 細 については、 「ScatterAssert<br />
関 数 」 (ページ 3-26) を 参 照 して 下 さい。<br />
3.9.1 式 の 使 用 方 法<br />
式 は、 以 下 の 場 所 で 使 用 でき ます。<br />
• ロー ド 領 域 と 実 行 領 域 base_address<br />
• ロー ド 領 域 と 実 行 領 域 +offset<br />
• ロー ド 領 域 と 実 行 領 域 の max_size<br />
• ALIGN、 FILL、 または PADVALUE キーワードのパラ メータ<br />
• ScatterAssert 関 数 のパ ラ メ ータ<br />
3.9.2 式 の 規 則<br />
式 は 以 下 の 要 素 から 構 成 され、 C での 優 先 順 位 に 従 います。<br />
• 10 進 数 ま たは 16 進 数 値<br />
• 算 術 演 算 子 : +、 -、 /、 *、 ~、 OR、 および AND<br />
OR 演 算 子 と AND 演 算 子 はそれぞれ、 C の 演 算 子 | と & にマップされます。<br />
• 論 理 演 算 子 : LOR、 LAND、 および !<br />
LOR 演 算 子 と LAND 演 算 子 はそれぞれ、 C の 演 算 子 || と && にマップされ<br />
ます。<br />
• 関 係 演 算 子 : =、 および ==<br />
式 が FALSE と 評 価 される とゼロが 返 され、TRUE と 評 価 されるとゼロ 以<br />
外 の 値 が 返 されます。<br />
• 条 件 演 算 子 : Expression ? Expression1 : Expression2<br />
こ の 演 算 子 は、 C の 条 件 演 算 子 と 一 致 し ます。 Expression がゼロ 以 外 の<br />
値 に 評 価 される と Expression1 が 評 価 され、 ゼロに 評 価 される と<br />
Expression2 が 評 価 されます。<br />
• 数 値 を 返 す 関 数 。 詳 細 については、 「 組 み 込 み 関 数 」 (ページ 3-26) を 参<br />
照 して 下 さい。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-25<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
すべての 演 算 子 の 意 味 と 優 先 順 位 が C の 対 応 する 演 算 子 と 一 致 し ます。<br />
式 には 大 文 字 と 小 文 字 の 区 別 がな く 、 明 瞭 にする ために 丸 括 弧 を 使 用 で き ま<br />
す。<br />
3.9.3 組 み 込 み 関 数<br />
実 行 ア ド レ スに 関 連 する 関 数 は、 base_address または +offset の 値 を 指 定 する<br />
場 合 にのみ 使 用 可 能 です。 これら の 関 数 は、 表 3-2 に 示 す リ ンカ 定 義 のシンボ<br />
ルの 組 み 合 わせにマ ッ プ されます。<br />
表 3-2 実 行 ア ド レスに 関 連 する 関 数<br />
関 数<br />
ImageBase(region_name)<br />
リ ン カ 定 義 のシンボル 値<br />
Image$$region_name$$Base<br />
ImageLength(region_name) Image$$region_name$$Length +<br />
Image$$region_name$$ZI$$Length<br />
ImageLimit(region_name) Image$$region_name$$Base +<br />
Image$$region_name$$Length +<br />
Image$$region_name$$ZI$$Length<br />
領 域 関 連 の リ ン カシンボルの 詳 細 については、 『リンカユーザガイド』 の<br />
表 4-1 (ページ 4-3) を 参 照 して 下 さい。<br />
パラ メータ region_name には、 ロー ド 領 域 名 ま たは 実 行 領 域 名 のいずれかを 指<br />
定 でき ます。 前 方 参 照 は 使 用 で き ません。 region_name は、 既 に 定 義 されている<br />
ロー ド 領 域 ま たは 実 行 領 域 のみを 参 照 で き ます。 詳 細 については、 例 3-7<br />
(ページ 3-28) を 参 照 して 下 さい。<br />
3.9.4 ScatterAssert 関 数<br />
ScatterAssert(expression) 関 数 は、 最 上 位 ま たはロー ド 領 域 内 で 使 用 で き ます。<br />
こ の 関 数 は、 リ ン ク の 完 了 後 に 評 価 さ れ、 expression が FALSE に 評 価 された<br />
場 合 はエ ラー メ ッ セージが 生 成 さ れます。 例 3-10 (ページ 3-29) は、<br />
ScatterAssert 関 数 を 使 用 し て、 領 域 の max_size で 許 可 されている よ り も 複 雑<br />
なサイズチェ ッ クを 記 述 する 方 法 を 示 しています。<br />
3-26 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
ロードアドレスに 関 連 する 関 数 は、 ScatterAssert 関 数 内 でのみ 使 用 で き ます。<br />
これらの 関 数 は、 表 3-3 に 示 す 3 つの リ ンカ 定 義 のシンボル 値 にマ ッ プ され<br />
ます。<br />
表 3-3 ロー ド ア ド レ スに 関 連 する 関 数<br />
関 数<br />
LoadBase(region_name)<br />
LoadLength(region_name)<br />
LoadLimit(region_name)<br />
リ ン カ 定 義 のシンボル 値<br />
Load$$region_name$$Base<br />
Load$$region_name$$Length<br />
Load$$region_name$$Limit<br />
パラ メータ region_name には、 ロー ド 領 域 名 ま たは 実 行 領 域 名 のいずれかを 指<br />
定 でき ます。 前 方 参 照 は 使 用 でき ません。 region_name は、 既 に 定 義 さ れてい る<br />
ロー ド 領 域 ま たは 実 行 領 域 のみを 参 照 で き ます。 詳 細 については、 例 3-7<br />
(ページ 3-28) を 参 照 して 下 さい。<br />
3.9.5 シンボルに 関 連 する 関 数<br />
シンボルに 関 連 する 関 数 defined(global_symbol_name) は、 global_symbol_name が<br />
定 義 さ れていない 場 合 はゼ ロ を 返 し、 定 義 さ れてい る 場 合 はゼ ロ 以 外 の 値 を<br />
返 します。<br />
3.9.6 サンプル<br />
例 3-6 式 に 関 する 最 大 サイズの 指 定<br />
LR1 0x8000 (2 * 1024)<br />
{<br />
ER1 +0 (1 * 1024)<br />
{<br />
*(+RO)<br />
}<br />
ER2 +0 (1 * 1024)<br />
{<br />
*(+RW +ZI)<br />
}<br />
}<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-27<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
例 3-7 実 行 領 域 の 後 に 別 の 実 行 領 域 を 配 置 する 例<br />
LR1 0x8000<br />
{<br />
ER1 0x100000<br />
{<br />
*(+RO)<br />
}<br />
}<br />
LR2 0x100000<br />
{<br />
ER2 (ImageLimit(ER1))<br />
{<br />
*(+RW +ZI)<br />
}<br />
}<br />
; Place ER2 after ER1 has finished<br />
例 3-8 シンボルの 存 在 の 有 無 に 基 づいてベースア ド レスを 条 件 指 定 する 例<br />
LR1 0x8000<br />
{<br />
ER1 (defined(version1) ? 0x8000 : 0x10000)<br />
}<br />
{<br />
*(+RO)<br />
}<br />
ER2 +0<br />
{<br />
*(+RW +ZI)<br />
}<br />
; Base address is 0x8000<br />
; if version1 is defined<br />
; 0x10000 if not<br />
例 3-9 (ページ 3-29) では、 厳 密 にパ ッ ク さ れた 実 行 領 域 をページ 境 界 の 実 行<br />
アドレスにコピーするために、 プリプロセッサマクロと 式 を 組 み 合 わせて 使<br />
用 しています。 ALIGN ス キ ャ ッ タ ロー ド キーワー ド を 使 用 する と 、 ロー ド ア ド<br />
レス ER2 および ER3 と 実 行 ア ド レ スが 整 列 さ れます。<br />
3-28 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
例 3-9 ロー ド 空 間 内 に 厳 密 にパ ッ ク し た 状 態 で、 実 行 空 間 内 でベースア ド レ スを 整 列<br />
する 例<br />
#! armcc -E<br />
#DEFINE START_ADDRESS 0x100000<br />
#DEFINE PAGE_ALIGNMENT 0x100000<br />
#DEFINE MY_ALIGN(address, alignment) ((address +<br />
(alignment-1)) AND ~(alignment-1))<br />
LR1 0x8000<br />
{<br />
ER0 +0<br />
{<br />
*(InRoot$$Sections)<br />
}<br />
ER1 START_ADDRESS<br />
{<br />
file1.o(*)<br />
}<br />
ER2 MY_ALIGN(ImageLimit(ER1), PAGE_ALIGNMENT)<br />
{<br />
file2.o(*)<br />
}<br />
ER3 MY_ALIGN(ImageLimit(ER2), PAGE_ALIGNMENT)<br />
{<br />
file3.o(*)<br />
}<br />
}<br />
例 3-10 ScatterAssert を 使 用 し て 複 数 の 領 域 のサイズをチ ェ ッ クする 例<br />
LR1 0x8000<br />
{<br />
ER0 +0<br />
{<br />
*(+RO)<br />
}<br />
ER1 +0<br />
{<br />
file1.o(+RW)<br />
}<br />
ER2 +0<br />
{<br />
file2.o(+RW)<br />
}<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 3-29<br />
Non-Confidential
スキャ ッ タ ロー ド 記 述 フ ァ イルの 正 式 な 構 文<br />
ScatterAssert((LoadLength(ER1) + LoadLength(ER2)) < 0x1000)<br />
; LoadLength is compressed size<br />
ScatterAssert((ImageLength(ER1) + ImageLength(ER2)) < 0x2000)<br />
; ImageLength is uncompressed size<br />
}<br />
ScatterAssert(ImageLength(LR1) < 0x3000) ; Check uncompressed size of LoadRegion<br />
3-30 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
第 4 章<br />
BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能<br />
ファイル<br />
本 章 では、 <strong>ARM</strong> ® リンカ armlink が BPABI および SysV の 共 有 ラ イブラ リ と 実<br />
行 可 能 フ ァ イルをサポー ト する 仕 組 みを 説 明 し ます。 以 下 のセ ク シ ョ ンか ら<br />
構 成 さ れています。<br />
• 「BPABI について」 (ページ 4-2)<br />
• 「BPABI がサポー ト しているプラ ッ ト フォーム」 (ページ 4-3)<br />
• 「すべての BPABI モデルに 共 通 する 概 念 」 (ページ 4-4)<br />
• 「SysV モデルの 使 用 」 (ページ 4-8)<br />
• 「ベア メ タルモデル と DLL 類 似 モデルの 使 用 」 (ページ 4-11)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 4-1<br />
Non-Confidential
BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
4.1 BPABI について<br />
多 く の 組 み 込 みシ ス テムは、 オペレーテ ィ ングシ ス テム を 使 用 し てデバイ ス<br />
の リ ソ ース を 管 理 し ています。 ほとんどの 場 合 、 これはアプリケーションと<br />
緊 密 に 統 合 さ れる リアルタイムオペレーティングシステム (RTOS) を 含 む 1<br />
つの 大 容 量 実 行 可 能 フ ァ イルです。 このほか、 さらに 複 雑 なオペレーテ ィ ン<br />
グシステム (OS) はプラ ッ ト フォーム OS と 呼 ばれ、 <strong>ARM</strong> Linux などがその<br />
例 です。 これらはアプリケーショ ンや 共 有 ライブラ リ をオンデマンドでロー<br />
ドする 機 能 を 備 えています。<br />
プラッ ト フォーム OS でアプ リ ケーシ ョ ンを 実 行 した り 共 有 ラ イブラ リ を 使<br />
用 したりするには、 プラ ッ ト フォームの ABI と <strong>ARM</strong> アーキテクチャの ABI<br />
に 準 拠 する 必 要 があ り ます。 こ れには、 リ ン カの 出 力 、 例 えばカ ス タ ム フ ァ<br />
イル 形 式 の 大 幅 な 変 更 も 含 まれます。 このよ うなさまざまなプラッ ト フォー<br />
ムをサポートするため、 <strong>ARM</strong> アーキテクチャの ABI は BPABI を 提 供 してい<br />
ます。<br />
BPABI はプラ ッ ト フ ォーム ABI を 派 生 で き る 基 本 標 準 を 提 供 し ています。 リ<br />
ンカは、 出 力 と して BPABI に 準 拠 する ELF イ メ ージや 共 有 ラ イ ブ ラ リ を 生 成<br />
します。 ポス ト リ ンカと 呼 ばれるプラ ッ ト フォーム 固 有 のツールは、 この<br />
ELF 出 力 フ ァ イ ルを、 プ ラ ッ ト フ ォーム OS でロード 可 能 なファイルに 変 換<br />
します。 ポス ト リ ンカツールはプラッ ト フォーム OS ベンダから 提 供 されてい<br />
ます。 図 4-1 は BPABI ツールの 流 れを 示 しています。<br />
Tool: compiler linker postlinker<br />
Format:<br />
.c .o<br />
.axf<br />
bin/exe<br />
Language ABI BPABI<br />
Platform<br />
binary<br />
図 4-1 BPABI ツールの 流 れ<br />
4-2 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
BPABI および SysV の 共 有 ライブラリ と 実 行 可 能 フ ァイル<br />
4.2 BPABI がサポー ト し ている プ ラ ッ ト フ ォーム<br />
BPABI は 共 有 ラ イブ ラ リ の 種 類 によ って 次 の 3 通 りのプラッ トフォームモデ<br />
ルを 定 義 し ています。<br />
ベア メ タル ベア メ タルモデルは、 オフ ラ インのダイナ ミ ッ ク ローダまたは<br />
単 純 なモジ ュールローダ 用 に 設 計 さ れています。 モジュール 間 の<br />
参 照 は、 その 他 の 補 助 構 造 体 な し に 直 接 ローダに よ って 解 決 さ<br />
れます。<br />
DLL DLL 類 似 モデルは、 ロー ド と ラ ン タ イ ムの 効 率 性 と 引 き 換 えに<br />
動 的 ラ イ ブ ラ リ と 静 的 ラ イ ブ ラ リ の 間 の 透 過 性 を 犠 牲 に し ます。<br />
SysV SysV モデルは 動 的 ライブラ リ と 静 的 ライブラ リの 間 の 違 いをマ<br />
スクします。 <strong>ARM</strong> Linux はこの 形 式 を 使 用 しています。<br />
4.2.1 リンカの BPABI サポー ト<br />
<strong>ARM</strong> リンカは 3 種 類 の BPABI モデルすべてをサポー ト し、 以 下 のこ と ができ<br />
ます。<br />
• オブジェ ク ト と ラ イブラ リ のコ レ クシ ョ ンを 次 の 要 素 に リ ン クする。<br />
— ベア メ タル 実 行 可 能 イ メ ージ<br />
— BPABI DLL または SysV の 共 有 オブジェ ク ト<br />
— BPABI または SysV の 実 行 可 能 フ ァ イル<br />
4.2.2 リンカの <strong>ARM</strong> Linux サポー ト<br />
リンカが 生 成 する SysV の 実 行 可 能 フ ァ イル と 共 有 ラ イ ブ ラ リ は <strong>ARM</strong> Linux<br />
と 互 換 性 があ るので、 別 途 ポ ス ト リ ン ク 手 順 を 実 行 する 必 要 はあ り ません。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 4-3<br />
Non-Confidential
BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
4.3 すべての BPABI モデルに 共 通 する 概 念<br />
リ ンカ を 使 用 する と 、 BPABI の 共 有 ライブラ リ を 構 築 し、 共 有 ライブラ リに<br />
オブジェ ク ト を リ ン クでき ます。 このセクショ ンでは、 シンボルのインポー<br />
ト 、 エ ク ス ポー ト 、 バージ ョ ン 管 理 、 可 視 性 について 説 明 し ます。 これらは、<br />
すべての BPABI モデルに 共 通 する 概 念 です。<br />
4.3.1 シンボルのインポート とエクスポート<br />
従 来 のリンクでは、 リンカがアドレスを 提 供 できるように、 すべてのシンボ<br />
ルを リ ン ク 時 に 定 義 する 必 要 があ り ま し た。 ダイナミ ック リンクをサポート<br />
しているプラッ トフォームでは、 シンボルのバインディングをロード 時 か、<br />
場 合 に よ っては 実 行 時 まで 遅 らせる こ と がで き ます。 リンカはこれらのシン<br />
ボルをダイナ ミ ッ ク シンボルテーブルに 配 置 し ます。<br />
ダイナミ ックシンボルテーブルは、 次 の 2 通 りの 方 法 で 制 御 できます。<br />
• ELF シンボルの 可 視 性 プ ロパテ ィ か ら 内 容 を 推 論 する 自 動 的 な 規 則<br />
• ス テア リ ング フ ァ イルに 存 在 する 手 動 のデ ィ レ ク テ ィ ブ<br />
これらの 規 則 は SysV モデルでは 若 干 異 な り ます。 詳 細 については、 「ダイナ<br />
ミ ッ ク シンボルテーブルの 自 動 規 則 」 (ページ 4-8) を 参 照 して 下 さい。<br />
4.3.2 シンボルの 可 視 性<br />
各 シンボルには 可 視 性 プ ロパテ ィ があ り ます。 シンボルが 参 照 の 場 合 、 可 視<br />
性 は、 リ ンカがそのシンボルの 定 義 に 使 用 でき る 定 義 を 制 御 し ます。 シンボ<br />
ルが 定 義 の 場 合 、 可 視 性 は、 そのシンボルが 現 在 のモジ ュールの 外 か ら 見 え<br />
るかど うかを 制 御 します。<br />
4-4 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
BPABI および SysV の 共 有 ライブラリ と 実 行 可 能 フ ァイル<br />
次 の 4 つの 可 視 性 オプシ ョ ンがあ り ます。<br />
シンボル 参 照 定 義<br />
表 4-1 シンボルの 可 視 性<br />
STV_DEFAULT<br />
STV_PROTECTED<br />
STV_HIDDEN<br />
STV_INTERNAL<br />
シンボルは 共 有 オブジ ェ ク ト の 定 義 に<br />
バインドできます。<br />
シンボルはモジ ュール 内 で 解 決 する 必<br />
要 があ り ます。<br />
シンボルはモジ ュール 内 で 解 決 する 必<br />
要 があ り ます。<br />
シンボルはモジュールの 外 から 見 えるよ う<br />
にでき ます。 別 のモジ ュールか ら の 定 義 に<br />
よってダイナミ ック リンカでプリエンプ<br />
ティブにできます。<br />
シンボルはモジュールの 外 から 見 えるよ う<br />
にでき ます。 別 のモジ ュールか ら の 定 義 に<br />
よ って 実 行 時 にプ リ エンプテ ィ ブにで き ま<br />
せん。<br />
シンボルはモジュールの 外 からは 見 えませ<br />
ん。<br />
シンボルのプリエンプトは SysV システムで 最 も 一 般 的 です。 SysV ELF 仕 様 書<br />
のダイナ ミ ッ ク リ ン クのセクシ ョ ンを 参 照 して 下 さい。<br />
シンボルのプリエンプトは BPABI の DLL 類 似 の 実 装 で 起 こ る こ と があ り ま<br />
す。 プラッ ト フォームのオーナーがこの 動 作 を 定 義 します。 詳 細 については、<br />
特 定 のプ ラ ッ ト フ ォームのマニ ュ アルを 参 照 し て 下 さ い。<br />
シンボルに 可 視 性 を 設 定 する 方 法 の 詳 細 については、 以 下 を 参 照 して 下 さい。<br />
• 『アセンブラガイ ド』 の 「EXPORT、 GLOBAL」 (ページ 7-92)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--dllexport_all,<br />
--no_dllexport_all」 (ページ 2-55)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--dllimport_runtime,<br />
--no_dllimport_runtime」 (ページ 2-55)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--hide_all,<br />
--no_hide_all」 (ページ 2-77)<br />
4.3.3 自 動 的 な イ ンポー ト と エ ク スポー ト<br />
リ ンカは 自 動 的 にシンボルを イ ンポー ト し エ ク ス ポー ト で き ます。 この 動 作<br />
は、 出 力 が 実 行 可 能 フ ァ イルまたは 共 有 ラ イブ ラ リ で、 プ ラ ッ ト フ ォームモ<br />
デルが SysV の 場 合 、 シンボルの 可 視 性 の 組 み 合 わせに 依 存 し ます。 これは、<br />
使 用 し てい る リ ン ク モデルの 種 類 に よ って 異 な り ます。 詳 細 については、<br />
「SysV モデルの 使 用 」 (ページ 4-8) および「ベア メ タルモデル と DLL 類 似 モ<br />
デルの 使 用 」 (ページ 4-11) を 参 照 して 下 さい。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 4-5<br />
Non-Confidential
BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
4.3.4 手 動 のイ ンポー ト と エ ク スポー ト<br />
リンカのステアリングファイルを 使 用 して、 動 的 なインポートとエクスポー<br />
ト を 手 動 で 制 御 で き ます。 ダ イ ナ ミ ッ ク シンボルテーブルの 内 容 を 制 御 する<br />
ときに 使 用 できるコマンドは 3 つあ り ます。 詳 細 については、 以 下 の 項 目 を 参<br />
照 して 下 さい。<br />
• 「EXPORT」 (ページ 2-74)<br />
• 「IMPORT」 (ページ 2-77)<br />
• 「REQUIRE」 (ページ 2-81)<br />
4.3.5 シ ンボルのバージ ョ ン 管 理<br />
シンボルのバージ ョ ン 管 理 は、 共 有 ラ イ ブ ラ リ の イ ン タ フ ェース を 厳 密 に 制<br />
御 する 方 法 です。<br />
バージ ョ ン 管 理 されているシンボルのある 共 有 ライブラ リからシンボルがイ<br />
ンポート される と、 リ ンカはシンボルの 最 新 の (デフォルト) バージ ョ ンに<br />
バインド します。 プラッ ト フォーム OS がシンボルのバージ ョ ンを 解 決 する<br />
ロー ド 時 ま たは 実 行 時 には、 さ ら に 新 し いバージ ョ ンが 使 用 可 能 な 場 合 で も、<br />
常 に リ ンカによ って 選 択 されたバージ ョ ンに 解 決 されます。 このプロセスは<br />
自 動 です。<br />
シンボルを 実 行 可 能 フ ァ イルま たは 共 有 ラ イ ブ ラ リ か ら エ ク ス ポー ト する と<br />
きに、 バージョ ンを 与 えるこ とができます。 リンカは、バージョンが 共 有 オ<br />
ブジェ ク ト 名 (--soname で 設 定 ) か ら 派 生 する 暗 黙 的 なシンボルバージ ョ ン<br />
管 理 、 または、 バージ ョ ンの 正 確 な 定 義 にス ク リ プ ト が 使 用 される 明 示 的 な<br />
シンボルバージ ョ ン 管 理 をサポート しています。 詳 細 については、 『リンカ<br />
ユーザガ イ ド』 の 「シンボルのバージ ョ ン 管 理 」 (ページ 4-17) を 参 照 して<br />
下 さい。<br />
4-6 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
BPABI および SysV の 共 有 ライブラリ と 実 行 可 能 フ ァイル<br />
4.3.6 RW 圧 縮<br />
圧 縮 さ れた RW データ 用 の 圧 縮 解 除 ルーチンは、 <strong>ARM</strong> C ライブラリの 起 動<br />
コードに 緊 密 に 統 合 されています。 プラッ ト フォーム OS でアプ リ ケーシ ョ ン<br />
を 実 行 する 場 合 は、 この 機 能 をプラ ッ ト フォームまたはプラ ッ ト フォームラ<br />
イブラ リで 提 供 する 必 要 があり ます。 BPABI または SysV ファイルのリンク 時<br />
は、 圧 縮 解 除 ルーチンがないため、 デフ ォル ト では RW 圧 縮 はオフになって<br />
います。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 4-7<br />
Non-Confidential
BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
4.4 SysV モデルの 使 用<br />
コマンドラインオプション<br />
リ ンカ を 使 用 する と 、 SysV 共 有 ラ イ ブ ラ リ のビル ド と リ ン ク がで き ます。 ま<br />
た、 SysV 実 行 可 能 フ ァ イルの 作 成 も で き ます。 このセクショ ンでは、 ダイナ<br />
ミ ッ クシンボルテーブルの 規 則 、 アドレシングモード、 およびスレッ ド ロー<br />
カル 記 憶 域 モデルについて 説 明 し ます。<br />
表 4-2 SysV サポー ト を 有 効 にする<br />
armlink --sysv<br />
armlink --sysv --shared<br />
SysV 実 行 可 能 フ ァ イルを 生 成 する には<br />
SysV 共 有 ラ イ ブ ラ リ を 生 成 する には<br />
4.4.1 メモリモデル<br />
SysV ファイルには、 一 般 的 な ELF 仕 様 に 記 述 さ れてい る 標 準 メ モ リ モデルが<br />
入 っています。 SysV 形 式 を 使 用 する プ ラ ッ ト フ ォームオペレーテ ィ ングシ ス<br />
テムは 複 数 あり ます ( 例 えば <strong>ARM</strong> Linux)。<br />
SysV メモリモデルには 設 定 オプションがありません。 リンカは、 コマンドラ<br />
イ ンで 指 定 する ス キ ャ ッ タ フ ァ イ ルを 無 視 し、 一 般 的 な ELF 仕 様 に よ って 定<br />
義 された 標 準 メモリマップを 使 用 します。<br />
4.4.2 ダ イナ ミ ッ ク シンボルテーブルの 自 動 規 則<br />
以 下 の 規 則 が 適 用 さ れます。<br />
Executable 未 定 義 のシンボル 参 照 は 未 定 義 のシンボルエ ラーです。<br />
可 視 性 が STV_HIDDEN または STV_INTERNAL のグローバルシンボルは、<br />
ダイナミ ックシンボルテーブルにエクスポート されません。<br />
可 視 性 が STV_PROTECTED または STV_DEFAULT のグローバルシンボル<br />
は、--export_all を 設 定 しない 限 り、 ダイナ ミ ッ クシンボルテーブ<br />
ルにエク スポー ト されません。<br />
共 有 ラ イ ブ ラ リ<br />
可 視 性 が STV_DEFAULT の 未 定 義 のシンボル 参 照 は イ ンポー ト さ れ<br />
たと 見 なされ、 ダイナミ ックシンボルテーブルに 配 置 されます。<br />
STV_DEFAULT の 可 視 性 がない 未 定 義 のシンボル 参 照 は、 未 定 義 の<br />
シンボルエラーです。<br />
4-8 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
BPABI および SysV の 共 有 ライブラリ と 実 行 可 能 フ ァイル<br />
可 視 性 が STV_HIDDEN または STV_INTERNAL のグローバルシンボルは、<br />
ダイナミ ックシンボルテーブルにエクスポート されません。<br />
注<br />
再 配 置 に 必 要 な STV_HIDDEN または STV_INTERNAL グローバルシンボ<br />
ルはダ イナ ミ ッ ク シンボルテーブルに 配 置 でき ますが、 リ ンカ<br />
がローカルシンボルに 変 更 して、 共 有 ライブラ リ 外 からアクセ<br />
スできないよ うにします。<br />
可 視 性 が STV_PROTECTED または STV_DEFAULT のグローバルシンボル<br />
は、 常 にダ イナ ミ ッ ク シンボルテーブルにエ ク スポー ト されま<br />
す。<br />
シンボル 定 義<br />
SysV と glibc と の 互 換 性 を 向 上 させる ために、 こ れら のシンボルが 参 照 さ れ<br />
ている 場 合 は リ ンカがこれらを 定 義 し ます。<br />
• __init_array_start<br />
• __init_array_end<br />
• __fini_array_start<br />
• __fini_array_end<br />
• __exidx_start<br />
• __exidx_end<br />
4.4.3 アドレシングモード<br />
SysV には、 プログラムおよびインポート されたデータやコードにアクセスす<br />
るためのモデルが 定 義 されています。 リンカは 必 要 なプロシージャ リ ンク<br />
テーブル (PLT) セクシ ョ ンとグローバルオフセッ トテーブル (GOT) セク<br />
シ ョ ン を 自 動 生 成 し ます。<br />
位 置 に 依 存 し ない コー ド<br />
SysV 共 有 ラ イ ブ ラ リ は、 ほ と んどの 場 合 、--apcs=/fpic コンパイラコマンドラ<br />
イ ンオプシ ョ ン を 使 用 し て、 位 置 に 依 存 し ない コー ド で コ ンパイル さ れます。<br />
詳 細 については、 『コンパイ ラ リ ファレンスガイ ド』 の<br />
「--apcs=qualifer...qualifier」 (ページ 2-4) を 参 照 して 下 さい。<br />
共 有 ラ イ ブ ラ リ が 位 置 に 依 存 し ない こ と を 宣 言 する 場 合 は、 PLT セクション<br />
と GOT セクションの 構 造 に 影 響 するため、リンカコマンドラインオプション<br />
--fpic も 使 用 する 必 要 があり ます。<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 4-9<br />
Non-Confidential
BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
注<br />
デフォル ト では、 コマン ド ラ インオプシ ョ ン --shared を --fpic オプシ ョ ンな<br />
し で 指 定 する と 、 リ ン カでエ ラー メ ッ セージが 生 成 さ れます。 位 置 依 存 の 共<br />
有 ラ イ ブ ラ リ を 作 成 する 場 合 は、--diag_suppress=6403 を 使 用 してエラーメ ッ<br />
セージをオフにでき ます。<br />
4.4.4 スレ ッ ド ローカル 記 憶 域<br />
リンカは <strong>ARM</strong> Linux ス レ ッ ド ローカル 記 憶 域 モデルをサポー ト し ています。<br />
リ ンカの 実 装 の 詳 細 については、 『ABI for the <strong>ARM</strong> Architecture』<br />
(ABI-addenda) の 正 誤 表 および 追 捕 表 を 参 照 し て 下 さ い。<br />
4.4.5 関 連 する リ ン カ コ マン ド ラ イ ンオプシ ョ ン<br />
• 「--fpic」 (ページ 2-28)<br />
• 「--dynamic_debug」 (ページ 2-19)<br />
• 「--dynamiclinker=name」 (ページ 2-19)<br />
• 「--[no_]export_all」 (ページ 2-23)<br />
• 「--linux_abitag=version_id」 (ページ 2-40)<br />
• 「--runpath=pathlist」 (ページ 2-56)<br />
• 「--shared」 (ページ 2-60)<br />
• 「--sysv」 (ページ 2-66)<br />
コ マン ド ラ イ ンデフ ォル ト への 変 更<br />
<strong>ARM</strong> <strong>RealView</strong> ® <strong>Compilation</strong> <strong>Tools</strong> ツールチェーンは、C および C++ のシステム<br />
ライブラリを 含 む 共 有 ライブラリを 提 供 していません。 SysV サポー ト 所 期 の<br />
使 用 モデルは、 プ ラ ッ ト フ ォームに 付 属 する シ ス テム ラ イ ブ ラ リ の 使 用 です。<br />
例 えば、 <strong>ARM</strong> Linux では、 これは libc.so です。<br />
libc.so を 使 用 する ために、 リ ン カはデフ ォル ト の 動 作 に 以 下 の 変 更 を 適 用 し<br />
ます。<br />
• --no_ref_cpp_init を 設 定 して <strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> C++ 初 期 化 コー<br />
ドが 含 まれないよ うにする<br />
• リ ンカが 必 要 なシンボルを 定 義 し て libc.so との 互 換 性 を 確 実 にする<br />
• --force_so_throw を 設 定 して、 リ ンカに 例 外 テーブルを 保 持 させる<br />
4-10 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
BPABI および SysV の 共 有 ライブラリ と 実 行 可 能 フ ァイル<br />
4.5 ベアメ タルモデルと DLL 類 似 モデルの 使 用<br />
コマンドラインオプション<br />
このセクショ ンでは、 リンカの BPABI 仕 様 のサポー ト について 説 明 し ます。<br />
特 定 のプ ラ ッ ト フ ォーム OS のアプ リ ケーシ ョ ンや DLL を 開 発 している 場 合 、<br />
プラ ッ ト フォームのマニュアルと 併 せて 以 下 の 情 報 を 使 用 する 必 要 があ り ま<br />
す。 プラッ ト フォーム OS を 実 装 している 場 合 は、 BPABI 仕 様 と 併 せて 以 下 の<br />
情 報 を 使 用 する 必 要 があ り ます。<br />
表 4-3 BPABI サポー ト を 有 効 にする<br />
armlink --bpabi<br />
armlink --bpabi --dll<br />
BPABI の 実 行 可 能 フ ァ イルを 生 成 する には<br />
BPABI の DLL を 生 成 する には<br />
4.5.1 メモリモデル<br />
BPABI ファイルには、 BPABI 仕 様 に 記 述 さ れてい る 標 準 メ モ リ モデルが 入 っ<br />
ています。 --bpabi コマンド ラインオプショ ンを 使 用 して、 リ ンカはこのモデ<br />
ルを 自 動 的 に 適 用 し、 コ マン ド ラ イ ンで 指 定 する ス キ ャ ッ タ ロー ド 記 述 フ ァ<br />
イルをすべて 無 視 し ます。 これは 次 のイ メージレイアウ トに 相 当 します。<br />
LR_1 <br />
{<br />
ER_RO +0<br />
{<br />
*(+RO)<br />
}<br />
}<br />
LR_2 <br />
{<br />
ER_RW +0<br />
{<br />
*(+RW)<br />
}<br />
ER_ZI +0<br />
{<br />
*(+ZI)<br />
}<br />
}<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 4-11<br />
Non-Confidential
BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
メモリモデルのカスタマイズ<br />
オプシ ョ ン --ropi を 指 定 する と、LR_1 は 位 置 非 依 存 と し てマー ク さ れます。 そ<br />
れと 同 様 に、 オプション --rwpi を 指 定 する と 、 LR_2 は 位 置 非 依 存 と し てマー<br />
クされます。<br />
注<br />
デフォル ト 値 の 0x8000 と 0 がプラ ッ ト フォームに 適 さない 可 能 性 があるので、<br />
ほ と んどの 場 合 は、 それぞれに --ro-base スイッチと --rw-base スイッチを 指 定<br />
する 必 要 があ り ます。 これらのア ド レ スは、 イ メ ージが 実 行 時 に 再 配 置 され<br />
る 実 際 のアド レスを 反 映 している 必 要 はあ り ません。<br />
詳 細 については、 以 下 のサブセ ク シ ョ ン を 参 照 し て 下 さ い。<br />
• 「--ropi」 (ページ 2-56)<br />
• 「--ro_base=address」 (ページ 2-55)<br />
• 「--rosplit」 (ページ 2-56)<br />
• 「--rwpi」 (ページ 2-57)<br />
• 「--rw_base=address」 (ページ 2-57)<br />
4.5.2 必 須 シンボルのバージ ョ ン 管 理<br />
BPABI DLL 類 似 モデルは 静 的 なバイ ンデ ィ ングを 必 要 と し ます。 これは、 ポ<br />
ストリンカが BPABI の DLL 内 のシンボ リ ッ ク 情 報 を 変 換 して、 序 数 のインデ<br />
クスが 付 いているテーブルをインポートまたはエクスポートする 可 能 性 があ<br />
るからです。 その 場 合 、 実 行 時 にシンボルを 検 索 する こ と は 不 可 能 です。<br />
シンボルバージ ョ ン 管 理 の 使 用 によって BPABI で 静 的 バイ ンデ ィ ングが 実 行<br />
されます。 BPABI ファイルのデフォルトでは、 コマンドラインオプション<br />
--symver_soname はオンになっています。 つま り、 エクスポート されたシンボ<br />
ルはすべて、 DLL の 名 前 に 基 づいてバージ ョ ンが 与 え られます。<br />
詳 細 については、 以 下 のサブセ ク シ ョ ン を 参 照 し て 下 さ い。<br />
• 「--soname=name」 (ページ 2-61)<br />
• 「--symver_script=file」 (ページ 2-65)<br />
• 「--symver_soname」 (ページ 2-66)<br />
• 『リンカユーザガイド』 の 「シンボルのバージ ョ ン 管 理 」 (ページ 4-17)<br />
4-12 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
BPABI および SysV の 共 有 ライブラリ と 実 行 可 能 フ ァイル<br />
4.5.3 ダ イナ ミ ッ ク シンボルテーブルの 自 動 規 則<br />
こ のセ ク シ ョ ンでは、 実 行 可 能 フ ァ イル と DLL のシンボルテーブルの 規 則 に<br />
ついて 説 明 し ます。<br />
実 行 可 能 フ ァ イル<br />
未 定 義 のシンボル 参 照 は 未 定 義 のシンボルエ ラーです。<br />
可 視 性 が STV_HIDDEN または STV_INTERNAL のグローバルシンボルは、 ダイナ ミ ッ<br />
クシンボルテーブルにエクスポート されません。<br />
可 視 性 が STV_PROTECTED または STV_DEFAULT のグローバルシンボル<br />
は、--export_all を 設 定 しない 限 り、 ダイナ ミ ッ クシンボルテーブルにエク ス<br />
ポー ト されません。 詳 細 については、 「--[no_]export_all」 (ページ<br />
2-23) を 参 照 して 下 さい。<br />
DLL<br />
未 定 義 のシンボル 参 照 は 未 定 義 のシンボルエ ラーです。<br />
可 視 性 が STV_HIDDEN または STV_INTERNAL のグローバルシンボルは、 ダイナ ミ ッ<br />
クシンボルテーブルにエクスポート されません。<br />
注<br />
再 配 置 に 必 要 な STV_HIDDEN または STV_INTERNAL グローバルシンボルはダイナ<br />
ミックシンボルテーブルに 配 置 できますが、 リンカがローカルシンボルに 変<br />
更 して、 共 有 ライブラ リ 外 からアクセスできないよ うにします。<br />
可 視 性 が STV_PROTECTED または STV_DEFAULT のグローバルシンボルは、 常 にダイ<br />
ナミックシンボルテーブルにエクスポートされます。<br />
4.5.4 アドレシングモード<br />
ベア メ タルモデルと DLL 類 似 BPABI モデルと の 主 な 違 いは、 イ ンポー ト し た<br />
自 分 のプ ロ グ ラ ム コー ド と データへのア ク セスに 使 用 さ れる ア ド レ シング<br />
モード です。 BPABI 仕 様 のカテゴ リ に 対 応 する 次 の 4 つのオプシ ョ ンがあ り<br />
ます。<br />
• なし<br />
• 直 接 参 照<br />
• 間 接 参 照<br />
• 相 対 静 的 ベース ア ド レ ス 参 照<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 4-13<br />
Non-Confidential
BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
必 要 なア ド レ シングモー ド の 選 択 は、 以 下 の コ マン ド ラ イ ンオプシ ョ ンで 制<br />
御 されます。<br />
• 「--pltgot=type」 (ページ 2-47)<br />
• 「--pltgot_opts=mode」 (ページ 2-48)<br />
4.5.5 C++ 初 期 化<br />
DLL は、 静 的 コ ン ス ト ラ ク タ の 初 期 化 を、 SHT_INIT_ARRAY の 特 殊 なセ ク シ ョ ン<br />
タイプが 与 えられているイニシャライザのテーブルを 使 用 することによって<br />
サポー ト しています。 これらのイニシャライザには、 タイプ R_<strong>ARM</strong>_TARGET1 か<br />
ら、 初 期 化 を 実 行 する シンボルへの 再 配 置 が 含 まれています。<br />
ELF ABI 仕 様 は、R_<strong>ARM</strong>_TARGET1 を 相 対 形 式 ま たは 絶 対 形 式 と し て 記 述 し ていま<br />
す。<br />
<strong>ARM</strong> C ラ イ ブ ラ リ は 相 対 形 式 を 使 用 し ます。 例 えば、 リ ンカが <strong>ARM</strong> C ライブ<br />
ラリ __cpp_initialize_aeabi の 定 義 を 検 出 し た 場 合 は、R_<strong>ARM</strong>_TARGET1 の 相 対 形 式<br />
を 使 用 し、 そ う でない 場 合 は 絶 対 形 式 を 使 用 し ます。<br />
4.5.6 関 連 する リ ン カ コ マン ド ラ イ ンオプシ ョ ン<br />
• 「--bpabi」 (ページ 2-6)<br />
• 「--dll」 (ページ 2-19)<br />
• 「--dynamic_debug」 (ページ 2-19)<br />
• 「--[no_]export_all」 (ページ 2-23)<br />
• 「--pltgot=type」 (ページ 2-47)<br />
• 「--pltgot_opts=mode」 (ページ 2-48)<br />
• 「--ropi」 (ページ 2-56)<br />
• 「--ro_base=address」 (ページ 2-55)<br />
• 「--rosplit」 (ページ 2-56)<br />
• 「--runpath=pathlist」 (ページ 2-56)<br />
• 「--rw_base=address」 (ページ 2-57)<br />
• 「--rwpi」 (ページ 2-57)<br />
• 「--soname=name」 (ページ 2-61)<br />
• 「--symver_script=file」 (ページ 2-65)<br />
• 「--symver_soname」 (ページ 2-66)<br />
4-14 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential
BPABI および SysV の 共 有 ライブラリ と 実 行 可 能 フ ァイル<br />
関 連 項 目<br />
• 『リンカユーザガイド』 の 以 下 のセ ク シ ョ ン :<br />
— 「シンボルのバージ ョ ン 管 理 」 (ページ 4-17)<br />
<strong>ARM</strong> DUI 0381AJ Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. 4-15<br />
Non-Confidential
BPABI および SysV の 共 有 ラ イ ブ ラ リ と 実 行 可 能 フ ァ イル<br />
4-16 Copyright © 2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0381AJ<br />
Non-Confidential