ARM® コンパイラツールチェーン リンカの使用

バージョン 5.03


List of Topics

表記規則とフィードバック
リンカの概要
リンカについて
リンカのコマンドライン構文
リンカコマンドラインオプションの目的別一覧
リンカで使用できる入力
リンカからの出力
実行可能イメージを作成するときにリンカによって実行される処理
armlink でサポートされているリンクモデル
リンクモデルの概要
ベアメタルリンクモデル
部分リンクモデル
ベースプラットフォームアプリケーションバイナリインタフェース(BPABI)リンクモデル
ベースプラットフォームリンクモデル
SysV リンクモデル
BPABI リンクモデルと SysV リンクモデルの両方に共通する概念
イメージの構造と生成
イメージの構造
入力セクション、出力セクション、領域、およびプログラムセグメント
イメージのロードビューと実行ビュー
リンカでイメージのメモリマップを指定する方法
単純イメージのタイプ
タイプ 1 のイメージ構造:1 つのロード領域と連続した実行領域
タイプ 2 のイメージ構造:1 つのロード領域と連続しない実行領域
タイプ 3 のイメージ構造:2 つのロード領域と連続しない実行領域
イメージのエントリポイント
初期エントリポイントの指定について
リンカによるセクションの配置
FIRST 属性と LAST 属性を使用したセクションの配置
リンカによるセクションの境界調整
デマンドページング
Thumb コードを含む実行領域の順序付けについて
ベニアの概要
ベニアの共有
ベニアのタイプ
位置非依存から絶対ベニアへの生成
スキャッタロード時のベニアの再利用
コマンドラインオプションを使用した C++ 例外テーブルの生成の制御
弱参照と定義について
リンカによるライブラリの検索、選択、およびスキャンの実行方法
リンカによる ARM 標準ライブラリの検索方法の制御
リンク時のユーザライブラリの指定
リンカによる参照の解決方法
リンカにおける厳格なオプションファミリについて
リンカの最適化の使用
共通デバッグセクションの削除
共通グループまたは共通セクションの削除
未使用セクションの削除
未使用仮想関数の削除
リンカフィードバックについて
リンカフィードバックの使用例
RW データ圧縮を使用した最適化
リンカによるコンプレッサの選択方法
リンカによって使用される圧縮アルゴリズムのオーバーライド
圧縮の適用方法
RW データ圧縮の使用
リンカによる関数のインライン化
関数のインライン化に影響を与える要因
NOP に最適化される分岐の処理
末尾呼び出しセクションの再順序付けについて
末尾呼び出しセクションの再順序付けに関する制限
コメントセクションのマージについて
イメージに関する情報の取得
イメージに関する情報を取得するためのリンカオプション
一部のリンクエラーの原因の特定
--info リンカオプションの使用例
リンク時のシンボルの場所を調べる方法
armlink によるシンボルのアクセスと管理
マッピングシンボルについて
リンカ定義シンボルへのアクセス
領域関連シンボル
Image$$ 実行領域シンボル
Load$$ 実行領域シンボル
Load$$LR$$ ロード領域シンボル
スキャッタロード時以外の領域名の値
リンカ定義シンボルと分散ファイル
C および C++ でのリンカ定義シンボルのインポート
ARM アセンブリ言語でのリンカ定義シンボルのインポート
セクション関連シンボル
イメージシンボル
入力セクションのシンボル
別のイメージに含まれているシンボルへのアクセス
symdefs ファイルの作成
グローバルシンボルのサブセットの出力
symdefs ファイルの読み出し
symdefs ファイルの形式
ステアリングファイルとは
リンカコマンドラインでのステアリングファイルの指定
ステアリングファイルコマンドの概要
ステアリングファイルの形式
ステアリングファイルを使用したグローバルシンボルの非表示および名前の変更について
$Super$$ と $Sub$$ を使用したシンボル定義へのパッチの適用について
スキャッタファイルの使用
スキャッタロードについて
スキャッタロードが使用される状況
スキャッタロードのコマンドラインオプション
メモリマップが単純なイメージ
メモリマップが複雑なイメージ
スキャッタロード時に定義されないリンカ定義シンボル
スキャッタファイルを使用したスタックとヒープの指定
ルート領域とは
ルート実行領域の作成
FIXED 属性を使用したルート領域の作成
特定アドレスへの関数とデータの配置
スキャッタロードを使用した名前付きセクションの明示的な配置
.ANY モジュールセレクタによる未割り当てセクションの配置
.ANY セクションの配置アルゴリズムの使用例
領域の割り当て、セレクタ、および優先度の動作を示す next_fit アルゴリズムの例
.ANY セクションのソートアルゴリズムの使用例
スキャッタロードの記述におけるベニア入力セクションの選択
__attribute__((section("name"))) を使用したコードとデータの配置
__at セクションを使用して特定のアドレスにセクションを配置する
__at セクションの配置に関する制限
__at セクションの自動配置
__at セクションの手動配置
__at を使用したフラッシュメモリでのキーの配置
__at を使用したペリフェラルレジスタに対する構造の配置
オーバーレイを使用したセクションの配置
ARM C および C++ ライブラリコードの配置について
ルート領域へのコードの配置例
ARM C ライブラリコードの配置例
ARM C++ ライブラリコードの配置例
ARM ライブラリヘルパ関数の配置例
空き領域の予約
ページ境界での領域の作成について
実行領域と入力セクションのオーバーアライメント
スキャッタファイルでのプリプロセッシングコマンドの使用
スキャッタファイル内の式の評価
スキャッタファイル内の式の評価を使用したパディングの回避
等価なスキャッタロード記述を使用した単純イメージの生成
タイプ 1 のイメージ:1 つのロード領域と連続する実行領域
タイプ 2 のイメージ:1 つのロード領域と連続しない実行領域
タイプ 3 のイメージ:2 つのロード領域と連続しない実行領域
スキャッタファイルを使用した ELF のマッピング
armlink における GNU ld スクリプトのサポート
GNU ld スクリプトのサポートと制限について
armlink での ld スクリプトの一般的な使用事例
Armlink に実装されている重要な ld スクリプトコマンド
armlink での ld スクリプトの使用に固有の制限
armlink での ld スクリプトの使用に関する推奨事項
armlink によって使用されるデフォルトの GNU ld スクリプト
ARM Linux 実行可能ファイルをリンクするための GNU ld スクリプトの例
ARM Linux 共有オブジェクトをリンクするための GNU ld スクリプトの例
ld --ldpartial オブジェクトをリンクするための GNU ld スクリプトの例
BPABI および SysV の共有ライブラリと実行可能ファイル
ベースプラットフォームアプリケーションバイナリインタフェース(BPABI)について
BPABI がサポートしているプラットフォーム
すべての BPABI モデルに共通する概念
BPABI モデルのシンボルのインポートとエクスポートについて
BPABI モデルのシンボルの可視性
BPABI モデルの自動的なインポートとエクスポート
BPABI モデルの手動のインポートとエクスポート
BPABI モデルのシンボルバージョン管理
BPABI モデルの RW 圧縮
SysV モデルのリンカオプション
SysV メモリモデル
SysV メモリモデルにおけるダイナミックシンボルテーブルの自動規則
SysV メモリモデルのアドレシングモード
SysV メモリモデルのスレッドローカルストレージ
SysV メモリモデルに関連するリンカコマンドラインオプション
SysV メモリモデルでのコマンドラインデフォルトへの変更
ベアメタルモデルと DLL 類似モデルのリンカオプション
ベアメタルメモリモデルと DLL 類似メモリモデル
BPABI DLL 類似モデルでの必須のシンボルバージョン管理
BPABI DLL 類似モデルにおけるダイナミックシンボルテーブルの自動規則
BPABI DLL 類似モデルのアドレシングモード
BPABI DLL 類似モデルでの C++ の初期化
シンボルバージョン管理について
シンボルバージョン管理のスクリプトファイルについて
バージョン管理シンボルの作成例
組み込みシンボルについて
暗黙のシンボルバージョン管理を有効にするリンカオプション
BPABI DLL 類似モデルに関連するリンカコマンドラインオプション
ベースプラットフォームリンクモデルの機能
ベースプラットフォームモデルでのスキャッタファイルの使用に関する制限
ベースプラットフォームリンクモデルのスキャッタファイルの例
ベースプラットフォームモデルを使用した PLT シーケンスの配置
『リンカの使用』に対する改訂

著作権

® または ™ のマークが付いた言葉およびロゴは、この著作権情報で別段に規定されている場合を除き、ARM の EU またはその他の国における登録商標および商標です。本書に記載されている他の製品名は、各社の所有する商標です。

本書に記載されている情報の全部または一部、ならびに本書で紹介する製品は、著作権所有者の文書による事前の許可を得ない限り、転用・複製することを禁じます。

本書に記載されている製品は、今後も継続的に開発・改良の対象となります。本書に含まれる製品およびその利用方法についての情報は、ARM が利用者の利益のために提供するものです。したがって当社では、製品の市販性または利用の適切性を含め、暗示的・明示的に関係なく一切の責任を負いません。

本書は、本製品の利用者をサポートすることだけを目的としています。本書に記載されている情報の使用、情報の誤りまたは省略、あるいは本製品の誤使用によって発生したいかなる損失・損傷についても、ARM は一切責任を負いません。

ARM という用語が使用されている場合、“ARM または必要に応じてその子会社” を指します。

機密保持ステータス

本書は非機密扱いであり、本書を使用、複製、および開示する権利は、ARM および ARM が本書を提供した当事者との間で締結した契約の条項に基づいたライセンスの制限により異なります。

製品ステータス

本書の情報は最終版であり、開発済み製品に対応しています。

Revision History
Revision A2010 年 5 月 28 日ARM コンパイラツールチェーン v4.1 リリース
Revision B2010 年 9 月 30 日ARM コンパイラツールチェーン v4.1 のアップデート 1
Revision C2011 年 1 月 28 日ARM コンパイラツールチェーン v4.1 パッチ 3 のアップデート 2
Revision D2011 年 4 月 30 日ARM コンパイラツールチェーン v5.0 リリース
Revision E2011 年 7 月 29 日ARM コンパイラツールチェーン v5.0 のアップデート 1
Revision F2011 年 9 月 30 日ARM コンパイラツールチェーン v5.01 リリース
Revision G2012 年 2 月 29 日ARM コンパイラツールチェーン v5.01 リリースマニュアルの更新 1
Revision H2012 年 7 月 27 日ARM コンパイラツールチェーン v5.02 リリース
Revision I2013 年 1 月 31 日ARM コンパイラツールチェーン v5.03 リリース
Copyright © 2010-2013 ARM. All rights reserved.ARM DUI 0474IJ
Non-ConfidentialID102113