25.10.2014 Views

RealView Compilation Tools リンカリファレンスガイド - ARM ...

RealView Compilation Tools リンカリファレンスガイド - ARM ...

RealView Compilation Tools リンカリファレンスガイド - ARM ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!