2.5 ベースプラットフォームリンクモデル

ベースプラットフォームアプリケーションバイナリインタフェース(BPABI)リンクモデルまたは System V(SysV)リンクモデルで強制されるメモリマップを持たない動的にリンク可能なイメージを作成できます。

ベースプラットフォームリンクモデルを使用すると、以下を実行できます。
  • スキャッタファイルに記述されているメモリマップを持つイメージを作成します。
  • ダイナミックな再配置によって、イメージを動的にリンクできるようにします。ダイナミックな再配置は、同じイメージ内をターゲットにすることもできます。

BPABI 仕様には、スキャッタロードの使用を妨げる可能性がある、メモリモデルに対する制約があります。ただし、ベースプラットフォームは BPABI のスーパーセットであるため、ベースプラットフォームを使用して BPABI に準拠したイメージを作成できます。
ベースプラットフォームモデルを使用してリンクするには、--base_platform コマンドラインオプションを使用します。
このオプションを指定すると、以下の点を除き、リンカは --bpabi を指定した場合と同様に動作します。
  • 以下のオプションに加え、--scatter と共にスキャッタロードを利用できます。
    • --dll
    • --force_so_throw, --no_force_so_throw
    • --pltgot=type (タイプは none または direct に制限されます)。
    • --ro_base=address
    • --rosplit
    • --rw_base=address
    • --rwpi
  • --pltgot オプションのデフォルト値は、--bpabi のデフォルト値とは異なります。
    • --base_platform の場合、デフォルトは --pltgot=none です。
    • --bpabi を使用している場合、デフォルトは --pltgot=direct です。
  • スキャッタファイルを使用しない場合、リンカでは、プロシージャリンクテーブル(PLT)セクションを正しく配置し、そこにインポートしたシンボルのみを呼び出すためのエントリを含めることができます。スキャッタファイルを指定した場合、リンカは PLT の配置に適した場所を見つけることができないことがあります。
    コードを含む各ロード領域では、静的リンク時にアドレスが不明な場合にロード領域から関数への間接的な呼び出しを行うために、PLT セクションが必要なことがあります。ロード領域 LR の PLT セクションは LR に配置し、LR 内のコードからいつでもアクセスできる必要があります。
    PLT エントリを使用する再配置可能なロード領域間で確実に呼び出しを行うには、以下の操作を実行します。
    • --pltgot=direct オプションを使用して、PLT の生成を有効にします。
    • --pltgot_opts=crosslr オプションを使用して、RELOC ロード領域間での呼び出しを行うためのエントリを PLT に追加します。リンカによってロード領域ごとに PLT が生成されるため、離れている PLT にアクセスするのに呼び出しを拡張する必要がありません。
以下の点に注意して下さい。
  • デフォルトで、このモデルは、共有オブジェクトが C++ 例外をスローできないことを前提としています(--no_force_so_throw)。
  • 必要なすべてのシンボルがロード時に利用可能になるように、シンボルバージョン管理を使用する必要があります。
  • 使用できるスキャッタファイルのタイプには制限があります。
関連する概念
2.7 BPABI リンクモデルと SysV リンクモデルの両方に共通する概念
11.1 ベースプラットフォームモデルでのスキャッタファイルの使用に関する制限
11.2 ベースプラットフォームリンクモデルのスキャッタファイルの例
2.4 ベースプラットフォームアプリケーションバイナリインタフェース(BPABI)リンクモデル
3.1.4 リンカでイメージのメモリマップを指定する方法
10.6 シンボルバージョン管理
関連する参考文書
12.11 --base_platform
12.41 --dll
12.64 --force_so_throw、--no_force_so_throw
12.109 --pltgot_opts=mode
12.118 --ro_base=address
12.120 --rosplit
12.122 --rw_base=address
12.123 --rwpi
12.125 --scatter=filename
12.108 --pltgot=type
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.