13.6 RESOLVE ステアリングファイルコマンド

特定の未定義の参照と、定義済みのグローバルシンボルとのマッチングを行います。

構文

RESOLVE pattern AS defined_pattern
各項目には以下の意味があります。
pattern
ワイルドカード文字(* または ?)をオプションで含めることができる、0 個以上の未定義のグローバルシンボルに一致する文字列。 pattern がどの未定義のグローバルシンボルとも一致しない場合、そのコマンドは無視されます。オペランドは、未定義のグローバルシンボルのみと一致することができます。
defined_pattern
オプションでワイルドカード文字を含めることができる、0 個以上の定義済みグローバルシンボルに一致する文字列。 defined_pattern がどの定義済みグローバルシンボルとも一致しない場合、そのコマンドは無視されます。未定義参照と未定義シンボルの照合を行うことはできません。

使用法

RESOLVE は、既存の armlink --unresolved コマンドラインオプションを拡張するコマンドです。違いは、 --unresolved を使用すると、すべての未定義参照について 1 つの定義との照合ができるのに対して、RESOLVE ではより限定的な参照とシンボルの照合ができる点です。
未定義参照は、出力シンボルテーブルから削除されます。
RESOLVE は、部分的なリンクを実行するときでも、通常のリンクを実行するときでも機能します。

次の例に示すように、file1.cfile2.c の 2 つのファイルがあるとします。
file1.c
extern int foo;
extern void MP3_Init(void);
extern void MP3_Play(void);
int main(void)
{
  int x = foo + 1;
  MP3_Init();
  MP3_Play();
  return x;
}

file2.c:
int foobar;
void MyMP3_Init()
{
}
void MyMP3_Play()
{
}
次の行を含む ed.txt というステアリングファイルを作成します。
RESOLVE MP3* AS MyMP3*
以下のコマンドを入力します。
armlink file1.o file2.o --edit ed.txt --unresolved foobar
このコマンドでは、以下の処理が行われます。
  • file1.ofooMP3_Init() および MP3_Play())からの参照は、ステアリングファイル ed.txt での指示に従って、file2.ofoobarMyMP3_Init() および MyMP3_Play())での定義とそれぞれ照合が行われます。
  • ed.txt で指定されている RESOLVE コマンドは、 MP3 関数のマッチングが行われ、--unresolved オプションによって、残りのすべての参照のマッチングが行われます。この場合は、foofoobar のマッチングが行われます。
  • イメージか部分的にリンクされるオブジェクトかどうかに関係なく、出力シンボルテーブルには、シンボル fooMP3_Init、または MP3_Play はいずれも含められません。
関連する概念
6.6 ステアリングファイルを使用したシンボルテーブルの編集
関連する参考文書
12.45 --edit=file_list
12.157 --unresolved=symbol
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.