3.2 armlink のエラーおよび警告メッセージのリスト

armlink によって生成されるエラーメッセージと警告メッセージのリスト。

L6000U : メモリが不足しています。
このエラーは、RVCT v4.0 以前によって報告されます。このエラーと対処方法を表示する理由の詳細については、エラー L6815U の説明を参照して下さい。
L6001U : ファイル <filename> から読み出すことができませんでした。
L6002U : ファイル <filename> を開けませんでした:<reason>
このメッセージは、リンカのコマンドラインで指定されたファイルをリンカが開けなかったことを示しています。ファイルへのアクセスに問題があるか、コマンドラインに誤りがあることを示している場合もあります。このメッセージの一般的な例として、以下のようなものがあります。
  • L6002U:ファイル /armlib/{libname} を開けませんでした:そのようなファイルまたはディレクトリはありません
    
    ライブラリのパスを --libpath で指定するか、ARMCC5LIB 環境変数を install_directory\lib に設定して下さい。

    ARM コンパイラ v5.0 以降では、armlinkARMCC5LIB 環境変数を設定する必要はありません。
  • エラー:armlink:L6002:ファイル errors=ver.txt を開けませんでした
    
    errors=ver.txt の前に二重ダッシュ(--)がないことが原因です。オプションに接頭文字 -- または - を付けないと、リンカはオプションを入力ファイルとして扱い、指定されたすべてのファイルをロードすることができなくなるので、リンク手順が失敗します。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
『スタート ガイド』の以下のセクションを参照して下さい。
L6003U : ファイル <filename> に書き込むことができませんでした。
指定されたファイルを読み出すとき、開くとき、またはそのファイルに書き込むときに、ファイル I/O エラーが発生しました。
L6004U : <library> のライブラリメンバリスト <list> が不完全です。
この問題は、ライブラリオブジェクトのリスト内にホワイトスペースがある場合に発生することがあります。
以下の例は、致命的なエラー:L6004U:x.lib のメンバリストのライブラリメンバが足りません
armlink x.lib(foo.o, bar.o)
以下のサンプルが成功します。
armlink x.lib(foo.o,bar.o)
他の一般的な原因として、ライブラリが破損していること、ライブラリの形式がサポートされていないものであることなども考えられます。
L6005U : <library> のメンバリストの最後に余分な文字があります。
L6006U : 実行領域 <regionname> の OVERALIGN 属性にオーバーアライメント値が指定されていません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6007U : ファイル <filename> の形式を認識できません。
リンカが認識できる形式は、オブジェクトファイルでは ELF、ライブラリファイルでは AR です。指定されたファイルは、破損しているか、リンカが認識できない形式のファイルです。
L6008U : メンバ <mem>(<lib>)の形式を認識できません。
リンカが認識できるライブラリメンバオブジェクトのファイル形式は、ELF です。指定されたライブラリメンバは、破損しているか、リンカが認識できない形式のファイルです。
L6009U : ファイル <filename>: エンディアンが一致しません。
指定されたファイルまたはオブジェクトのエンディアンが他の入力ファイルのエンディアンと一致しませんでした。リンカは 1 つのリンク手順内でビッグエンディアンとリトルエンディアンのいずれのオブジェクトの入力も処理できますが、両方が混在する入力は処理できません。
L6010U : ファイル <filename> に対して stderr を再オープンできませんでした:<reason>
指定されたファイルを読み出すとき、開くとき、またはそのファイルに書き込むときに、ファイル I/O エラーが発生しました。
L6011U : 無効な整数定数:<number>.
この問題は、不正な整数定数を指定すると発生します。整数は、接頭文字 &0x、または 0X を付けて、16 進形式で入力できます。
L6015U : リンクする入力ファイルが見つかりませんでした。
リンカには、リンクするオブジェクトファイルを少なくとも 1 つは指定しなければなりません。
例えば、次のリンクを実行しようすると、
armlink lib.a -o foo.axf
リンカはこのエラーを報告します。
代わりに、次のようにする必要があります。
armlink foo_1.o foo_2.o lib.a -o foo.axf
L6016U : オブジェクト/ライブラリ <object> でシンボルテーブルが見つからないか破損しています。
この問題は、GNU ツールでビルドしたライブラリとリンクする場合に発生します。GNU ar は、互換性のない情報を生成する場合があるためです。
この問題を解決するには、ararmar に置き換えて、同じコマンドライン引数を使用します。また、エラーから回復するために、 armar -s を使用してシンボルテーブルを再ビルドすることもできます。
L6017U : ライブラリ <library> のシンボルテーブルに無効なエントリが含まれています。オフセット 0x<offset>にメンバはありません。
ライブラリが破損している可能性があります。再ビルドしてみて下さい。
L6018U : <filename> は有効な ELF ファイルではありません。
L6019U : <filename> は有効な 64 ビット ELF ファイルではありません。
L6020U : <filename> は有効な 32 ビット ELF ファイルではありません。
L6022U : オブジェクト <objname> に複数の <table> が含まれています。
オブジェクトファイルにエラーがあるか、破損しています。この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6024U : ライブラリ <library> に無効なメンバ名が含まれています。
指定されたファイルが有効なライブラリファイルではありません。エラーが含まれているか、破損しています。再ビルドしてみて下さい。
L6025U : 非ライブラリファイル <library> からメンバを抽出することができません。
指定されたファイルが有効なライブラリファイルではありません。エラーが含まれているか、破損しています。再ビルドしてみて下さい。
L6026U : ELF ファイル <filename> にはリトルエンディアンまたはビッグエンディアンのエンコーディングが含まれていません
ELF ファイルが無効です。再ビルドしてみて下さい。
L6027U : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)は無効または不明な型です。
この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6028U : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)に無効なオフセットが含まれています。
この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6029U : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)に無効または不明なシンボルが関係しています。
再配置が以下のいずれかのシンボルに関係しています。
  • 無効か、オブジェクトシンボルテーブルに存在しない
  • 再配置で使用するのに適していない
この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6030U : 領域 <regname> のオーバーアライメント <overalignment> は、4 以上で 2 の累乗である必要があります
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6031U : スキャッタ記述ファイル <filename> をオープンできませんでした:<reason>
指定されたファイルを開こうとしたときに、I/O エラーが発生しました。この問題は、無効なファイル名が原因である場合があります。
L6032U : <object> に無効な <text> <value> (最大 <max_value>)があります
L6033U : シンボル <symbolname>(<objname>)は、無効なセクションに対して相対的に定義されています。
L6034U : シンボル <symbolname>(<objname> 内)に無効な値が含まれています。
この問題の最も一般的な原因は、セクション相対シンボルの値がセクション境界を超えていることです。
L6035U : 再配置 #<rel_class>:<rel_number>( ZI セクション <objname>(<secname>)内)は無効または不明な型です。
ZI セクションは R_ARM_NONE 型以外の再配置を持つことはできません。
L6036U : ファイル <filename> を閉じることができませんでした:<reason>
指定されたファイルを閉じるときに、I/O エラーが発生しました。
L6037U : '<arg>' は、オプション '<option>' では有効ではありません。
この引数は、このオプションでは有効ではありません。この問題の原因は、スペルの間違い、または引数のサポートされていない省略形の使用である可能性があります。
L6038U : 更新された SYMDEFS を書き込むための一時ファイルを作成できませんでした。
SYMDEFS 出力の保存に必要な一時ファイルの作成中に、I/O エラーが発生しました。
L6039W : #<rel_class> からの再配置:<rel_number>(<objname>(<secname>)内)は <symname> に関係しています。R-Type の再配置の作成がスキップされます。<rel_type> 型には対応する R-type の再配置はありません。
--reloc は、対応する R-Type 再配置を持たない再配置を含むオブジェクトと共に使用されます。
L6041U : 内部エラーが発生しました(<clue>)。
購入元にお問い合わせ下さい。
L6042U : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)にマッピングシンボル(#<idx>、最後のマッピング シンボル = #<last>)が関係しています。
マッピングシンボルに関係している再配置は使用できません。この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6043U : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)に、範囲外のシンボル(#<val>、範囲 = 1-<max>)が関係しています。
再配置は、範囲(1 - n)内のシンボルに関してのみ実行できます(n はシンボルの数)。
L6047U : このイメージのサイズ(<actual_size> バイト)がこのバージョンのリンカに許可されている最大サイズを超過しています
L6048U : リンカがリンク手順(<id>)を続行できません。このバージョンのリンカではこのイメージは作成されません。
L6049U : リンカがリンク手順(<id>)を続行できません。このバージョンのリンカでは指定された 1 つ以上のライブラリとリンクできません。
L6050U : このイメージのコードサイズ(<actual_size> バイト)が、このバージョンのリンカに許可されている最大サイズを超過しています。
L6058E : リンカスクリプト <script> を行 <lineno> で解析しているときに構文エラーが発生しました: <token>
リンク ld スクリプトには、行番号に構文エラーがあります。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6064E : ELF 実行可能ファイル <filename> がコマンドラインで入力として指定されました
原因として、-c コンパイラオプションを指定せずに、コンパイラからオブジェクトファイルを出力として指定したことが考えられます。以下に例を示します。
armcc file.c -o file.o
armlink file.o -o file.axf
『armcc ユーザガイド』の以下のセクションを参照して下さい。
-c
L6065E : ロード領域 <name>(サイズ <size>)が 0x80000000 の書き込み可能な連続ブロックの最大サイズを超えています。
リンカが 2GB を超えるセグメントの書き込みを試みました。セグメントの最大サイズは 2GB です。
L6175E : EMPTY 領域 <regname> にセクションセレクタを含めることはできません
L6176E : EMPTY 属性のない領域 <regname> に対して負の max_size を使用することはできません。
EMPTY 属性のある領域だけが、負の max-size を持つことができます。
L6177E : +offset 形式のベースアドレスを使用する領域 <regname> に対して負の max_size を使用することはできません。
+offset 形式のベースアドレスを使用する領域は、負の max-size を持つことができません。
L6188E : 特別なセクション <sec1> が、<obj1> と <obj2> によって複数回定義されています。
特別なセクションは、"Veneer$$Code" のように、1 回だけ使用できるセクションです。
L6195E : '<attr1>' と '<attr2>' の両方を領域 <regname> に対して指定することはできません
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6200E : シンボル <symbolname> が <object1> と <object2> によって複数回定義されています。
この問題の一般的な例には、以下があります。
シンボル __stdout が、retarget.o と stdio.o によって複数回定義されています。
これは、__stdout の競合する 2 つの定義が retarget.ostdio.o にあるということを意味しています。 retarget.o 内の定義は、ユーザ自身が記述したものです。 stdio.o 内の定義は、デフォルトの実装であり、誤ってリンクされた可能性があります。
stdio.o には、多くのシンボル定義と、ファイル関数(fopenfclosefflush など)の実装が含まれています。
stdio.o は、いくつかの未解決の参照を解決するためにリンクされています。
stdio.o がリンクされている理由を特定するには、 --verbose リンクオプションスイッチを使う必要があります。以下に例を示します。
armlink [... your normal options...]--verbose --list err.txt
その後、err.txt を調べて、リンカが何のために何をどこからリンクしているかを詳しく確認します。
以下の作業が必要になる場合もあります。
  • fopenfclosefflush などの呼び出しを削除する。
  • 関数の _sys_xxxx ファミリを再実装する。
『ARM C および C++ ライブラリと浮動小数点サポートユーザガイド』の以下のセクションを参照して下さい。
L6201E : オブジェクト <objname> に複数のエントリセクションが含まれています。
入力オブジェクトで、エントリポイントを複数指定しています。使用するエントリポイントを選択するには、--entry コマンドラインオプションを使用して下さい。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6202E : <objname>(<secname>)を非ルート領域 '<regionname>' に割り当てることはできません
ルート領域とは、その実行アドレスがロードアドレスと同じである領域のことです。そのため、この領域は、スキャッタロード初期化コードによる移動やコピーが必要ありません。
特定のセクションは、次のようなイメージのルート領域内になければなりません。
  • __main.o
  • リンカによって生成されるテーブル(Region$$Table
  • ライブラリからのスキャッタロード(__scatter*.o)オブジェクト
  • ライブラリからのデコンプレッサ(__dc*.o)オブジェクト
必要なセクションがルート領域に配置されていない場合は、リンカは次のようなメッセージを表示します。
anon$$obj.o(Region$$Table) cannot be assigned to a non-root region 'RAM'.
InRoot$$Sections を使用すると、ルート領域にすべての必要なセクションを含めることができます。
ROM_LOAD 0x0000 0x4000
{
  ROM_EXEC 0x0000 0x4000 ; root region
  {
    vectors.o (Vect, +FIRST) ; Vector table
    * (InRoot$$Sections) ; All library sections
                         ; that must be in a root region
                         ; for example, __main.o, __scatter*.o,
                         ; dc*.o and * Region$$Table
  }
  RAM 0x10000 0x8000
  {
    * (+RO, +RW, +ZI) ; all other sections
  }
}
L6203E : エントリポイント(<address>)が非ルート領域 <regionname> 内にあります。
イメージのエントリポイントは、イメージのルート領域内の有効な命令に対応している必要があります。
L6204E : エントリポイント(<address>)が命令を指していません。
--entry コマンドラインオプションで指定した、イメージのエントリポイントは、イメージのルート領域内の有効な命令に対応している必要があります。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6205E : エントリポイント(<address>)は、ARM 命令用にワード境界で整列している必要があります。
このメッセージは、 --entry コマンドラインオプションで指定したイメージのエントリポイントが、ワード境界で整列されていないため、表示されます。例えば、--entry=0x8000 ではなく、 --entry=0x8001 と指定した場合です。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6206E : エントリポイント(<address>)がイメージの外部にあります。
--entry コマンドラインオプションで指定したイメージのエントリポイントが、イメージの外部にあります。例えば、次のように、エントリアドレスとして 0x8000 ではなく 0x80000 を指定した場合です。
armlink --entry=0x80000 test.o -o test.axf
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6208E : --entry コマンドの無効な引数:'<arg>'
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6209E : --entry に対して指定された無効なオフセット定数(<arg>)
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6210E : イメージに複数のエントリポイントを含めることはできません(<address1>,<address2>)
1 つまたは複数の入力オブジェクトで、イメージのエントリポイントを複数指定しています。使用するエントリポイントを選択するには、--entry コマンドラインオプションを使用して下さい。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6211E : セクションの選択があいまいです。オブジェクト <objname> に複数のセクションが含まれています。
この問題は、複数の AREA を含むアセンブラオブジェクトに対してリンカオプション --keep を使用している場合に発生します。リンカで、どの AREA を保持するのかを認識できる必要があります。
この問題を解決するには、次のように、複数の --keep オプションを使って、保持する各 AREA の名前を指定します。
 --keep boot.o(vectors) --keep boot.o(resethandler) …

複数の AREA を持つアセンブラファイルを使用すると、他の問題も発生する場合があるので、使用しないことを推奨します。
L6213E : 複数の First セクション <object2>(<section2>)は使用できません。<object1>(<section1>)は既に存在します。
FIRST セクションは 1 つしか使用できません。
L6214E : 複数の Last セクション <object2>(<section2>)は使用できません。<object1>(<section1>)は既に存在します。
LAST セクションは 1 つしか使用できません。
L6215E : --First/--Last に対するシンボルの選択があいまいです。シンボル <symbol> に複数の定義があります。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6216E : 連続しないセクション <secname> に対してベース/リミットシンボルを使用することはできません
コンパイラによって生成される例外処理インデクステーブルは、セクション名が .ARM.exidx になります。詳細については、「Exception Handling ABI for the ARM Architecture」 を参照して下さい。
リンク時には、これらのテーブルは同じ実行領域に連続して配置されていなければなりません。スキャッタファイル内で特定のセレクタパターンを使ってこれらのセクションを明示的に連続しないように配置している場合は、このエラーメッセージが発生する可能性が高くなります。以下に例を示します。
LOAD_ROM 0x00000000 {   ER1 0x00000000   {     file1.o (+RO) ; C++ ソースから     * (+RO)   }   ER2 0x01000000   {     file2.o (+RO) ; C++ ソースから   }   ER3 +0   {     * (+RW, +ZI)   } }
例外処理インデクステーブルが file1.ofile2.o の両方に含まれる場合、リンカはこれらを個別の領域に配置できないため、これによって次のエラーが生成される可能性があります。
エラー: L6216E:連続しないセクション .ARM.exidx に対してベース/リミットシンボルを使用することはできません
また、.init_array セクションは、同じ領域内に連続して配置されていないとベースおよびリミットシンボルにアクセスできない場合もあります。
正しいコードを以下に示します。
LOAD_ROM 0x00000000 {   ER1 0x00000000   {     file1.o (+RO)   ; C++ ソースから     * (.ARM.exidx)  ; セクション .ARM.exidx は明示的に配置する必要があります。                     ; そうしないと、2 つの領域で共有され、                     ; リンカは配置先を                     ; 決定できなくなります。*(.init_array)  ; セクション .init_array は明示的に配置する必要があります。                     ; そうしないと、2 つの領域で共有され、                     ; リンカは配置先を                     ; 決定できなくなります。* (+RO)   }   ER2 0x01000000   {     file2.o (+RO)   ; from a C++ source   }   ER3 +0   {     * (+RW, +ZI)   } }
この例では、ベースシンボルとリミットシンボルが 1 つの領域内の .init_array に含まれています。
『ARM C および C++ ライブラリと浮動小数点サポートユーザガイド』の以下のセクションを参照して下さい。
L6217E : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)は <symbol> に関係しています。インポートされたシンボルへの R_ARM_SBREL32 再配置
L6218E : シンボル <symbol>(<objname> から参照)が定義されていません。
この一般的な例として、以下のようなものがあります。
  • ユーザエラー。未定義または間違った定義のシンボルへの参照があります。
  • Undefined symbol __ARM_switch8 or __ARM_ll_<xxxx> functions
    
    ヘルパ関数は、コンパイラによって自動的にオブジェクトファイル内に生成されます。

    しかし、ヘルパ関数が h_xxx ライブラリ(h は、これらが標準 C ライブラリコードではなく、コンパイラヘルパライブラリであることを示しています)内にあった従来のプロジェクトのオブジェクトをリンクしている場合は、未定義参照エラーが発生します。
    オブジェクトを再コンパイルするか、これらのライブラリをリンカが見つけられるようにして下さい。
  • C の関数またはエンティティを C++ の関数またはエンティティから参照しようとしています。この問題は C++ の名前のマングリングによって発生します。C 関数を extern ""C"" とマークすることで対処できます。
  • シンボル thunk{v:0,-44} to Foo_i::~Foo_i()(Bar_i.o から参照)が定義されていません。
    
    シンボル thunk{v:0,-44} to Foo_i::~Foo_i() は、標準の Foo_i::~Foo_i() 関数のラッパ関数です。
    Foo_i は、他のベースクラスからの派生クラスです。そのため、
    • そのベースクラスへのポインタによって参照される場合のために、ベースクラスの vtable を持っています。
    • ベースクラスの vtable は、thunk のためのエントリを持っています。
    • デストラクタ thunk は、実際の(派生クラスの)デストラクタが出力の場合は、出力になります。
    このため、エラーを回避するには、このデストラクタを定義する必要があります。
  • シンボル main が定義されていません (kernel.o から参照)。
    
    このエラーによって、リンカは、アプリケーションに main() 関数が含まれていないことをレポートしています。
移行と互換性ガイド』の以下のセクションを参照して下さい。
L6219E : <type> セクション <object1>(<section1>) 属性 {<attributes>} は、隣接するセクション <object2>(<section2>) と互換性がありません。
このエラーは、リンカによって使用されているデフォルトの順序付け規則(RO、次に RW、次に ZI)の違反があった場合に発生します。一般的には、例えばスキャッタファイルで +FIRST または +LAST を使って、RW が RO の前になるように強制しようとした場合に発生します。
L6220E : <type> 領域 <regionname> のサイズ (<size> バイト) が、制限値 (<limit> バイト) を超えています。
例:
Execution の領域 ROM_EXEC のサイズ(4208184 バイト)が制限(4194304 バイト)を超えています。
この問題は、領域がスキャッタファイルで最大長を指定されたものの(指定は任意)、領域内のコードおよびデータのサイズが指定された制限を超えている場合に発生します。このエラーは、--diag_suppress 6220 で非表示にすることができます。
例えば、スキャッタファイルで ALIGN ディレクティブと共に .ANYnum セレクタを使用して、リンカにパディングを挿入させる場合に、このエラーが発生する可能性があります。この問題を解消するには、--any_contingency オプションを使用します。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6221E : <type1> の領域 <regionname1> (<addrtype1>、範囲 [<base1>,<limit1>)) が <type2> の領域 <regionname2> (<addrtype2>、範囲 [<base2>,<limit2>)) と重複しています。
このエラーは、スキャッタロード記述ファイルの情報およびリンカが生成するマップ情報で実行領域の重複がないと示された場合でも発生する可能性があります。
RVCT v4.0 以前では、次に示すように、リンカから多くの情報が得られずにメッセージの内容を理解するのは困難でした。
警告 L6221E:&lt;type1&gt; 領域 &lt;regionname1&gt; は &lt;type1&gt; 領域 &lt;regionname2&gt; と重複しています
test.s サンプルファイル:
    AREA area1, CODE
    BX lr

    AREA area2, READWRITE, NOINIT
    SPACE 10

    AREA area3, READWRITE
    DCD 10
    END
scatter.txt サンプルファイル:
LR1 0x8000
{
  ER1+0
  {
    *(+ro)
  }
  ER2+0
  {
    *(+zi)
  }
  ER3+0
  {
    *(+rw)
  }
}
次を使用して構築します。
armasm test.s
armlink -o test.axf --scatter scatter.txt test.o
次のメッセージを生成します。
警告:L6221E:実行領域 [0x00008004,0x00008010) を持つ実行領域 ER2 は、ロード領域 [0x00008004,0x00008008) を持つ実行領域 ER3 と重複しています。
実行領域のベースアドレスが別の領域のロードアドレスと重複していると、警告メッセージ L6221E が表示される場合があります。これは不正なスキャッタファイルが原因である可能性があります。イメージのメモリマップには、スキャッタロードファイルによって記述される、ロードビューと実行ビューがあります。非 ZI セクションは、一意のロードアドレスを持っている必要があり、多くの場合は一意の実行アドレスも持っている必要があります。RVCT v3.1 以降、リンカによって領域が ZI 実行領域に割り当てられなくなりました。つまりこの警告の原因として、相対ベースアドレスを持つロード領域 LR2 がロード領域 LR1 の ZI 実行領域の直後に配置されていることが考えられます。
重複部分に実際のコードはなく、内部にデータも存在しないため、この警告は無害である可能性があります。
RVCT v4.0 ビルド 821 以降では、次のリンカオプションを使って各領域のアドレスと、ロード領域と重複する領域を見つけることができます。
--load_addr_map_info --map --list=map.txt
以下のいずれかを実行できます。
  • 解析後に、実行領域のアドレスにコピーされていないロード領域を実行領域が壊さないことが判断できた場合にのみ、警告を無視します。アプリケーションをデバッグし、正常に初期化して実行することも確認します。
  • 実行領域のベースアドレスを調整します。
  • FIXED スキャッタロード属性を使用して、ロード領域と実行領域に同一のベースアドレスを指定します。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6222E : 部分的にリンクされたオブジェクトに複数の ENTRY セクション(<e_oname>(<e_sname>)および <oname>(<sname>))を含めることはできません。
複数のオブジェクトが部分的にリンクされた 1 つのオブジェクトになっている場合、全オブジェクトのうちの 1 つのセクションだけがエントリポイントを持つことができます。

この場合は、リンカオプション --entry を使ってエントリポイントの 1 つを選択することはできません。
L6223E : <objname>(<secname>)のあいまいなセレクタが、実行領域 <region1> および <region2> で見つかりました。
この問題は、スキャッタファイルで <objname>(<secname>)を複数の実行領域に配置するように指定した場合に発生します。ワイルドカード(*)を使用している場合に誤って発生することもあります。この問題を解決するには、スキャッタファイルでの選択をより限定的に行います。
L6224E : <objname>(<secname>)を実行領域内に配置できませんでした。
この問題は、リンカが入力セクションをスキャッタファイルのいずれのセレクタとも一致させられなかった場合に発生します。スキャッタファイルを修正して、適切なセレクタを追加する必要があります。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6225E : 数値 <str...> が長すぎます。
L6226E : 領域 <regname> のベースアドレスがありません。
L6227E : --split を使用せずに –reloc と --rw-base を併用することはできません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6228E : '<str1>' が予期されましたが、'<str2>' が見つかりました。
L6229E : スキャッタ記述 <file> が空です。
L6230E : 複数の実行領域(<region1>、<region2>)で <secname> を選択することはできません。
L6231E : モジュールセレクタがありません。
L6232E : セクションセレクタがありません。
L6233E : 不明なセクションセレクタ '+<selector>' です。
L6234E : <ss> は単一のセレクタの後に指定する必要があります。
例えば、スキャッタファイルで次のような記述があるとします。
:
* (+FIRST, +RO)
:
+FIRST は、この(単一の)セクションを先頭に配置することを意味します。複数のセクションと一致する可能性があるセレクタ(例えば +RO+ENTRY)は、+FIRST(または +LAST)と共に使用することはできません。一緒に使用すると、エラーメッセージが生成されます。
L6235E : 複数のセクションがセレクタと一致します。すべてのセクションを FIRST/LAST にすることはできません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6236E : セレクタと一致するセクションがありません。FIRST/LAST になるセクションがありません。
スキャッタファイルでは +FIRST または +LAST になるセクションが指定されていますが、そのセクションが存在しないか、リンカがそのセクションを使われないと判断して削除しました。どのオブジェクトがプロジェクトから削除されたかを表示するには、リンカオプション --info unused を使用して下さい。例:
ROM_LOAD 0x00000000 0x4000 {  ROM_EXEC 0x00000000  {    vectors.o (Vect, +First) &lt;&lt; ここでエラー    * (+RO)  }  RAM_EXEC 0x40000000  {    * (+RW, +ZI)  } }
次のような対処方法があります。
  • リンカコマンドラインで vectors.o が指定されていることを確認します。
  • --keep vectors.o を使ってリンクし、これをリンカが削除しないようにします。または、--no_remove を使って、この最適化全体をオフにします。ARM ではこれを推奨しません。
  • 例えば、次のように ENTRY ディレクティブを vectors.s に追加して、ここがアプリケーションのエントリポイントであることをリンカに示すことをお勧めします。以下に例を示します。
    AREA Vect, CODE ENTRY ; これをエントリポイントとして定義 Vector_table ...
    
    次に、--entry Vector_table を使ってリンクし、コードの実際の開始位置を定義します。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
『armasm ユーザガイド』の以下のセクションを参照して下さい。
ENTRY
L6237E : <objname>(<secname>)に整列されていないデータへの再配置が含まれています。
L6238E : <objname>(<secname>)に '<attr1>' 関数から '<attr2>' 関数 <sym> への無効な呼び出しが含まれています。
このリンカエラーは、オブジェクトコード内でスタックのアライメントの競合が検出された場合に発生します。 『ARM アーキテクチャ用 ABI』では、コードがインタフェースで 8 バイト境界のスタック整列を保持することを推奨しています。これによって、8 バイト境界で整列されている double および long long データ型にアクセスする LDRD および STRD 命令の効率的な使用が可能になります(ARM アーキテクチャ 5TE 以降)。
~PRES8REQ8 のようなシンボルは、以下のように、オブジェクトのビルド属性です。
  • PRES8 は、オブジェクトがスタックの 8 バイト境界の整列を保持(PREServe)することを意味します。
  • ~PRES8 は、オブジェクトがスタックの 8 バイト境界の整列を保持しないことを意味します(~ は NOT の意味)。
  • REQ8 は、オブジェクトがスタックの 8 バイト境界の整列を要求(REQuire)することを意味します。
このリンクエラーは、通常、以下の 2 つの場合に発生します。
  • アセンブラコード(8 バイト境界のスタック整列を保持しない)が、コンパイルされた C/C++ コード(8 バイト境界のスタック整列を必要とする)を呼び出す。
  • 旧式のツールでコンパイルされた従来のオブジェクトと、最近のツールでコンパイルされたオブジェクトをリンクしようとする。これらの属性を持っていない従来のオブジェクトは、実際には 8 バイト境界の整列が保持できたとしても、~PRES8 として処理されます。
以下に例を示します。
エラー:L6238E:foo.o(.text)に '~PRES8' 関数から 'REQ8' 関数 foobar への無効な呼び出しが含まれています。
これは、オブジェクト foo.o に(.text という名前のセクション内に)、8 バイト境界のスタック整列を保持しない関数があり、それが 8 バイト境界のスタック整列を必要とする関数 foobar を呼び出そうとしていることを意味しています。
同様の警告に、次のようなものがあります。
警告:L6306W:'~PRES8' セクション foo.o(.text)では、'REQ8' 関数 foobar のアドレスを使用できません
この場合、外部シンボルのアドレスが参照されています。
この問題の解決策としては以下の 2 つの方法が考えられます。
  • すべてのオブジェクトとライブラリを再ビルドします。
    アセンブラファイルがある場合は、すべての命令が 8 バイト境界のスタック整列を保持することを確認し、必要に応じて修正する必要があります。
    例えば、次のようなコードは、
    STMFD sp!, {r0-r3, lr} ; 奇数のレジスタをプッシュ
    
    次のように変更します。
    STMFD sp!, {r0-r3, r12, lr} ; 偶数のレジスタをプッシュ
    
    すべての命令が 8 バイト境界のスタック整列を保持する場合、アセンブラが自動的にオブジェクトを PRES8 属性でマークするので、各アセンブラファイルの先頭に PRESERVE8 ディレクティブを追加する必要がなくなります。
  • 従来のオブジェクトまたはライブラリが、ソースコードがなかったり、資格や認証の問題などのために再ビルドできない場合は、そのオブジェクトを調べて、8 バイト境界の整列が保持されるかどうかを確認する必要があります。
    オブジェクトコードを逆アセンブルするには、fromelf -c を使って下さい。ADS 1.1 以降でコンパイルされた C/C++ コードは、通常、8 バイト境界の整列を保持しますが、アセンブルされたコードは保持しません。
    オブジェクトが確実に 8 バイト境界の整列を保持している場合は、リンカコマンドラインで --diag_suppress 6238 を使って、リンカエラー L6238E を非表示にすることができます。
    このエラーメッセージを利用すると、オブジェクトが PRES8 であることを確実にチェックできます。
    リンカ警告 L6306W は、--diag_suppress 6306 で非表示にできます。
以下の FAQ を参照して下さい。
L6239E : 非インターワーキング <t2> シンボル '<sym>'(<obj2> 内)を、<t1> コード(<obj1>(<sec1>)内)から呼び出すことはできません。
例:
Cannot call non-interworking ARM symbol 'ArmFunc' in object foo.o from THUMB code in bar.o(.text)
この問題は、オプション --apcs /interwork を使ってコンパイルされなかった foo.c によって発生した可能性があります。このオプションは、リンカによって生成されるインターワーキングベニアを使って ARM コードから Thumb コード(または Thumb から ARM)を呼び出すことを可能にします。
L6241E : <objname>(<secname>)は、'<attr1>' 関数 <sym> のアドレスを使用できません。これは、イメージに '<attr2>' 関数が含まれているためです。
'--strict' を使ってリンクした場合は、失敗してエラーになる条件が、次のようにリンカによって報告されます。
エラー:L6241E:foo.o(.text)は、'~IW' 関数 main のアドレスを使用できません。これは、イメージに 'IW' 関数が含まれているためです。
IWインターワークを意味し、~IW非インターワークを意味しています。
L6242E : オブジェクトの属性がイメージの属性と互換性がないため、オブジェクト <objname> をリンクできません。
コンパイルツールによって生成された各オブジェクトファイルには、構築する際に使用されたオプションを示す属性のセットが含まれています。リンカは、処理する各オブジェクトファイルの属性をチェックします。リンカによってそれ以前にロードされたオブジェクトファイルの属性と互換性のない属性が検出された場合、リンカはエラーを生成します。
このエラーには 以下の 3 つの一般的な原因があり、それぞれの原因に対して異なるメッセージが表示されます。
  • エラー: L6242E:オブジェクトの属性がイメージの属性と互換性がないため、オブジェクト foo.o をリンクできません。8 バイトデータ型に対する 4 バイト境界整列の要求が、8 バイトデータ型に対する 8 バイト境界整列の要求と競合しています。
    
    この問題は、ADS または RVCT 1.2 を使用してビルドされたオブジェクトに RVCT 2.0 以降を使用してビルドされたオブジェクトをリンクしようとすると発生する場合があります。ADS および RVCT 1.2 では、double および long long データ型は、4 バイト境界で整列されます(-Oldrd コンパイラオプションまたは __align キーワードを使用した場合以外)。RVCT 2.0 では、ABI が変更されたため、double および long long データ型が 8 バイト境界で整列されます。
    この変更は、double または long long データ型を使用している ADS および RVCT 1.2 のオブジェクトおよびライブラリが RVCT 2.0 以降を使用してビルドされたオブジェクトおよびライブラリとの直接的な互換性を失ったことにより、リンカによる属性の不調和がレポートされるようになったことを意味します。
    古い ADS C オブジェクトと同時に RVCT 2.x または 3.0 C オブジェクトを使用するには、RVCT 2.x または 3.0 C コードを --apcs /adsabi コマンドラインオプションを使用してコンパイルします。このオプションは RVCT 2.2 では廃止予定、RVCT 3.1 では廃止されています。
  • エラー: L6242E:オブジェクトの属性がイメージの属性と互換性がないため、オブジェクト foo.o をリンクできません。... 純粋エンディアン double 型は、複合エンディアン double と対立します。
    
    これは、ARM コンパイラツールチェーンを使用してビルドされたオブジェクト、古い SDT オブジェクトのある RVCT または ADS、あるいは、コンパイラオプション --fpu softfpa または --fpu fpa のいずれかを使用してビルドされたオブジェクトをリンクしようとすると発生する場合があります。SDT は、標準的でないリトルエンディアン double 型とビッグエンディアン long long を使用していました。ただし、ADS と RVCT は、--fpu softfpa オプションまたは --fpu fpa オプションが使用された場合以外は、業界標準である double 型と long long 型を使用します(これらのオプションは RVCT 2.1 以前のバージョンでのみサポートされます)。リトルエンディアン double 型とビッグエンディアン long long 型とは異なる形式を使用するオブジェクトファイルをリンクしようとすると、リンカによってエラーが報告されます。
    RVCT または ARM コンパイラツールチェーンを使用してプロジェクト全体を再ビルドすることを推奨します。オブジェクトまたはライブラリのソースコードがない場合、--fpu softfpa を使用してコードをコンパイルし直して下さい。
  • エラー: L6242E:オブジェクトの属性がイメージの属性と互換性がないため、オブジェクト foo.o をリンクできません。...VFP と FPA の不調和
    
    このエラーは、通常、異なる --fpu オプションを使用してビルドされたオブジェクトをリンクしようとすると発生します。同じ --fpu オプションを使用してプロジェクト全体を再ビルドすることを推奨します。
以下の FAQ を参照して下さい。
L6243E : セレクタは削除された未使用のセクションとのみ一致します。FIRST/LAST になるセクションがありません。
このセレクタと一致するすべてのセクションが、使用されないため、イメージから削除されました。詳細については、--info unused を使用して下さい。
L6244E : <type> の領域 <regionname>のアドレス(<addr>)が、<align> バイト境界に整列されていません。
L6245E : 要求された ZI セクション '<name>' を作成できませんでした。
L6248E : <objname>(<secname>)(<attr1>、領域 '<r1>' 内)で、<rtype> 再配置を <symname>(<attr2>、領域 '<r2>' 内)に対して指定することはできません。
このエラーは、位置非依存(PI)コードをビルドしようとすると発生する場合があります。以下のサンプルコードを考えてみます。
#include <stdio.h> char *str = "test"; int main(void) {     printf ("%s",str); }
これを以下のようにコンパイルおよびリンクしてみます。
armcc -c --apcs /ropi/rwpi pi.c
armlink --ropi --rwpi pi.o
リンカによって以下のエラーメッセージが表示されます。
エラー: L6248E:PI 領域 'ER_RW' 内の pi.o(.data) は、PI 領域 'ER_RO' 内の .conststring にアドレス型の再配置を持つことはできません。
これは、コンパイラが、.conststring セクション内の文字列のアドレスに初期化される必要のあるグローバルポインタ str を生成するためです。ただし、絶対アドレスは、PI システム内のアドレスを使用できないため、リンク手順が失敗します。
このエラーを解消するには、明示的なポインタを回避するようにコードを記述し直す必要があります。このために、以下のいずれかの方法を実行します。
  • 以下のようにグローバルポインタの代わりにグローバル配列を使用します。
    #include <stdio.h> const char str[] = "test"; int main(void) {     printf ("%s",str); }
    
  • 以下のようにグローバルポインタの代わりにローカルポインタを使用します。
    #include <stdio.h> int main(void) {     char *str = "test";     printf ("%s",str); }
    

以下のようなポインタ配列を使用する場合
char * list[] = {"zero", "one", "two"};
リンカは、配列内の各要素に対して別々のエラーを報告します。この場合、リストに対して、以下のような、最初の次元に配列内の要素の数があり、2 番目の次元に配列内の要素の最大サイズがある 2 次元配列を宣言することをお勧めします。
char list[3][5] = {"zero", "one", "two"};
以下のように printf() ステートメントを変更する必要があります。
printf("%s", list[1]);
コンパイラエラー番号 1359 を参照して下さい。
L6249E : エントリポイント(<address>)が複数のセクション内にあります。
L6250E : オブジェクト <objname> に、特別なシンボル <symbol> の不正な定義が含まれています。
L6251E : オブジェクト <objname> に、特別なシンボル <symbol> への不正な参照が含まれています。
L6252E : --xreffrom/--xrefto コマンドの無効な引数:'<arg>'
L6253E : 無効な SYMDEF アドレス:<number>.
L6254E : 無効な SYMDEF 型:<type>.
symdefs ファイルの内容が無効です。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6255E : ファイル <filename> を削除できませんでした:<reason>
指定されたファイルを削除しようとしたときに、I/O エラーが発生しました。このファイルが読み出し専用であるか、見つかりませんでした。
L6257E : <object>(<secname>)をオーバーレイされた実行領域 '<ername>' に割り当てることができません。
このメッセージは、スキャッタファイルに問題があることを示しています。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6258E : エントリポイント(<address>)がオーバーレイされた実行領域内にあります。
このメッセージは、スキャッタファイルに問題があることを示しています。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6259E : 予約されているワード '<name>' を <type> の領域名として使用することはできません。
<name> は予約語なので、領域には別の名前を選択して下さい。
L6260E : 同じ名前(<regionname>)を持つ複数のロード領域を使用することはできません。
このメッセージは、スキャッタファイルに問題があることを示しています。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6261E : 同じ名前(<regionname>)を持つ複数の実行領域を使用することはできません。
このメッセージは、スキャッタファイルに問題があることを示しています。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6263E : <regionname> の <addr> アドレスを <regtabregionname> 内の <pi_or_abs> 領域テーブルから指定することはできません。
Region Table には、ZI をコピー、伸張、または作成する C ライブラリ初期化コードによって使用される情報が含まれています。このエラーメッセージは、Region Table で記述できないイメージ構造がスキャッタファイルで指定されている場合に生成されます。
このエラーメッセージは、多くの場合、PI と非 PI ロード領域が同じイメージ内に混在しているときに表示されます。
L6265E : 非 PI セクション <obj>(<sec>)を PI 実行領域 <er> に割り当てることはできません。
この問題は、リンカコマンドラインで誤った ARM ライブラリを明示的に指定することによって発生する場合があります。以下のいずれかを実行して下さい。
  • ARM ライブラリの明示的な指定を削除します。
  • ライブラリ(例えば c_t.l)を正しいライブラリに置き換えます。
L6266E : RWPI セクション <obj>(<sec>) を非 PI 実行領域 <er>に割り当てることはできません。
--apcs=/rwpi でコンパイルされたファイルが、PI 属性を持たない実行領域に配置されています。
L6271E : ロード領域 <regname> に対して複数の相互に排他的な属性が指定されています
このメッセージは、スキャッタファイルに問題があることを示しています。
L6272E : 実行領域 <regname> に対して複数の相互に排他的な属性が指定されています
このメッセージは、スキャッタファイルに問題があることを示しています。
L6273E : セクション <objname>(<secname>)に相互に排他的な属性(READONLY と ZI)が含まれています
このメッセージは、オブジェクトファイルに問題があることを示しています。
L6275E : COMMON セクション <obj1>(<sec1>)は、<sym>(<obj2>(<sec2>)で定義)を定義しません
同名の COMMON セクションがいくつかある場合、リンカはそのうちの 1 つをイメージに追加するものとして選択し、他のすべてを破棄します。選択された COMMON セクションには、選択されなかったすべての COMMON セクションで定義されているすべてのシンボルを定義する必要があります。そうしない場合、選択されなかったセクションに定義されているシンボルは再び未定義になります。選択されなかったコピーで定義されているシンボルが、選択されたコピーで定義されていない場合、リンカによってエラーが生成されます。このエラーは、通常、コンパイラのエラーによって発生します。購入元にお問い合わせ下さい。
L6276E : アドレス <addr> が <s1>(<sp1>(<obj1>)から <src1> を経由)と <s2>(<sp2>(<obj2>)から <src2> を経由)の両方としてマークされています。
イメージは、指定されたアドレスに、矛盾する複数のマッピングシンボルを持つことはできません。イメージ内の各ワードの内容は、ARM($a)または THUMB($t)コード、DATA($d)、または NUMBER として、一意に型を決められているためです。ワードが ARM コードと DATA の両方であることはできません。この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6277E : 不明なコマンド '<cmd>' です。
L6278E : 予期される <str> がありません。
L6279E : <sym> のあいまいなセレクタ('<sel1>' と '<sel2>')が見つかりました。
L6280E : 指定されたパターンを使用して <sym> の名前を変更することはできません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6281E : <sym1> と <sym2> の両方の名前を <newname> に変更することはできません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6282E : <sym> の名前を <newname> に変更することはできません。これは、その名前のグローバルシンボルが存在しているためです(<obj> 内で定義)。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6283E : オブジェクト <objname> に、シンボル <symbolname> への不正なローカル参照が含まれています。
ローカルシンボルは、常にオブジェクト自体の内部で定義されるため、オブジェクトには、ローカルシンボルへの参照を含めることはできません。
L6285E : 再配置不能なロード領域 <lr_name> に R-Type のダイナミックな再配置が含まれています。最初の R-Type のダイナミックな再配置が、<object>(<secname>)内のオフセット 0x<offset>で見つかりました。
このエラーは、2 つのセグメントが実行時に離れた場所に移動される場合に、各セグメント間に PI 参照があると発生します。リンカが 2 つのセクションを実行時に離れた場所に移動できると判断した場合、リンカはセクションが静的にリンクされたアドレスから移動されても解決できる再配置(R-Type の再配置)を生成します。しかし、PI 領域には位置に依存してはならないという制約があり、他のセクションと関係がある再配置を持つことはできないため、リンカはこの再配置に失敗します(エラー L6285E を生成)。
L6286E : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)に {symname|%s} が関係しています。値(<val>)が(<rtype>)の範囲(<range>)を超えています。
このエラーは、通常、以下の状況下で発生します。
  • 手書きのアセンブリコードで、シンボルにオフセットを保持するための命令オペコード内のビット数が不足している場合。
    例えば、 オフセット範囲が ±ARM 状態の LDR または STR 命令で 4095 の場合。
  • リンカがイメージの大きなコードセクションの周りにベニアを配置することが難しい場合。
    リンカは、非常に大きなセクションの近くにベニアを配置する場合、大きなセクションの前と後のどちらにベニヤを配置するかを決める必要があります。リンカがベニアを配置してから、さらにベニアを配置する必要がある場合は、元のベニヤとそのターゲット間に配置されます。これにより、ベニアとそのターゲットとの間の距離が離れます。
    リンカは自動的にベニアとそのターゲット間の距離を少し離すことができます。ただし、元のベニヤとそのターゲット間に配置されるベニアの数が多いと、ターゲットが範囲外に移動する可能性があります。この場合は、リンカはメッセージ L6286E を生成します。
    この問題の回避策として、リンカが多くのベニアを配置している領域から、大きなコードセクションの距離を離すことをお勧めします。これは、大きなセクションをそれ自体の領域に配置するか、スキャッタロード記述ファイルの +FIRST ディレクティブを使用して位置する領域に最初に配置することによって実行できます。
    以下に例を示します。
    LOAD 0x0A000000 0x1000000 {    ROM1 +0x0    {       *(+RO)    } }
    
    これを次のように変更します。
    LOAD 0x0A000000 0x1000000 {    ROM1 +0x0    {       *(+RO)    }    ROM1A +0x0    {       large.o (+RO)    } }
    
  • .ARM.exidx 例外処理インデクステーブルが、異なる実行領域または例外処理コードからかなり離れた領域に配置されている場合。
    .ARM.exidx 例外処理インデクステーブルが単一の実行領域に配置されている必要があります。また、これらのテーブルと C++ 例外処理を使用する C++ コードの間の距離も -0x40000000 ~ 0x3fffffff の範囲内でなければなりません。そうしないと、リンカによって以下のエラーが表示されます。
    L6286:再配置 #0 (R_ARM_PREL31)、wrt シンボル xxx in XXXX.o(.ARM.exidx) の 値(0x9ff38980)が範囲(-0x40000000 - 0x3fffffff)を超えています。
    この動作は、『ARM アーキテクチャ用例外処理 ABI』(EHABI)で指定されています。EHABI では、.ARM.exidx が使用する R_ARM_PREL31 再配置は、 再配置を計算するために最も高いビット(ビット 31)を使用しないことが定義されています。
    多くの場合、この原因は、 .ARM.exidx セクションにアクセスする必要がある C++ コードが分割されて別々の実行領域に配置され、有効な範囲(-0x40000000 ~ 0x3fffffff)以外になっているためです。
    このエラーを解決するには、分割されている実行領域間にメモリがある場合は、.ARM.exidx セクションをセレクタ *(.ARM.exidx) で配置することです。以下に例を示します。
    LOAD_ROM 0x00000000 {    ER1 0x00000000   ; ER2 ~ ER1 の距離は    {                ; 範囲外です。        file1.o (+RO) ; C++ ソースから。* (+RO)    }    ERx 0x30000000    {       *(.ARM.exidx) ; ARM.exidx からの ER1 および ER2 までの距離は両方とも範囲内です。}    ER2 0x60000000     {       file2.o (+RO) ; C++ ソースから。}    ER3 +0    {       * (+RW, +ZI)    } }
    別の方法としては、テーブルに十分近い実行領域 (-0x40000000 ~ 0x3fffffff の範囲内)にコードを配置して下さい。
それ以外の場合は、最新のパッチを[Downloads]からインストールして下さい。
詳細については、以下を参照して下さい。
L6287E : 不正な配列制約(<align>)が <objname>(<secname>)に対して指定されています。
不正なアライメントが ELF オブジェクトに対して指定されました。
L6291E : 固定実行領域 <ername> のロードアドレス <addr> を割り当てられません。ロードアドレスは、使用できる次のロードアドレス <load_addr> 以上である必要があります。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6292E : 不明な属性 '<attr>' が領域 <regname> に対して指定されていますが、無視されます。
このエラーメッセージは、FIXED 属性を持つ実行領域に固有のものです。FIXED は、ロードアドレスを実行アドレスと同じにすることを意味します。リンカがこのようにできるのは、実行アドレスがロード領域内で次に使用可能なロードアドレス以上である場合だけです。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6294E : <type> の領域 <regionname> は、32 ビットアドレス空間(ベース <base>、サイズ <size> バイト)を超えています。
このエラーメッセージは、スキャッタファイルの問題に関連しています。
L6295E : 再配置 #<rel_class>:<rel_number><symname> SBREL 再配置に関する再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)では、イメージが RWPI である必要があります。
L6296E : 特別なシンボル <sym1> の定義が不正です。これは、シンボル <sym2> が絶対であるためです。
L6188E を参照して下さい。
L6300W : Common セクション <object1>(<section1>)がセクションの定義 <object2>(<section2>)より大きくなっています。
この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6301W : ファイル <filename> が見つかりませんでした:<reason>
デフォルトディレクトリで、指定されたファイルが見つかりませんでした。
L6302W : 複数の SHLNAME エントリは無視されます。
エディットファイル内で使用できる SHLNAME エントリは 1 つだけです。最初のエントリだけがリンカに認識されます。後のすべての SHLNAME エントリは、無視されます。
L6304W : 重複する入力ファイル <filename> は無視されます。
指定されたファイル名が、入力ファイルのリスト内に複数あります。
L6305W : イメージにエントリポイントが含まれていません(指定されていないか、複数選択されているために設定されていません)。
ELF イメージのエントリポイントが指定されていないか、リンクされたエントリポイントを持つセクションが複数あるために設定されていません。リンカオプション --entry を使用して、単一の一意のエントリを指定する必要があります。以下に例を示します。
--entry 0x0
または
--entry <label>
組み込みシステムの場合は、ラベル形式が一般的です。
L6306W : '<attr1>' セクション <objname>(<secname>)では、'<attr2>' 関数 <sym> のアドレスを使用できません。
L6238E を参照して下さい。
L6307W : 再配置 #<rel_class>:<rel_num>(<objname>(<secname>)内)は <sym> に関係しています。境界整列されていないデスティネーションへの分岐です。
L6308W : <membername> と一致するオブジェクトがライブラリ <libraryname> 内にありません。
ライブラリ内のオブジェクトの名前がリンクラインで指定されましたが、ライブラリ内にその名前のオブジェクトがありませんでした。
L6309W : ライブラリ <libraryname> にメンバが含まれていません。
リンカコマンドラインでライブラリが指定されましたが、ライブラリ内にメンバがありませんでした。
L6310W : ARM ライブラリが見つかりません。
この問題は、多くの場合、--libpath の引数が正しくないか、定義されている場合は、環境変数 ARMCC5LIB が無効な値であることが原因です。
--libpath リンカオプションまたは ARMCC5LIB 環境変数のいずれかを使って、適切なパスを設定して下さい。Windows インストールのデフォルトのパスは、次のようになります。
install_directory\lib
このパスに、以下のものが含まれていないことを確認して下さい。
  • \armlib
  • \cpplib
  • 末尾の円記号(\)。これらは、リンカによって自動的に追加されます。
リンカがライブラリを探す場所を表示するには、--verbose または --info libraries を使用します。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
『スタート ガイド』の以下のセクションを参照して下さい。
L6311W : シンボル <symbol>(<objname> から参照)が定義されていません。
L6218E を参照して下さい。
L6312W : <type> 領域の説明(領域 <region>)が空白です。
L6313W : 現在は <oldname> をセクションセレクタとして使用することはできません。代わりに <newname> を使用して下さい。
例えば、スキャッタファイルで IWV$$Code を使用することはできません。IWV$$CodeVeneer$$Code と置き換えて下さい。
L6314W : パターン <module>(<section>)に一致するセクションがありません。
以下に例を示します。
パターン foo.*o(ZI)に一致するセクションがありません。
これは、次のいずれかの理由による可能性があります。
  • ファイル foo.o がスキャッタファイルで指定されていますが、リンカコマンドラインのリストには含まれていません。この問題を解決するには、リンクラインに foo.o を追加して下さい。
  • foo.o の ZI データをスキャッタファイルを使って配置しようとしましたが、foo.o に ZI データが含まれていませんでした。この問題を解決するには、スキャッタファイル内の foo.o の行から +ZI 属性を削除します。
  • コードとデータを特定のアドレスに配置するために、ソースコードで __attribute__((at(address))) を使用しました。また、スキャッタファイルで *(.ARM.__AT_address) を使用していますが、アドレスを 8 桁の 16 進数として指定していません。例えば、ソースコードで __attribute__((at(0x10000))) を使用する場合は、セクション名をスキャッタファイルで *(.ARM.__AT_0x00010000) として指定する必要があります。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6315W : オブジェクト <objname> 内の複数のビルド属性シンボルは無視されます。
オブジェクトには、最大で 1 つの絶対的な BuildAttribute$$... シンボルを含めることができます。オブジェクトシンボルテーブルの、このような最初のシンボルだけがリンカに認識されます。後のすべてのシンボルは、無視されます。
L6316W : セクション <sec_no> のオブジェクト <objname> 内の複数のビルド属性シンボルは無視されます
オブジェクトには、特定のセクションに適用される、最大で 1 つの BuildAttribute$$... シンボルを含めることができます。オブジェクトシンボルテーブルの、このような最初のシンボルだけがリンカに認識されます。後のすべてのシンボルは、無視されます。
L6317W : <objname>(<secname>)は、'<attr1>' 関数 <sym> のアドレスを使用できません。これは、イメージに '<attr2>' 関数が含まれているためです。
L6318W : <objname>(<secname>)に、コードではないシンボル <sym> への分岐が含まれています。
この警告は、通常はアセンブラファイルに、同じファイル内の(別の AREA 内の)コードではないシンボルへの分岐があることを意味しています。これは、多くの場合、コードではなくデータがある場所のラベルまたはアドレスへの分岐です。
以下に例を示します。
 AREA foo, CODE
 B bar
 AREA bar, DATA
 DCD 0
 END
この場合、次のようなメッセージが表示されます。
init.o(foo) contains branch to a non-code symbol bar.
次のように、デスティネーションの名前がない場合は、
BL 0x200 ; Branch with link to 0x200 bytes ahead of PC
次のメッセージが表示されます。
bootsys.o(BOOTSYS_IVT) contains branch to a non-code symbol <Anonymous Symbol>.
この警告は、GCC によって生成されたオブジェクトをリンクした場合にも表示されることがあります。GCC は、各オブジェクトへの内部的な参照に、リンカの再配置を使用します。これらの再配置のターゲットは、通常、ターゲットがコードであるかデータであるかをリンカが判断するための適切なマッピングシンボルを持たないため、警告が生成されます。一方、armcc は、このようなすべての参照をコンパイル時に解決します。
L6319W : <cmd> コマンドは無視されます。セクション <objname>(<secname>)が見つかりません。
例えば、Linux アプリケーションをビルドするとき、
--keep *(.init_array)
をメイクファイルのリンカコマンドラインで指定したとしても、このセクションは C++ なしでビルドした場合には存在しないため、次の警告が報告されます。
Ignoring --keep command. Cannot find section *(.init_array)
通常は、この警告を無視するか、--diag_suppress 6319 を使って非表示にすることができます。
L6320W : <cmd> コマンドは無視されます。引数 '<argname>' が見つかりません。
L6323W : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)は <sym> に関係しています。複数のバリアントが存在します。<type> バリアントを使用してあいまいさを解決します
L6324W : ロード領域 <regname> に指定された <attr> 属性は無視されます。
この属性は、実行領域のみに適用されます。ロード領域に対して指定された場合、リンカはこの属性を無視します。
L6325W : ベースアドレスからの +offset を使用する <attr> 属性が領域 <regname> に対して指定されていますが、無視されます。
この属性は、+offset 形式のベースアドレスを使用する領域には適用されません。+offset 形式を使用する領域に対して指定された場合、リンカはこの属性を無視します。
+offset 形式のベースアドレスを使用する領域は、 PIRELOC、および OVERLAY 属性を以下のいずれかから継承します。
  • 記述内の前の領域。
  • ロード領域内の最初の実行領域である場合は、親ロード領域。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6326W : 非ルート実行領域 <ername> の ZEROPAD 属性は無視されます。
ZEROPAD は、ルート実行領域のみに適用されます。ルート領域は、その実行アドレスがロードアドレスと同じである領域です。そのため、実行時に移動やコピーが必要ありません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6329W : パターン <module>(<section>)は、削除された未使用のセクションとのみ一致します。
このパターンと一致するすべてのセクションが、使用されないため、イメージから削除されました。詳細については、--info unused を使用して下さい。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6330W : シンボル <symbol>(<objname> から参照)が定義されていません。未使用のセクションが削除されました。
これは、未使用のセクション内のベースシンボルとリミットシンボルが参照されていたことを意味しています。詳細については、--info unused を使用して下さい。
例えば、コードとデータを RVCT 2.1 以降のバージョンで配置するためにスキャッタファイルを使用する場合は、スキャッタファイルにリンカ生成テーブル ZISection$$Table が含まれると、リンカによって、このエラーが表示されます。RVCT 2.1 で導入された新しい領域テーブルの形式には、ZISection$$Table が含まれません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6331W : パターン <pat> と一致する有効なグローバルシンボルがありません。
L6332W : シンボル <sym1>(<obj1> から参照)が定義されていません。シンボル <sym2> に解決されました。
L6334W : 領域 <regname> のオーバーアライメント <overalignment> は負にできません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6335W : <objname>(<secname>)内の ARM インターワーキングコードに、ARM 非インターワーキングコードに対する無効な末尾の呼び出しが含まれている可能性があります。
コンパイラは、コードのサイズとパフォーマンスを向上させるために、末尾呼び出しの最適化を行うことができます。しかし、ARMv4T コードでは、Thumb インターワーク(IW)関数が(ベニアによって)ARM IW 関数を呼び出すシーケンスで、ARM 非インターワーク(~IW)関数の末尾呼び出しが行われる問題があります。ARM 非 IW 関数からの復帰では、適切な BX 命令を使わずに、復帰アドレスをスタックから PC にポップする場合があります。リンカはこの状況を検出してこの警告を報告できます。
Thumb IW からの Thumb 非 IW の末尾呼び出しは発生しません。Thumb の B での末尾呼び出しは範囲が狭く、同じ ELF セクション内の関数として生成されるだけであり、それらも Thumb になるためです。
この警告は、オブジェクトに無効な末尾呼び出しが含まれている可能性があるという点で問題ですが、リンカはオブジェクトの属性を調べているだけであり、そのセクションの内容を調べてはいないので、確実ではありません。
警告を回避するには、コードベース全体をユーザライブラリも含めて、--apcs /interwork で再コンパイルするか、手動で ARM IW 関数を調べて末尾呼び出し(通常の分岐 B 命令を使って関数呼び出しが行われている個所)を確認し、この警告が実際に問題であるかどうかをチェックします。この警告は、--diag_suppress L6335W を使用して非表示にできます。
L6337W : Common コードセクション <o1>(<s1>)および <o2>(<s2>)に互換性のない浮動小数点リンケージが含まれています
L6339W : 実行領域 <er_name> の RELOC 属性は無視されます。
実行領域には、明示的に RELOC 属性を指定することはできません。この属性になるのは、+offset 形式のアドレシングを使用している場合に、親ロード領域または前の実行領域から属性を継承するときだけです。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6340W : リンク型 <linktype> の場合、first オプションと last オプションは無視されます
--first および --last オプションは、部分的にリンクされたオブジェクトを作成する場合には無意味です。
L6366E : <object> 属性 <attr> は、指定された CPU と FPU の属性 <cli> <diff> と互換性がありません。
L6367E : <object>(<section>)属性 <attr> は、指定された CPU と FPU の属性 <cli> <diff> と互換性がありません。
L6368E : <object>(<section>)で定義された <symbol> の属性 <attr> は、指定された CPU と FPU の属性 <cli> <diff> と互換性がありません。
L6369E : <object>(ABSOLUTE)で定義された <symbol> は、指定された CPU と FPU の属性 <cli> <diff> と互換性がありません。
L6370E : CPU <cpu> は FPU <fpu> と互換性がありません
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6371E : CPU と FPU の属性を追加しています:<attrs>
L6372E : イメージには少なくとも 1 つのロード領域が必要です。
L6373E : libattrs.map ファイルがシステムライブラリディレクトリ <dir> で見つかりません。ライブラリの選択が不適切な可能性があります。
L6384E : 名前 <region> のロード実行領域がまだ行 <line> に見つかりません。
原因として、スキャッタファイルでの制限計算で現在のベースアドレスを使用したことが考えられます。以下に例を示します。
ER_foo 0 ImageBase(ER_foo)
L6385W : 行 <line> で加算オーバーフローが発生しました
L6386E : 実行領域の式は、行 <line> のベースアドレス計算でのみ使用できます
L6387E : ロード領域の式は、行 <line> の ScatterAssert 式でのみ使用できます
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6388E : 行 <line> で ScatterAssert 式 <expr> のエラーが発生しました
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6389E : 行 <line> のロード領域 <name> が未完了で、領域の長さに依存する演算を使用できません
L6390E : 条件演算子 (expr) ?行 <line> の(expr):(expr)に(expr)がありません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6404W : 実行領域 <name> には、EMPTY、ZEROPAD および PADVALUE の組み合わせよりも FILL 値を使用して下さい。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6405W : どの .ANY セレクタもセクション <name>(<objname>)に一致しません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6406W : セクション <name>(<objname>)と一致する .ANY セレクタがある実行領域のスペースがありません。
この問題は、.ANY を含むスキャッタファイル領域に、リストされているセクションを配置するための十分なスペースがない場合に発生します。セクションのための十分なスペースがあるように、スキャッタファイルを変更する必要があります。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6407W : 集合サイズ 0x<size> バイトのセクションは .ANY セレクタに収まりません。
この警告は、どの .ANY セレクタにも配置できないイメージデータの総量を特定します。
例えば、次のように、ZI データの量に対して小さすぎる実行領域に .ANY(+ZI) が配置される場合です。
ROM_LOAD 0x8000 {     ROM_EXEC 0x8000     {         .ANY(+RO,+RW)     }     RAM +0 0x{...}&lt;&lt;&lt; 領域の最大長が小さすぎる     {         .ANY(+ZI)     } }
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6408W : 出力は --fpic ですが、<obj> のセクション <sec> には FPIC 属性がありません。
L6409W : 出力は --fpic ですが、オブジェクト <obj> には FPIC 属性がありません。
L6410W : STV_DEFAULT の可視性 <vis> がないシンボル <sym> は、静的に解決される必要があり、<lib> の定義は使用できません。
L6411W : 起動シンボル <name> の定義と互換性のあるライブラリが存在しません。
L6412W : オブジェクト <obj> のセクション <sec> に対して、オブジェクト <srcobj> のセクション <srcsec> の非 R_ARM_ABS32 再配置のマージを無効にします。
L6413W : オブジェクト <obj> のセクション <sec> のマージを無効にします。セクションに、配置が間違った文字列が含まれています。
L6414E : --ropi が --rwpi または --rw-base なしで使われています。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
--ropi
--rwpi
L6415E : このイメージと互換性のあるライブラリの一意のセットが見つかりませんでした。--cpu オプションを使用して特定のライブラリを選択することを推奨します。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6416E : <objname>(<secname>)内の <relclass>:<idx> にある再配置 <type> は、そのターゲットからのオフセット <offset> がある状態ではベニアを挿入することができません。
L6417W : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)は、予約済みのタグ付けシンボル(#<idx>)と関係しています。
L6418W : <objname>(<secname>)で定義されたタグ付けシンボル <symname> は、認識されません。
L6419W : 未定義のシンボル <symbol>(<objname> から参照)がインポートされました。
L6420E : 認識された型ではないため、<oepname>(<secname>:<secnum>)は無視されます。
L6422U : PLT の生成には ARM 命令をサポートしているアーキテクチャが必要です。
プロシージャリンクテーブル(PLT)を生成するリンカの場合は、ARM 命令セットをサポートしているターゲットを使用する必要があります。例えば、Cortex-M3 ターゲットに対して、リンカは PLT を生成できません。
L6423E : 同じコレクション内では、セクション <secname> に種類の異なるソート属性を含めることはできません。
L6424E : 同じコレクション内では、セクション <secname1> およびセクション <secname2> を別の実行領域に分けることはできません。
L6425E : 同じコレクション内では、セクション <secname> に長さの異なるセクション名を付けることはできません。
L6426E : 同じコレクション内では、セクション <secname> は重複した名前を持つことはできません。
L6427E : <sym> の名前は既に <name> に変更されているため、<newname> に変更できません。
L6429U : オープンするファイルの最大数を <val> に設定しようとしましたが、エラーコード <error> により失敗しました。
armlink がいつでも開いておけるファイルハンドルの数を増やそうとしましたが、失敗しました。
L6431W : <object>(<section>)で定義されたシンボル <symbol> の互換性のない列挙型サイズ属性は無視されます。
L6432W : オブジェクト <object>(<section>)の互換性のない列挙型サイズ属性は無視されます。
L6433W : オブジェクト <object> の互換性のない列挙型サイズ属性は無視されます。
L6434W : <object>(<section>)で定義されたシンボル <symbol> の互換性のない wchar_t サイズ属性は無視されます。
L6435W : セクション <object>(<section>)の互換性のない wchar_t サイズ属性は無視されます。
L6436W : オブジェクト <object> の互換性のない wchar_t サイズ属性は無視されます。
L6437W : 再配置 #<rel_class>:<idx>(<objname>(<secname>)内)は <armsym> に関係しています。オブジェクト <armobjname> の型なしシンボルへの分岐の再配置。ターゲットの状態が不明です。
L6438E : __AT セクション <objname>(<secname>)のアドレス <address> は、少なくとも 4 バイト境界で整列されている必要があります。
L6439W : <objname>(<secname>)で複数回定義されているグローバルシンボル <sym> が、<selobj>(<selsec>)で定義されているシンボルのために拒否されました。
L6440E : リンク時のコード生成で予期しないエラーが発生しました
L6441U : 開いているファイルの最大数を取得するためのシステムコールがエラー <error> のために失敗しました。
L6442U : リンカには開かれているファイルが最低でも <min> 個必要です。現在のシステムの上限は <max> ファイルです。
L6443W : 領域 <region> のデータ圧縮が無効になっています。領域には、圧縮されたアドレスに依存しているシンボル <symname> への参照が含まれています。
リンカでは、領域の内容が圧縮前に固定される必要があり、圧縮後は内容を変更できません。そのため、圧縮可能領域は圧縮処理に依存するメモリ位置を参照できません。
L6444I : シンボルの可視性:<symname> は <visibility> に設定されています。
L6445I : シンボルの可視性:<symname> は、既存の <old_vis> および新しい <new_vis> から <set_vis> にマージされました。
L6447E : SHT_PREINIT_ARRAY セクションは共有オブジェクトでは使用できません。
L6448W : <filename> の処理中:<message>
L6449E : <filename> の処理中:<message>
L6450U : ライブラリ <libname> が見つかりません。
L6451E : Thumb を許可のうえ作成された <object> は、ARM 専用のリンクでは使用できません。
L6452E : Thumb を許可のうえ作成された <object>(<section>)は、ARM 専用のリンクでは使用できません。
L6453E : Thumb を許可のうえ作成された <object>(<section>)で定義された <symbol> は、ARM 専用のリンクでは使用できません。
L6454E : Thumb を許可のうえ作成された <object>(ABSOLUTE)で定義された <symbol> は、ARM 専用のリンクでは使用できません。
L6455E : シンボル <symbolname> には、<object1> と <object2> による廃止予定の ARM/Thumb 同義語定義が含まれています。
L6459U : テンポラリファイルを作成できませんでした。
L6462E : 共有ライブラリから <sym> への参照は、オブジェクト <obj> で Visibility が Hidden または Protected に設定された定義にのみ一致します。
L6463U : 入力オブジェクトに <archtype> 命令が含まれていますが、オブジェクト属性に基づく <archtype> アーキテクチャの有効なターゲットが見つかりません。--cpu オプションを使用して特定の CPU を選択することを推奨します。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6464E : --dynamic_debug、--emit-relocs、および --emit-debug-overlay-relocs のうちの 1 つだけを選択できます。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6467W : ライブラリから注釈がレポートされています:<msg>
L6468U : --base_platform とコードを含む複数のロード領域では、--pltgot=direct および --pltgot=none のみがサポートされています。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6469E : --base_platform は、非 RELOC 実行領域を含む RELOC ロード領域をサポートしていません。ロード領域 <lrname> の実行領域 <ername> のベースアドレスには、+0 を使用して下さい。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6470E : PLT セクション <secname> をロード領域 <lrname> 外に移動できません。
L6471E : 分岐の再配置 <rel_class>:<idx>(セクション <secname>、オブジェクト <objname>)は、オブジェクト <armobjname> の ARM 絶対 <armsym> シンボルを参照します。Thumb アドレスとして扱う場合は、エラーを非表示にします。
L6475W : IMPORT/EXPORT コマンドは、--override_visibility が指定されていない場合は無視されます
ステアリングファイル内の EXPORT コマンドを使うか、--undefined_and_export コマンドラインオプションを使ってエクスポートしようとしたシンボルは、可視性が低いため、エクスポートされませんでした。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
EXPORT
L6616E : RegionTable <sec_name>(<obj_name>)のサイズを増やすことができません
L6617E : ZISectionTable <sec_name>(<obj_name>)のサイズを増やすことができません
L6629E : 括弧が一致しません。)が予期されましたが、<character> が、位置 <col>、行 <line> で見つかりました
このメッセージは、スキャッタファイルの解析エラーを示しています。
L6630E : トークンの先頭が無効です。数値または(が予期されましたが、<character> が、位置 <col>、行 <line> で見つかりました。
このメッセージは、スキャッタファイルの解析エラーを示しています。
L6631E : 行 <line> にゼロによる除算があります
このメッセージは、スキャッタファイルの式評価エラーを示しています。
L6632W : 行 <line> で除算がアンダーフローしています
このメッセージは、スキャッタファイルの式評価エラーを示しています。
L6634E : '<filename>' のプリプロセッサコマンドが長すぎます。最大長は <max_size> です。
このメッセージは、スキャッタファイルのプリプロセッシングに問題があることを示しています。
L6635E : プリプロセッサによって生成された中間ファイル '<filename>' を開くことができません:<reason>
このメッセージは、スキャッタファイルのプリプロセッシングに問題があることを示しています。
L6636E : '<filename>' のプリプロセッサ処理ができませんでした。
このメッセージは、スキャッタファイルのプリプロセッシングに問題があることを示しています。
L6637W : 入力オブジェクトが指定されていません。少なくとも 1 つの入力オブジェクトまたはライブラリ(オブジェクト)を指定する必要があります。
少なくとも 1 つの入力オブジェクトまたはライブラリ(オブジェクト)を指定する必要があります。
L6638U : オブジェクト <objname> には、リンク順序の依存関係サイクルがあります。SHF_LINK_ORDER を使用してセクションをチェックして下さい。
L6640E : PDTTable セクションは最小のスタティックデータアドレスではありません。最小のスタティックデータセクションは <secname> です。
RWPI の共有ライブラリを実装するシステムは、プロセスデータテーブル(PDT)を使用します。これはリンカによって静的なリンク時に作成され、イメージのデータ領域の先頭に配置される必要があります。
このメッセージは、PDT をイメージのデータ領域の先頭に配置することをスキャッタファイルが許可していないことを示しています。
メッセージが表示されないようにするには、スキャッタファイルを調整して、PDT が正しく配置されるようにします。このメッセージは、間違ってオブジェクトファイルを --apcs=/rwpi でビルドした場合にも表示されます。
L6642W : <obj_name> が --vfe を使用してコンパイルされていないため、未使用の仮想関数の削除は正しく機能しない可能性があります
L6643E : セクション <sectionname> 内の仮想関数の削除情報は、間違ったセクションを参照しています。
このメッセージは、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6644E : セクション <oepname>(<sectionname>)内の仮想関数の削除情報の読み出し中に、予期せずにバッファの最後に到達しました。
このメッセージは、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6645E : セクション <oepname>(<sectionname>)内の仮想関数の削除情報が正しくありません:オフセット <offset> での再配置があるはずです。
このメッセージは、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6646W : セクション <oepname>(<sectionname>)内の仮想関数の削除情報に、オフセット <offset> より前からのガベージが含まれています。
このメッセージは、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6647E : <vcall_objectname>(<vcall_sectionname>)の仮想関数の削除情報は、セクション <curr_sectionname>(オブジェクト <curr_objectname>)、オフセット <offset> が仮想関数または RTTI への再配置であるのに、そのオフセットに再配置がないことを示していますが、これは誤りです。
このメッセージは、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6649E : EMPTY 領域 <regname> に最大サイズを指定する必要があります。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6650E : オブジェクト <objname> の Group セクション <sectionidx> に無効なシンボルインデクス <symidx> が含まれています。
L6651E : セクション <secname>(オブジェクト <objname> 内)に SHF_GROUP フラグがありますが、どのグループのメンバにもなっていません。
L6652E : データセクションのバイト順序を逆にすることができません。入力オブジェクトは <inputendian> で、要求されたデータバイト順序は <dataendian> です。
L6654E : 拒否されたローカルシンボル <symname> は、グループメンバ <objname>(<nongrpname>)以外から参照されています
このメッセージは、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6656E : 内部エラー:vfe セクションのリストに <oepname>(<secname>)という非 vfe セクションが含まれています。
このメッセージは、コンパイラのエラーを示している場合があります。購入元にお問い合わせ下さい。
L6664W : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)は、シンボル(最後のマップシンボル #<last> の前の #<idx>)に関係しています。
L6665W : Lib$$Request$$armlib Lib$$Request$$cpplib が定義されていません。ARM ライブラリを検索しません。
この警告は、次のコードによって生成されます。
  AREA Block, CODE, READONLY
  EXPORT func1
  ;IMPORT ||Lib$$Request$$armlib||
  IMPORT printf
func1
  LDR r0,=string
  BL printf
  BX lr
  AREA BlockData, DATA
string DCB "mystring"
  END
リンカはライブラリを参照するようには指示されていないため、シンボル printf を見つけられません。
この問題は、以下のエラーも発生させます。
L6218E: Undefined symbol printf (referred from L6665W.o).
ライブラリが必要ない場合は、このメッセージを無視して下さい。そうでない場合は、以下の行のコメント化を解除して、エラーと警告が出ないようにして下さい。
IMPORT ||Lib$$Request$$armlib||
L6679W : 出力 ELF セクション #<sec> '<secname>' のデータは、圧縮に適していませんでした(<data_size> バイトが <compressed_size> バイトになりました)。
L6682E : マージセクション <oepname>(<spname>)はコードセクションです
L6683E : マージセクション <oepname>(<spname>)にサイズ 0 の要素があります
L6684E : セクション <spname>(オブジェクト <oepname> 内)に SHF_STRINGS フラグがありますが、SHF_MERGE フラグがありません
L6685E : セクション <spname>(オブジェクト <oepname> 内)に SHF_MERGE セクションへの分岐再配置 <rel_idx> があります
L6688U : 再配置 #<rel_class>:<rel_idx>(<oepname>(<spname>)内)は、負の要素を参照しています。
L6689U : 再配置 #<rel_class>:<rel_idx>(<oepname>(<spname>)内)。デスティネーションがマルチバイト文字の中間にあります
L6690U : マージセクション <spname>(オブジェクト <oepname> 内)にシンボルがありません
L6703W : セクション <er> は圧縮不能として暗示的にマークされています。
L6707E : 実行領域 <regionname> のパディング値は PADVALUE 属性を使用して指定されていません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6708E : <secname>(オブジェクト <oepname> 内)のデバッグフレームを処理できませんでした。
L6709E : <secname>(オブジェクト <oepname> 内)の fde を関連付けることができませんでした。
L6713W : オフセット <offset>(<oepname>(<secname>)内)の関数にはシンボルがありません。
L6714W : オブジェクト <oepname> の例外インデクステーブルセクション .ARM.exidx にデータが含まれていません。
L6720U : イメージ内に存在する例外テーブル <spname>(オブジェクト <oepname> 内)に --noexceptions が指定されています。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6721E : セクション #<secnum> '<secname>' (<oepname> 内)は認識されないため、総称的に処理できません。
L6725W : ダイナミックな再配置があるため、未使用の仮想関数の削除は正しく機能しない可能性があります
L6728U : リンク順序の依存関係がセクション番号 <from> から無効なセクション番号 <to> に指定されています。
L6730W : 再配置 #<rel_class>:<index>(<objname>(<secname>)内)は <name> に関係しています。シンボルに ABI 型 <type>、以前の型 <legacy_type> があります。
この警告は、RVCT 2.0 と 2.1 間でのリンカの動作の変更に関係しています。

以下の例は、 --strict_relocations を使用した場合、または入力オブジェクトが RVCT 2.0 以前の場合にのみ警告メッセージを生成します。
例:
    AREA foo, CODE, READONLY
    CODE32
    ENTRY
    KEEP
func proc
    NOP
    ENDP
    DCD foo
    END
RVCT 2.0 以前では、内容(この例では ARM コード)に基づきインターワーキングが必要かどうかがリンカで決定されます。RVCT 2.1 以降では、リンカは ABI に従います。ABI では、インターワーキングを適用するかどうかを決定するのはシンボルのタイプ(この例では STT_SECTION(データとして解釈される))であると定義されています。
最も単純な解決方法は、データをアセンブリソースファイル内の別のデータ領域へ移動することです。
また、--diag_suppress 6730 を使って、この警告を非表示にすることもできます。
L6731W : <secname> から参照されているセクションが存在しないため、未使用の仮想関数の削除は正しく機能しない可能性があります。
L6733W : <objname>(<secname>)は <lr1name> から <lr2name> へのオフセットの再配置を含んでいます。ロード領域は厳密に相対的である必要があります。
L6738E : 再配置 #<rel_class>:<relocnum><wrtsym> に関する再配置 #<rel_class>:<relocnum>( <oepname>(<secname>)内)は、GOT 相対再配置ですが、_GLOBAL_OFFSET_TABLE_ が未定義です。
GNU によって生成される一部のイメージは、_GLOBAL_OFFSET_TABLE_ という名前のシンボルを参照できます。再配置を生成する GOT Slot がなく、リンカが GOT base の適切なアドレスを取得できない場合は、リンカによってこのエラーメッセージが生成されます。
L6739E : バージョン '<vername>' と未定義のバージョン '<depname>' に依存関係があります。
L6740W : '<symverscr>' にバージョン '<vername>' のシンボル '<symname>' が定義されていますが、入力オブジェクト内にありません。
L6741E : バージョンが付与されたシンボルのバインディングは 'local:' または 'global:' である必要があります。
L6742E : '<oepname>' によって定義されたシンボル '<symname>' です。デフォルトのバージョンシンボル '<defversym>' と一致しません。
L6743E : 再配置 #<rel_class>:<index>(<oepname>(<spname>)内)に、別の定義を持つ <symname> が関係しています。内部の整合性チェックが失敗しました
L6744E : 再配置 #<rel_class>:<index>(<oepname>(<spname>)内)に未定義のシンボル <symname> が関係しています。内部の整合性チェック:
L6745E : ターゲット CPU <cpuname> は ARM をサポートしておらず、<objname>(<secname>)に ARM コードが含まれています
L6747W : ターゲットアーキテクチャを <oldversion> から <newversion> へ移行しています。
リンカは、廃止された ARMv3 を指定するオブジェクトを検出した場合、そのオブジェクトを ARMv4 にアップグレードして、ARM ライブラリで使用できるようにします。
L6748U : ファイル <oepname> にダイナミック配列、シンボルテーブル、またはストリングテーブルがありません。
L6751E : ソートアルゴリズム <str> を使用できません。
L6753E : CallTree ソートでは、CallTree ソート ER 内にエントリポイントが必要です。
L6761E : シンボル <symname> を削除します。
L6762E : <imgtype> のビルド時には '<type>' PLT エントリをビルドできません。
L6763W : 共有オブジェクトまたは DLL のビルド時には、'<optname>' を使用できません。オフに切り替えています
L6764E : Thumb シンボル <symname> をコールするターゲットアーキテクチャ 4T に対する PLT エントリを作成できません
L6765W : アーキテクチャ 4T オブジェクトのリンク中には、共有オブジェクトのエントリポイントは ARM 状態である必要があります。
この問題は、GNU C ライブラリとリンクする場合に発生することがあります。GNU スタートアップコード crt1.o にはエントリポイントに関するビルド属性がないので、リンカはどの実行状態(ARM または Thumb)でコードを実行すればよいのかを特定できません。GNU C ライブラリスタートアップコードは ARM コードなので、この警告は無視しても問題ありません。--diag_suppress 6765 を使って、警告を非表示にすることもできます。
L6766W : アーキテクチャ 4T の PLT エントリは、インクリメンタルリンキングをサポートしていません。
L6769E : 再配置 #<rel_class>:<relocnum>(<oepname>(<secname>)内)は <wrtsym> に関係しています。シンボルに GOTSLOT がありません。
L6770E : ダイナミック配列のサイズおよび内容を変更するタイミングが遅すぎて、変更を確定できません。
L6771W : <oepname>(<secname>)は RO データに 1 つ以上のアドレス型再配置を含んでいます。セクション RW を、実行時にダイナミックに再配置されるように生成しています。
L6772W : --sysv でのビルド中にインポート <symname> コマンドが無視されました。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
--sysv
L6774W : <objname>(<secname>)に長さが正しくないデバッグフレームエントリがあります。
L6775W : <objname>(<secname>)内に、このセクションにない CIE を使用する FDE があります。
L6776W : <objname>(<secname>)のデバッグフレーム内に実行セクションが記述されていません。
L6777W : <objname>(<secname>)内のデバッグフレームに <actual> 個の再配置があります(<expected> 個を期待)
L6778W : <objname>(<secname>) 内のデバッグフレームでは、64 ビット DWARF を使用します。
L6780W : <origvis> の可視性は、<impexp> を介してシンボル '<symname>' から削除されました。
L6781E : <objname>(<secname>)内の再配置番号 <rel_class>:<rel_number>(<rtype>、wrt シンボル <symname>)のパーティション番号 <part> では値(<val>)を表せません。
L6782W : 再配置 #<rel_class>:<relnum><oepname> の再配置番号 <rel_class>:<relnum> '<rtype>' では、<pltgot_type> PLT エントリと共に正しくデータにアクセスできない可能性があります。
L6783E : マッピングシンボル #<symnum> '<msym>'(<oepname>(<secnum>:<secname>)内)が、セクションサイズ(シンボルオフセット =0x<moffset>、セクションサイズ =0x<moffset>、セクションサイズ=0x<secsize>)の末尾または外部で定義されています
このメッセージは、セクションのアドレスが ELF セクションの末尾またはその外の位置を指していることを示しています。この問題は、インライン展開された空のデータセクションによって発生する場合があり、オブジェクトファイルに問題がある可能性を示しています。--diag_warning 6783 を使って、このエラーを非表示にすることもできます。
L6784E : 値が <value> のシンボル #<symnum> '<symname>'(<oepname>(<secnum>:<secname>)内)のサイズは 0x<size> ですが、これはセクションの範囲を超えています。
リンカが、セクションの外まで拡がるサイズのシンボルを検出しました。このメッセージは、RVCT 2.2 ビルド 503 以降のツールチェーンでは、デフォルトでただの警告です。--diag_warning 6784 を使って、このエラーを非表示にできます。
L6785U : '<libname>' からのインポート用にマークされたシンボル '<symname>' は既に '<oepname>' によって定義されています。
L6786W : マッピングシンボル #<symnum> '<msym>'(<oepname>(<secnum>:<secname>)内)が、非境界整列オフセット=0x<moffset> で定義されています
L6787U : エントリが <regionname> に対して必要とする領域テーブルハンドラ '<handlername>' が見つかりませんでした。
L6788E : 実行範囲 <er1name> を [<base1>,<limit1>) にスキャッタローディングすると、[<base2>,<limit2>) にある実行領域 <er2name> の内容が実行時に壊れます。
この問題は、スキャッタローディングが行われ、実行領域が他の実行領域(それ自体または別の領域)を部分的または全体的に上書きしてしまう場所に配置される場合に発生します。
例えば、次のコードはこのエラーを生成します。
LOAD_ROM 0x0000 0x4000 {  EXEC1 0x4000 0x4000  {  * (+RW,+ZI)  }  EXEC2 0x0000 0x4000  {  * (+RO)  } }
そして、次のメッセージが表示されます。
エラー:L6788E:実行範囲 EXEC2 のスキャッタローディングを行うと、実行時に実行範囲 EXEC2 のコンテンツが壊れる可能性があります。
次のコードからはエラーは生成されません。
LOAD_ROM 0x0000 0x4000 {  EXEC1 0x0000 0x4000  {  * (+RO)  }  EXEC2 0x4000 0x4000  {  * (+RW,+ZI)  } }
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6789U : ライブラリ <library> メンバ <filename>:エンディアンが一致しません。
L6790E : 再配置 #<rel_class>:<relnum>(<objname>(<secname>)内)は <symname> に関係しています。GOT 生成配置を介して、ウィーク参照をインポートできない可能性があります
L6791E : 0x<offset><oepname>(<secname>)に不明なパーソナリティルーチン <pr> があります。
L6792E : オフセット 0x<offset><oepname>(<secname>)に記述子があります。
L6793E : クリーンアップ記述子 <oepname>(<secname>)内のオフセット 0x<offset> で、ランディングパッド参照が必要です。
L6794E : キャッチ記述子 <oepname>(<secname>)内のオフセット 0x<offset> で、ランディングパッド参照が必要です。
L6795E : キャッチ記述子 <oepname>(<secname>)内のオフセット 0x<offset> で、RTTI 参照が必要です。
L6796E : オフセット 0x<offset><oepname>(<secname>)に位置する記述子が、セクションの終了位置を越えました。
L6797E : 例外テーブル <oepname>(<secname>)でオフセット 0x<offset> に位置するデータが、セクションの終了位置を越えました
L6798E : 関数指定記述子 <oepname>(<secname>)内のオフセット 0x<offset> で、RTTI 参照が必要です。
L6799E : 関数指定記述子 <oepname>(<secname>)内のオフセット 0x<offset> で、ランディングパッド参照が必要です。
ランディングパッドは、例外が発生した後でクリーンアップを行うコードです。リンカが古い形式の例外テーブルを検出した場合は、これが自動的に新しい形式に変換します。
このメッセージは、新しいバージョンのリンカと古いバージョンのコンパイラを使用していない限り、表示されません。
L6800W : 0x<offset><oepname>(<secname>)に位置する汎用モデルパーソナリティルーチンを変換できません。
パーソナリティルーティンは、例外処理スタックをアンワインドします。リンカが古い形式の例外テーブルを検出した場合は、これが自動的に新しい形式に変換します。このメッセージは、コンパイラでのエラーを示しています。購入元にお問い合わせ下さい。
L6801E : <secarmthumb> コードを含む <objname>(<secname>)は、'~IW(全コードに対しては意図されていないユーザはインターワークする必要があります)' <funarmthumb> 関数 <sym> のアドレスを使用できません。
リンカは、非インターワーキング(~IW)関数が他の状態のコードによってアドレスを取得される個所を診断できます。このエラーはデフォルトでは無効になっていますが、--strict を使ってリンクすることで有効にできます。このエラーは --diag_warning 6801 を使って警告に降格することができます。後で、必要であれば、--diag_suppress 6801 を使って完全に非表示にすることもできます。
例えば、次のように、a.c 内のコードが t.c 内の非インターワーキング関数のアドレスを使用したとします。
armcc -c a.c
armcc --thumb -c t.c
armlink t.o a.o --strict
次のメッセージが表示されます。
エラー:L6801E:ARM コードを含む a.o(.text)には、'~IW' Thumb 関数 foo のアドレスを使用できません。
L6802E : 再配置 #<rel_class>:<idx>(<objname>(<secname>)内)は <armsym> に関係しています。<armobjname>(<armsecname>)での非 Thumb シンボルに対する Thumb 分岐。
L6803W : 再配置 #<rel_class>:<idx>(<objname>(<secname>)内)は <armsym> に関係しています。Thumb 分岐が <armobjname>(<armsym>)にあるターゲットに到達することはほとんどありません。
L6804W : 古いシンボル型 STT_TFUNC の使用が検出されました
L6805E : 再配置 #<rel_class>:<idx>(<objname>(<secname>)内)は <armsym> に関係しています。<armobjname> 内の型なし絶対シンボルへの分岐です。ターゲットの状態が不明です。
L6806W : 再配置 #<rel_class>:<idx>(<objname>(<secname>)内)は <othersym> に関係しています。<otherobjname>(<othersecname>)内の型なしシンボルへの分岐です。ABI では、外部コードシンボルが STT_FUNC 型である必要があります。
L6807E : 再配置 #<rel_class>:<idx>(<objname>(<secname>)内)は <othersym> に関係しています。同じセクションの型なしシンボルへの分岐です。状態の変更が必要です。
L6809W : 再配置 <rel_class>:<idx>(<objname>(<secname>)内)は、廃止された型 <rtype> です。ABI 準拠の型については ARMELF を参照して下さい。
L6810E : 再配置 <rel_class>:<idx>(<objname>(<secname>)内)は、廃止された型 <rtype> です。
多くの場合、再配置のエラーと警告は、前のバージョンの ARM ツールでビルドされたオブジェクトファイルをリンクしている場合に発生します。
再配置のエラーと警告を表示するには、--strict_relocations スイッチを使用して下さい。このオプションを使用すると、オブジェクトの ABI 準拠を確認できます。デフォルトではオフになっており、廃止されたり廃止予定だったりする再配置は、リンカによって自動的に処理されます。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6812U : 不明なシンボルアクション型です。購入元にお問い合わせください。
L6813U : <newname> に名前変更するためのシンボル <symname> が見つかりませんでした。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6815U : メモリが不足しています。割り当てサイズ:<alloc_size>システムサイズ:<system_size>
このエラーは、ARM コンパイラ v4.1 以降で報告されます。ここでは、利用可能なメモリの量と、リンク手順を実行する必要があるメモリの量についての情報が提供されます。
このエラーが発生する原因として、リンカに、ターゲットオブジェクトにリンクするための十分なメモリがないことが考えられます。これは一般的ではありませんが、以下のような多くの理由でトリガされる可能性があります。
  • 非常に大きなオブジェクトやライブラリにリンクしています。
  • 大量のデバッグ情報を生成しています。
  • スキャッタファイル内に定義された大領域があります。
このような場合、ワークステーションは仮想メモリ不足に陥る可能性があります。
この問題は、FIXED スキャッタロード属性を使用した場合にも起こります。 FIXED 属性は、実行領域を固定アドレスで ROM 内のルート領域にします。ROM イメージを生成するには、リンカは、前の実行領域の末尾と FIXED 領域の間にパディングバイトを追加する必要があります。FIXED 領域のアドレスが実行領域の末尾から遠いときに大量のパディングを追加すると、リンカはメモリ不足に陥る可能性があります。間隔を短くすると、リンク手順は成功します。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
リンカはほとんどすべてのサイズのイメージを生成することができますが、リンクの実行と終了には大量のメモリが必要になります。リンク時のパフォーマンスを向上させ、メモリ不足エラーを回避するために、以下のソリューションを試してみて下さい。
  1. リンク時に、すべての不要なアプリケーションとプロセスをシャットダウンして下さい。
    例えば、Eclipse のもとで実行している場合は、コマンドラインからリンカを実行するか、ビルド間の Eclipse を終了して再起動してみて下さい。
  2. 64 ビットバージョンのリンカを使用します。
    64 ビットのオペレーティングシステムを使用している場合は、64 ビットバージョンの armlink を使用できます。
    『スタート ガイド』の以下のセクションを参照して下さい。
  3. --no_debug リンカオプションを使用します。
    このコマンドは、デバッグ情報を含めずにオブジェクトを作成するようにリンカに指示します。
    『armlink ユーザガイド』の以下のセクションを参照して下さい。

    このオプションを使用すると、ソースレベルのデバッグを実行することはできません。
  4. デバッグ情報を削減します。
    --no_debug オプションを使用しない場合は、デバッグ情報を削減するための別の方法があります。
    『armcc ユーザガイド』の以下のセクションを参照して下さい。
    fromelf ユーティリティを使用して、デバッグ情報をデバッグする必要がないオブジェクトとライブラリから削除することもできます。
    『fromelf ユーザガイド』の以下のセクションを参照して下さい。
  5. 部分リンクを使用します。
    部分リンクを使用すると、リンクステージを少数の小さな演算に分割することができます。分割すると、最終的なリンクでメモリ内のオブジェクトファイルが重複しないようにすることもできます。
    『armlink ユーザガイド』の以下のセクションを参照して下さい。
  6. Windows オペレーティングシステム上でメモリのサポートを増やします。
    一部の Windows オペレーティングシステムでは、仮想アドレス空間を 2GB(デフォルト)から 3GB に増やすことができます。
    詳細については、以下の Microsoft の記事を参照してください。
  7. --no_eager_load_debug リンカオプションを使用します。
    このオプションは、RVCT 4.0 ビルド 697 以降で使用できます。このオプションを使用すると、リンカはオブジェクトのロード後にメモリからデバッグセクションデータを削除します。これにより、最終イメージを書き込む際にデバッグデータのほとんどを再度ロードする必要が生じるため、リンカのパフォーマンスは低下しますが、リンカのピーク時のメモリ使用量が抑えられます。
    『armlink ユーザガイド』の以下のセクションを参照して下さい。
まだ同じ問題が起こる場合は、サポートケースを作成して下さい。
L6828E : 再配置 #<rel_class>:<idx><symname> に関する再配置 #<rel_class>:<idx>(<objname>(<secname>)内)。分岐のソースアドレス <srcaddr> は、次の使用可能な [<pool_base>,<pool_limit>) のプールに到達できません。--veneer_pool_size オプションを使用してコンティンジェンシを増やしてください。
--veneer_inject_type=pool べニア生成モデルでは、プール内のべニアへの分岐が、べニアに設定できる最大アドレスであるプール制限に届くことが要求されています。後で、分岐がプール制限に到達できないことがわかった場合、および armlink がプール制限を下げてもすべてのベニアを格納できる場合は、armlink によって分岐に合わせてプール制限が下げられます。エラーメッセージ L6828 は、armlink がプール制限を下げられない場合のみ発生します。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6898E : 再配置 #<rel_class>:<idx>(<objname>(<secname>)内)は <armsym> に関係しています。<armobjname>(<armsecname>)での非 ARM/Thumb シンボルに対する ARM 分岐。
L6899E : 既存の SYMDEFS ファイル '<filename>' は、読み出し専用です。
L6900E : AND および OR 演算子の優先順位を特定するために、括弧が必要です。
L6901E : シンボル名が必要です。
L6902E : ストリングが必要です。
L6903E : スクリプトの '<clause>' 節内で '<text>' を実行できません。
L6904E : 名前変更後のシンボルが、別の名前変更処理と競合します。
L6905E : 名前変更前のシンボルが、別の名前変更処理と競合します。
L6906E : (これは、名前変更の競合相手です。)
L6907E : 式が必要です。
L6910E : フェーズ名が必要です。
L6912W : インデックス <idx>(<oepname>(<secname>)内)にあるシンボル <symname> には、ABI シンボル型 <symtype> がありますが、これはマッピングシンボル型 <maptype> と矛盾しています。
L6913E : 実行領域名が必要です。
L6914W : --<memoption> の使用時には、オプション <spurious> は無視されます。
L6915E : ライブラリからエラーがレポートされています:<msg>
メッセージは通常、以下のいずれかです。
  • エラー:L6915E:ライブラリからエラーがレポートされています:スキャッタロードファイルがヒープまたはスタック領域を宣言しておらず、__user_initial_stackheap が定義されていません。
    
    または
    エラー:L6915E:ライブラリからエラーがレポートされています:スキャッタロードの使用中には、使用可能なヒープ領域をセミホスティング __user_initial_stackheap で確実に設定することはできません
    
    多くの場合、__user_setup_stackheap() が再実装されていなかったり、ARM_LIB_STACK または ARM_LIB_HEAP 領域がそれぞれのスキャッタファイルで定義されていなかったりします。

    __user_setup_stackheap() は、非推奨の関数 __user_initial_stackheap() よりも優先されます。
    『ソフトウェア開発ガイド』の以下のセクションを参照して下さい。
    『ARM C および C++ ライブラリと浮動小数点サポートユーザガイド』の以下のセクションを参照して下さい。
    『armlink ユーザガイド』の以下のセクションを参照して下さい。
  • エラー:L6915E:ライブラリからエラーがレポートされています:__use_no_semihosting が要求されていましたが、<function> が参照されました。
    
    <function>__user_initial_stackheap_sys_exit, _sys_open_sys_tmpnam_ttywrch, systemremoverename_sys_command_stringtime、または clock を表します。
    このエラーは、 SVC または BKPT 命令が C ライブラリからリンクされるのを避けるために、セミホスティング使用関数をターゲット変更した場合に表示されることがあります。
    次のコードを使用して、セミホスティング使用関数が C ライブラリからリンクされないようにして下さい。
    #pragma import(__use_no_semihosting)
    
    『ARM C および C++ ライブラリと浮動小数点サポートユーザガイド』の以下のセクションを参照して下さい。
    セミホスティング使用関数がまだリンクされている場合は、リンカによってこのエラーが報告されます。
    この問題を解決するには、これらの C ライブラリ関数の独自の実装を用意する必要があります。
    emb_sw_dev ディレクトリには、一般的ないくつかのセミホスティング使用関数を再実装する方法の例が保存されています。ファイル retarget.c を参照して下さい。
    C ライブラリ関数を使用したセミホスティングの詳細については、以下の

    リンカは、ユーザ独自のアプリケーションコード内の、例えば __semihost() というセミホスティング使用関数については、報告しません。
    どのセミホスティング使用関数がまだ C ライブラリからリンクされているかを特定するには、次のようにします。
    1. armlink --verbose --list err.txt でリンクします。
    2. err.txt__I$use$semihosting の出現個所を探します。
      以下に例を示します。
      ...Loading member sys_exit.o from c_4.l. reference :__I$use$semihosting definition:_sys_exit ...
      これは、セミホスティング使用関数 _sys_exit が C ライブラリからリンクされていることを示しています。この問題を避けるには、この関数の独自の実装を用意する必要があります。
  • エラー:L6915E:ライブラリからエラーがレポートされています:__use_no_heap が要求されていましたが <reason> が参照されました
    
    <reason>mallocfree__heapstats、または __heapvalid を表している場合、__use_no_heap を使用すると、これらの関数と競合します。
  • エラー:L6915E:ライブラリからエラーがレポートされています:__use_no_heap_region が要求されていましたが <reason> が参照されました
    
    <reason>mallocfree__heapstats__heapvalid、または __argv_alloc を表している場合、__use_no_heap_region を使用すると、これらの関数と競合します。
L6916E : 再配置 #<rel_class>:<idx>(<oepname>(<spname>)内)。条件付き BL 命令に対する R_ARM_CALL です。
L6917E : 再配置 #<rel_class>:<idx>(<oepname>(<spname>)内)。BLX 命令に対する R_ARM_JUMP24 です。
L6918W : <oepname>(<spname>)のアライメント <spalign> を確実に行うために、0x<eraddr> に配置された実行領域 <ername> にはパディングが必要です。
L6922E : セクション <objname>(<secname>)に相互に排他的な属性(READONLY と TLS)が含まれています
L6923E : 再配置 #<rel_class>:<idx>(<oepname>(<spname>)内)は <symname> に関係しています。<symobjname>(<symsecname>)での非 TLS シンボルへの TLS 再配置 <type>。
L6924E : 再配置 #<rel_class>:<idx>(<oepname>(<spname>)内)は <symname> に関係しています。<symobjname>(<symsecname>)での STT_TLS シンボルへの非 TLS 再配置 <type>。
L6925E : 領域 <region> の <token> 属性を無視します。MemAccess はサポートされません。
L6926E : 再配置 #<rel_class>:<idx>(<oepname>(<spname>)内)の命令エンコーディング <rtype> の再配置型 0x<bl>は誤りです。
L6927E : 再配置 #<rel_class>:<idx>(<oepname>(<spname>)内)の命令エンコーディング <rtype> の再配置型 0x<bl1><bl2>は誤りです。
L6932W : ライブラリから警告がレポートされています:<msg>
移行と互換性ガイド』の以下のセクションを参照して下さい。
L6935E : オブジェクト(<new>)と(<old>)のデバッググループの内容が互いに異なります(<name>、署名シンボル <sig>)
L6936E : シンボル '<sym>' のライブラリスクリプトの複数 RESOLVE 節。
L6937E : ライブラリスクリプト関数 '<func>' の複数定義。
L6939E : 領域 <regname> のアライメントがありません。
L6940E : 領域 <regname> のアライメント <alignment> は、2 の累乗(4 以上)か、最大値である必要があります。
L6941W : ファイル <filename> の chmod システムコールで、エラー <perr> が発生しました
L6942E : 実行領域 <ername> に複数の <type> が含まれています。セクション:
L6966E : 領域 <regname> のアライメント <alignment> は負にできません。
L6967E : エントリポイント(<address>)は THUMB 命令を指していますが、有効な THUMB コードポインタではありません。
L6968E : Linux カーネルバージョン \"<kernel>\" を解析できませんでした。
L6969W : <ername> で AT セクション <name> のタイプを RW から RO に変更しています。
L6971E : <objname>(<secname>)の <type> 型は、er <ername> の <prevobj>(<prevname>)の <prevtype> 型と互換性がありません。
スキャッタファイルで __at セクションを配置すると、このメッセージが表示されることがあります。例えば、main.c の次のコードと関連のスキャッタファイルにより、このエラーが生成されます。
int variable __attribute__((at(0x200000)));
LR1 0x0000 0x20000 {     ER1 0x0 0x2000     {         *(+RO)     }     ER2 0x8000 0x2000     {         main.o     }     RAM 0x200000 (0x1FF00-0x2000)     {         *(+RW, +ZI)     } }
変数の型は ZI です。リンカはこれをアドレスに配置しようとします。 0x200000 .ところが、このアドレスはスキャッタファイルにより RW セクション用に予約されています。そのため、エラーが生成されます。
エラー: L6971E:RW 型の stdio_streams.o(.data) は er RAM の ZI 型の main.o(.ARM.__AT_0x00200000) と互換性がありません。
この問題に対処するには、ソースコードでアドレスを次のように変更します。
int variable __attribute__((at(0x210000)));
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6972E : 必要なベース 0x<required> を持つ <objname>(<secname>)にベースアドレス 0x<actual>が割り当てられました。
L6973E : オーバーレイ ER <ername> のアドレス 0x<addr> に AT セクションを配置中にエラーが発生しました。
例えば、DLL またはアプリケーションをオーバーレイ領域を使用してビルドするときに、セクションを配置するために __attribute__((at(address))) を使用しようと試みました。 __attribute__((at(address))) では、 .ARM.__at_address を使用してスキャッタファイルに固定の位置を指定する必要があります。この場合、--no_autoat リンカオプションも指定する必要があります。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6974E : AT セクション <name> にベースアドレスがありません。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6975E : <objname>(<secname>)は必要なベースと SHF_MERGE を持つことはできません。
L6976E : <objname>(<secname>)は必要なベースと SHF_LINK_ORDER を持つことはできません。
L6977E : <objname>(<secname>)は複数セクションの連続ブロックになることはできません
L6978W : <objname>(<secname>)にはユーザ定義セクション型と必要なベースアドレスがあります。
L6979E : 必要なベースアドレスを持つ <objname>(<secname>)を位置非依存の ER <ername> に配置できません。
L6980W : FIRST および LAST が、必要なベースアドレスを持つ <objname>(<secname>)で無視されました。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6981E : __AT は BPABI と SystemV のイメージタイプと互換性がありません
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6982E : ベース <base>、リミット <limit> の AT セクション <objname>(<spname>)が、ベース <base2>、リミット <limit2> の AT セクション <obj2name>(<sp2name>)のアドレス領域と重複しています。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6983E : 必要なベースアドレス <base> を持つ AT セクション <objname>(<spname>)が、ベース <erbase>、リミット <erlimit> の ER <ername> の範囲外です。
この問題は、コードに __attribute__((at(address))) を、 スキャッタファイルに .ARM.__at_address を、 リンカコマンドラインに --no_autoat オプションを指定する場合に発生することがあります。この場合、.ARM.__at_address のアドレス部分は 8 桁の 16 進数として指定される必要があります。以下に例を示します。
int x1 __attribute__((at(0x4000)));  // function.c で定義 ; スキャッタファイル LR1 0x0 {     ...         function.o(.ARM.__at_0x00004000)     ...}
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6984E : AT セクション <objname>(<spname>)が、セクションアライメント <alignment> に整列していないベースアドレス <base> を要求しました。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
L6985E : 必要なベースアドレス <base> を持つ AT セクション <objname>(<spname>)を自動的に配置できません。--no_autoat オプションを使用して手動でスキャッタファイルに配置してください。
『armlink ユーザガイド』の以下のセクションを参照して下さい。
非機密扱いPDF file icon PDF 版ARM DUI0496KJ
Copyright © 2010-2014 ARM.All rights reserved.