ARM コンパイラ ® バージョン 5.04 エラーおよび警告リファレンスガイド Copyright © 2010-2013 ARM.All rights reserved. ARM DUI0496JJ ARM® コンパイラ ARM コンパイラ ® エラーおよび警告リファレンスガイド Copyright © 2010-2013 ARM.All rights reserved. リリース情報 ドキュメント履歴 発行 日付 機密保持ステータス 変更点 A 28 5 月 2010 非機密扱い ARM コンパイラ v4.1 リリース B 30 9 月 2010 非機密扱い ARM コンパイラ v4.1 のアップデート 1 C 28 1 月 2011 非機密扱い ARM コンパイラ v4.1 パッチ 3 のアップデート 2 D 30 4 月 2011 非機密扱い ARM コンパイラ v5.0 リリース E 29 7 月 2011 非機密扱い ARM コンパイラ v5.0 のアップデート 1 F 30 9 月 2011 非機密扱い ARM コンパイラ v5.01 リリース G 29 2 月 2012 非機密扱い ARM コンパイラ v5.01 リリースマニュアルの更新 1 H 27 7 月 2012 非機密扱い ARM コンパイラ v5.02 リリース I 31 1 月 2013 非機密扱い ARM コンパイラ v5.03 リリース J 16 12 月 2013 非機密扱い ARM コンパイラ v5.04 リリース 著作権 ® ® または ™ のマークが付いた言葉およびロゴは、この著作権情報で別段に規定されている場合を除き、ARM の EU またはその他の国における登録商標および商標です。本書に記載されている他の製品名は、各社の所有する商標で す。 本書に記載されている情報の全部または一部、ならびに本書で紹介する製品は、著作権所有者の文書による事前の許 可を得ない限り、転用・複製することを禁じます。 本書に記載されている製品は、今後も継続的に開発・改良の対象となります。本書に含まれる製品およびその利用方法 についての情報は、ARM が利用者の利益のために提供するものです。したがって当社では、製品の市販性または利用 の適切性を含め、暗示的・明示的に関係なく一切の責任を負いません。 本書は、本製品の利用者をサポートすることだけを目的としています。本書に記載されている情報の使用、情報の誤りま たは省略、あるいは本製品の誤使用によって発生したいかなる損失・損傷についても、ARM は一切責任を負いません。 ARM という用語が使用されている場合、"ARM または必要に応じてその子会社" を指します。 機密保持ステータス 本書は非機密扱いであり、本書を使用、複製、および開示する権利は、ARM および ARM が本書を提供した当事者と の間で締結した契約の条項に基づいたライセンスの制限により異なります。 無制限アクセスは、ARM 社内による分類です。 製品ステータス 本書の情報は最終版であり、開発済み製品に対応しています。 Web アドレス www.arm.com ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2 目次 ARM コンパイラ エラーおよび警告リファレンスガイド ® 序章 本書について ........................................................ ........................................................ 7 ご意見、ご感想 .............................................................................................................. 9 第 章1 第 章2 C および C++ コンパイラのエラーおよび警告 1.1 armcc のエラーおよび警告メッセージの非表示 ............................ ............................ 1-11 1.2 armcc のエラーおよび警告メッセージのリスト ............................................................ 1-12 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト .................................... 1-81 アセンブラのエラーおよび警告 2.1 第 章3 第 章4 リンカのエラーおよび警告 3.1 armlink のエラーおよび警告メッセージの非表示 .......................... .......................... 3-126 3.2 armlink のエラーおよび警告メッセージのリスト ........................................................ 3-127 ELF イメージ変換ユーティリティのエラーおよび警告 4.1 第 章5 armar のエラーおよび警告メッセージのリスト .......................................................... 5-182 その他のエラーおよび警告 6.1 ARM DUI0496JJ fromelf のエラーおよび警告メッセージのリスト ............................ ............................ 4-179 ライブラリアンのエラーおよび警告 5.1 第 章6 armasm のエラーおよび警告メッセージのリスト ............................ ............................ 2-89 内部エラーとその他の予期しないエラー .................................................................. 6-184 Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3 6.2 付録 A 『エラーおよび警告リファレンスガイド』に対するドキュメント改訂 A.1 ARM DUI0496JJ その他のエラーおよび警告メッセージのリスト .......................................................... 6-185 『エラーおよび警告リファレンスガイド』に対する改訂 ........................................ 付録-A-187 Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 4 表の一覧 ARM コンパイラ エラーおよび警告リファレンスガイド ® 表 A-1 表 A-2 表 A-3 表 A-4 表 A-5 表 A-6 表 A-7 表 A-8 ARM DUI0496JJ 発行 I と発行 J の相違点 ............................................................................................. 付録-A-187 発行 H と発行 I の相違点 ............................................................................................ 付録-A-187 発行 G と発行 H の相違点 .......................................................................................... 付録-A-187 発行 E と発行 F の相違点 ........................................................................................... 付録-A-188 発行 D と発行 E の相違点 ........................................................................................... 付録-A-188 発行 C と発行 D の相違点 ........................................................................................... 付録-A-189 発行 B と発行 C の相違点 ........................................................................................... 付録-A-189 発行 A と発行 B の相違点 ........................................................................................... 付録-A-189 Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 5 序章 この前書きでは、次について紹介します。 ARM® コンパイラ エラーおよび警告リファレンスガイド. このドキュメントは、次で構成されています。 • • ARM DUI0496JJ 本書について(7 ページ). ご意見、ご感想(9 ページ). Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 6 序章 本書について 本書について ARM コンパイラ『エラーおよび警告リファレンスガイド』。このマニュアルでは、コンパイルツール のそれぞれによって生成されるエラーと警告をリストしています。PDF で提供されています。 本書の構成 本書は以下の章から構成されています。 第 章 1 C および C++ コンパイラのエラーおよび警告 C および C++ コンパイラ (armcc)のエラーおよび警告メッセージについて説明しています。 第 章 2 アセンブラのエラーおよび警告 アセンブラ (armasm)のエラーおよび警告メッセージについて説明します。 第 章 3 リンカのエラーおよび警告 リンカ (armlink)のエラーおよび警告メッセージについて説明します。 第 章 4 ELF イメージ変換ユーティリティのエラーおよび警告 ELF イメージ変換ユーティリティ (fromelf)のエラーおよび警告メッセージについて説明しま す。 第 章 5 ライブラリアンのエラーおよび警告 ARM ライブラリアン (armar)のエラーおよび警告メッセージについて説明します。 第 章 6 その他のエラーおよび警告 ツールのいずれかによって表示されるその他のエラーおよび警告メッセージについて説明して います。 付録 A 『エラーおよび警告リファレンスガイド』に対するドキュメント改訂 『エラーおよび警告リファレンスガイド』に対して、加えられた技術的変更について説明していま す。 表記規則 italic 重要用語、相互参照、引用箇所を示します。 bold メニュー名などのユーザインタフェース要素を太字で記載しています。また、必要に応じ て記述リスト内の重要箇所、ARM プロセッサの信号名、重要用語、および専門用語に も太字を使用しています。 monospace コマンド、ファイル名、プログラム名、ソースコードなど、キーボードから入力可能なテキ ストを示しています。 monospace コマンドまたはオプションに使用可能な略語を示しています。コマンド名またはオプショ ン名をすべて入力する代わりに、下線部分の文字だけを入力することができます。 monospace italic 引数が特定の値で置き換えられる場合のモノスペーステキストの引数を示しています。 monospace bold サンプルコード以外に使用される言語キーワードを示しています。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 7 序章 本書について <and> コードまたはコードの一部のアセンブラ構文で置換可能な項が使用されている場合に、 その項を囲みます。例えば、 MRC p15, 0 <Rd>, <CRn>, <CRm>, <Opcode_2> スモールキャピタル 「ARM 用語集」で定義されている専門的な意味を持つ用語について、本文中で使用さ れます。例えば、IMPLEMENTATION DEFINED、IMPLEMENTATION SPECIFIC、UNKNOWN、 UNPREDICTABLE などです。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 8 序章 ご意見、ご感想 ご意見、ご感想 本製品に関するフィードバック 本製品についてのご意見やご提案がございましたら、以下の情報を添えて購入元までお寄せ下 さい。 • • • 製品名 製品のリビジョンまたはバージョン 説明にはできるだけ多くの情報を含めて下さい。適宜、症状と診断手順も含めて下さい。 内容に関するフィードバック 内容に関するご意見につきましては、電子メールを [email protected] まで送信して下さい。その 際には、以下の内容を記載して下さい。 • • • • タイトル 文書番号 (ARM DUI0496JJ) 問題のあるページ番号 問題点の簡潔な説明 また、補足すべき点や改善すべき点についての全般的なご提案もお待ちしております。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 9 第1章 C および C++ コンパイラのエラーおよび警告 C および C++ コンパイラ (armcc)のエラーおよび警告メッセージについて説明しています。 このドキュメントは、次で構成されています。 • • • ARM DUI0496JJ 1.1 armcc のエラーおよび警告メッセージの非表示(1-11 ページ). 1.2 armcc のエラーおよび警告メッセージのリスト(1-12 ページ). 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト(1-81 ページ). Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-10 1 C および C++ コンパイラのエラーおよび警告 1.1 armcc のエラーおよび警告メッセージの非表示 1.1 armcc のエラーおよび警告メッセージの非表示 コマンドラインオプションを使用して、コンパイラで生成される診断メッセージの重大度を制御で きます。 コンパイラは、通常、潜在的な移植性の問題やその他の問題点に関する警告を表示します。 従来のコード(古いスタイルの C)を ARM コンパイラに移植する場合、多くの警告が報告されま す。これらのすべての警告を、 –W で非表示にするのが便利だと思える場合もあります。しかし、 移植性に関する理由から、警告を非表示にするよりも、コードを ANSI 互換に変更することを推 奨します。 一部の警告は、デフォルトで非表示になっています。これをオーバーライドするには、-strict_warnings スイッチを使って、非表示になっているすべての警告を有効にします。 デフォルトでは、最適化メッセージ(例えば 1593 から 2159 までのメッセージの大部分)は警告で はありません。最適化メッセージを警告として扱うには、 --diag_warning=optimizations オ プションを使用します。 関連情報 --diag_warning=tag[,tag,...] コンパイラオプション. --strict_warnings コンパイラオプション. -W コンパイラオプション. ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-11 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1.2 armcc のエラーおよび警告メッセージのリスト armcc で生成されるエラーおよび警告メッセージのリスト 0 : 不明なエラー 1 : ファイルの最終行が復帰改行文字なしで終了しています 2 : ファイルの最終行がバックスラッシュで終了しています 3 : #インクルードファイル <entity> はそのファイル自体をインクルードします 4 : メモリが不足しています 5 : <entity> 入力ファイル <filename> を開けません:<reason> 以下に例を示します。 #include <file.h> 次のようなメッセージが表示されます。 Error: #5: cannot open source input file "file.h": No such file or directory これは、file.h がシステムインクルードディレクトリに存在しないためです。 6 : コメントがファイルの最後で閉じられていません コメントが /* で始まっていますが、コメントを閉じるための対応する */ がありません。 7 : 認識されないトークン 8 : 閉じ引用符がありません 以下に例を示します。 char foo[] = {"\"}; この例では、バックスラッシュによって、後ろの引用符 " が文字列を閉じる記号ではな く、リテラル文字として扱われています。これを修正するには、次のようにします。 char foo[] = {"\\"}; 9 : コメントを入れ子にすることはできません 以下に例を示します。 /*nested /*comment*/ 10 : ここでは "#" は期待されていません 11 : 認識されないプリプロセッシングディレクティブ 以下に例を示します。 #foo 12 : 前の構文エラーの後、解析はここから再開されます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-12 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 13 : ファイル名が期待されます 以下に例を示します。 #include <> 14 : プリプロセッシングディレクティブの最後と期待される場所の後に余分なテキストがありま す 以下に例を示します。 #if EMBEDDED foo または #include <stdio.h> foo または #ifdef SOMETHING : #endif SOMETHING #endif は、引数を必要としません。行の末尾の部分を次のようにコメントとして囲めば、 問題を解決できます。 #endif /* SOMETHING */ 16 : <entity> は有効なソースファイル名ではありません 17 : ] が期待されます 18 : ) が期待されます 19 : 数字の最後と期待される場所の後に余分なテキストがあります 以下に例を示します。 int a = 37r; ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-13 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 20 : 識別子 <entity> が定義されていません 例えば、C++ でコンパイルする場合、以下のコード void foo( arg ) { } 次のようなメッセージが表示されます。 Error: #20: identifier <arg> is undefined 次のコード例も、このエラーを発生させます。 int foo(void) { int a = 4; a = i; } 次のようなメッセージが表示されます。 Error: #20: identifier "i" is undefined これは、i が宣言されていないためです。 21 : 型修飾子はこの宣言内では無効です 22 : 無効な 16 進数 23 : 整数定数が長すぎます 24 : 無効な 8 進数 以下に例を示します。 int a = 0378; 25 : 引用符で囲まれたストリング内には、少なくとも 1 つの文字が含まれている必要がありま す 以下に例を示します。 char a =''; 26 : 文字定数内に文字が多すぎます 例えば、次のコードは、マルチバイト文字を構成するバイト数が多すぎて int に収まら ないため、この警告を生成します。 int a ='abcde'; 27 : 文字の値が範囲外です このエラーは、例えば次のように 16 進定数で表した文字値が、char 変数で表すには 大きすぎる場合に発生します。 char x = '\x100'; 28 : 式に定数値を含める必要があります 29 : 式が期待されます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-14 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 30 : 浮動小数点定数が範囲外です 31 : 式は整数型である必要があります 32 : 式は算術型である必要があります 33 : 行番号が期待されます 34 : 無効な行番号 35 : #エラーディレクティブ:<entity> 36 : このディレクティブの #if がありません 37 : このディレクティブの #endif がありません 開かれた #if がまだアクティブになっていて、ファイルの末尾よりも前で #endif によっ て閉じられていません。 38 : ディレクティブは使用できません -- #else が既に表示されています 39 : ゼロによる除算 40 : 識別子が期待されます このエラーは、プリプロセッサステートメントが正しい形式でない場合に発生します。例え ば、#define プリプロセッサコマンドの直後に必要な識別子が指定されていない場合 などです。 このエラーは、次のように、コードで識別子としてキーワードが使用された場合にも発生 します。 int if =0; 41 : 式は算術型またはポインタ型である必要があります 42 : オペランドの型の間に互換性がありません(<type> と <type>) 44 : 式はポインタ型である必要があります 45 : #undef はこの定義済み名には使用できません 46 : <entity> は定義済みです。再定義は無視されます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-15 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 47 : マクロ <entity> の再定義に互換性がありません マクロが 2 回(異なる置換文字列で)定義されました。 以下に例を示します。 #define TEST 0 #define TEST 1 このようにすると、コンパイラによって以下のメッセージが生成されます。 警告:#47-D:マクロ "TEST" の再定義に互換性がありません(行 1 で宣言) そのようにする必要がある場合は、2 回目の定義の前で #undef を使用してマクロの定 義を解除して下さい。 マクロを定義するには、既存の定義がない限り、次のようなコンディショナルプリプロセッ シングを使用できます。 #ifndef TEST #define TEST 0 #endif armcc -c foo.c でコンパイルすると、TEST は 0 として定義されます(デフォルト)。 armcc -c -DTEST=1 foo.c でコンパイルすると、TEST は 1 として定義されます。 49 : マクロパラメータ名が重複しています 50 : "##" をマクロ定義の最初にすることはできません 51 : "##" をマクロ定義の最後にすることはできません 52 : マクロパラメータ名が期待されます 53 : : が期待されます 54 : マクロ呼び出し内の引数が少なすぎます 55 : マクロ呼び出し内の引数が多すぎます 56 : sizeof のオペランドに関数は使用できません 57 : この演算子は定数式では使用できません 58 : この演算子はプリプロセッシング式では使用できません 59 : 関数呼び出しは定数式では使用できません 60 : この演算子は整数的な定数式では使用できません 61 : 整数演算の結果が範囲外です 62 : シフト数が負です 63 : シフト数が大きすぎます 64 : 宣言で何も宣言されていません 以下に例を示します。 int; 65 : ; が期待されます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-16 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 66 : 列挙値が "int" の範囲外です この診断メッセージは、enum 定数が signed int の範囲外である場合に、コンパイラによ って生成されます。 例えば、以下のコードが C モードでコンパイルされると、コンパイラはこの警告を生成し ます: typedef enum { Bit31 = 0x80000000 } Bits; 注 この説明は、RVCT 2.2 以降のバージョンに適用されます。 C モード: • • 警告が生成されますが、コンパイラによって定数が unsigned に昇格されます。 スイッチ --strict は、常にこのメッセージをエラーとして生成します。 C++ モード: • デフォルトでは、範囲外の定数は警告なしで unsigned に昇格されます。--strict が使用されている場合でも、同様です。 メッセージがエラーである場合の対応策として、以下のコード例を使用して下さい。 typedef enum { Bit31 = (int)0x80000000 } Bits; オーバーフローは発生しなくなり、エラーも報告されなくなります。 注 Bit31 は signed int になるので、その値は負になります。 コンパイラのドキュメントの以下のセクションを参照して下さい。 構造体、共用体、列挙型、ビットフィールド。 67 : } が期待されます 68 : 整数変換の結果、符号が変更されました 定数が signed long で表現するには大きすぎるので、unsigned 型にされました。 例: long l = 2147483648; 69 : 整数変換の結果、切り捨てられました 70 : 不完全型は使用できません 例: typedef struct { unsigned char size; char string[]; } FOO; 構造体の中の配列のサイズが宣言されていないので、コンパイラが構造体のサイズを割 り当てることができません。不完全型は、--gnu および --c99 モードでは使用できま す。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-17 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 71 : sizeof のオペランドにビットフィールドは使用できません 76 : マクロの引数が空です 77 : この宣言には記憶クラスも型指定子もありません 78 : パラメータ宣言にイニシャライザを含めることはできません 79 : 型指定子が期待されます 可変個引数関数(例えば printf())を示す省略記号は、その前に少なくとも 1 つのパ ラメータが必要です。例えば、次のようなコードは、 int foo( ...); 次のように変更します。 int foo( int bar, ...); 80 : ここに記憶クラスを指定することはできません 81 : 記憶クラスを複数指定することはできません 82 : 記憶クラスが最初ではありません 83 : 型指定子が複数回指定されています 84 : 型指定子の組み合わせが無効です 型名または型指定子は、同一の宣言内で、2 番目の型名または型指定子として使うこと はできません。以下に例を示します。 typedef int int; 85 : パラメータの記憶クラスが無効です 86 : 関数の記憶クラスが無効です 87 : ここで型指定子を使用することはできません 88 : 関数の配列は使用できません 89 : void 型の配列は使用できません 90 : 関数を返す関数は使用できません 91 : 配列を返す関数は使用できません 92 : 識別子リストパラメータは関数定義でのみ使用できます 93 : 関数型は typedef からは取得できません 94 : 配列のサイズはゼロより大きくする必要があります 次のようなサイズがゼロの配列は、--gnu モードだけで使用できます。 char name[0]; コンパイラのドキュメントの以下のセクションを参照して下さい。 • • --gnu C および C++ 言語に対する GNU 拡張機能。 95 : 配列が大きすぎます 配列または構造体の最大サイズには、4GB の制限があります。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-18 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 96 : 変換単位には、少なくとも 1 つの宣言が含まれている必要があります 97 : 関数はこの型の値を返すことはできません 98 : 配列にこの型のエレメントを含めることはできません 99 : ここの宣言はパラメータを宣言する必要があります 100 : パラメータ名が重複しています 101 : <entity> は現在の有効範囲で既に宣言されています 102 : 列挙型の forward 宣言は標準ではありません 103 : クラスが大きすぎます 104 : 構造体またはユニオンが大きすぎます 配列または構造体の最大サイズには、4GB の制限があります。 105 : ビットフィールドのサイズが無効です ビットフィールドの大きさは、型のサイズ以下である必要があります。 例えば、--strict を使った、以下のような場合です。 struct X{ int y:5000; }; 106 : ビットフィールドの型が無効です ビットフィールドは整数型である必要があります。 例: struct X{ float x:5; float y:2; }; 107 : 長さがゼロのビットフィールドは無名でなければなりません 108 : 長さが 1 の符号付きビットフィールド 109 : 式は(ポインタ-)関数型である必要があります 110 : 定義またはタグ名が期待されます 111 : ステートメントに到達できません 112 : while が期待されます 114 : <entity> が参照されましたが定義されていません 115 : continue ステートメントはループ内でのみ使用できます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-19 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 116 : break ステートメントはループまたはスイッチ内でのみ使用できます 例: void foo(void){ int a=0; continue; } または void bar(void){ int a=0; break; } 117 : 非 void <entity> は値を返す必要があります 118 : void 関数は値を返すことができません 119 : <type> 型にキャストできません 120 : 戻り値型と関数型が一致していません 121 : case ラベルはスイッチ内でのみ使用できます 122 : default ラベルはスイッチ内でのみ使用できます 123 : case ラベルの値はこのスイッチ内に既にあります 124 : default ラベルはこのスイッチ内に既にあります 125 : ( が期待されます 126 : 式は左辺値でなければなりません 127 : ステートメントが期待されます 128 : ループには前のコードからは到達できません 129 : block-scope 関数には extern 記憶クラスのみを含めることができます 130 : { が期待されます 131 : 式はポインタ-クラス型である必要があります 132 : 式は構造体へのポインタまたはユニオンへのポインタである必要があります 133 : メンバ名が期待されます 134 : フィールド名が期待されます 135 : <entity> にメンバ <entity> がありません 136 : <entity> にフィールド <entity> がありません 137 : 式は修正可能な左辺値でなければなりません 138 : レジスタ変数のアドレスを取得することはできません 139 : ビットフィールドのアドレスを取得することはできません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-20 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 140 : 関数呼び出し内の引数が多すぎます 関数宣言が前の関数プロトタイプのパラメータ数と一致しません。 例: extern void foo(int x); void bar(void) { foo(1,2); } 141 : ボディがある場合、無名のプロトタイプのパラメータは使用できません 142 : 式はポインタ-オブジェクト型である必要があります 143 : プログラムが大きすぎるか複雑すぎてコンパイルできません 144 : <type> 型の値を使用して <type> 型のエンティティを初期化することはできません 固定サイズの文字配列を初期化する文字列が、配列のサイズと正確に同じ長さであり、 終端の \0 のための余裕がありません。例えば、次のような場合です。 char name[5] = "Hello"; name 配列は、最大 5 文字を保持できます。C の文字列は常に NULL で終わるため (例えば "Hello\0")、"Hello" は収まりません。コンパイラによって、以下のようなメッ セージが報告されます。 Error: #144: a value of type "const char [6]" cannot be used to initialize an entity of type "char [5]" ゼロ以外の int から pointer への暗黙的なキャストが行われる場合にも、同様のエラーが 発生します。 以下に例を示します。 void foo_func( void ) { char *foo=1; } 次のようなメッセージが表示されます。 #144: a value of type "int" cannot be used to initialize an entity of type "char *" キャストに関しては、--loose_implicit_cast スイッチを使用して、このエラーを非表 示にすることができます。 145 : <entity> は初期化できません 146 : イニシャライザの値が多すぎます 147 : 宣言は <entity> と互換性がありません 次の間違った C コードは、すべてのモードでエラーになります。これは、-diag_warning 147 を使ってエラーから警告にダウングレードすることも、-diag_suppress 147 を使って完全に非表示にすることもできます。 typedef enum { e } E; typedef enum { f } F; E g(void); F g(void); ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-21 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 148 : <entity> は既に初期化されています 149 : グローバルスコープ宣言にこの記憶クラスを含めることができません 150 : 型名はパラメータとして再宣言できません 151 : typedef 名はパラメータとして再宣言できません 152 : 非ゼロ整数をポインタに変換します 153 : 式はクラス型である必要があります 154 : 式は構造体型またはユニオン型である必要があります 155 : 古い形式の代入演算子 156 : 古い形式のイニシャライザ 157 : 式は整数的な定数式でなければなりません 158 : 式は左辺値または関数指定子でなければなりません 159 : 宣言は前の <entity> と互換性がありません 160 : <entity> の外部名と外部名競合が発生しました 161 : 認識されない #pragma 163 : テンポラリファイル <entity> を開けませんでした 164 : テンポラリファイルのディレクトリ名が長すぎます(<entity>) 165 : 関数呼び出しに引数が少なすぎます 関数プロトタイプで定義されているパラメータの数が、関数呼び出しで渡されたパラメー タの数と一致しません。 以下に例を示します。 extern void foo(int x); void bar(void) { foo(); } 166 : 浮動小数点定数が無効です 167 : <type> 型の引数は <type> 型のパラメータと互換性がありません 168 : ここでは関数型を使用できません 169 : 宣言が期待されます この問題は、いくつかの C++ ヘッダファイルを C++ コンパイラではなく C コンパイラでコ ンパイルしようとした場合に発生します。 170 : ポインタが、ベースとなっているオブジェクトの外側を指しています 171 : 型変換が無効です 172 : 外部/内部のリンケージが前の宣言と競合しています The compiler suppresses errors about linkage disagreements, where functions are implicitly declared as extern and later re-declared as static, unless the --strict option is used.For example: extern void foo(void); static void foo(void){} 173 : 浮動小数点値が必要な整数型に収まりません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-22 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 174 : 式は機能しません 175 : 添字が範囲外です 177 : <entity> が宣言されましたが参照されていません デフォルトでは、使用されない宣言についての警告は、以下の場合に発生します。 • • • 変数、typedef、および関数のローカルな(関数内の)宣言。 ラベル(常に関数内)。 最上位のスタティック関数とスタティック変数。 --diag_suppress 177 オプションを指定すると、これらの警告が非表示になります。 178 : 配列に適用した "&" は機能しません 179 : "%" の右オペランドがゼロです 180 : 引数は仮パラメータと互換性がありません 181 : 引数は対応するフォーマットストリング変換と互換性がありません 例えば、--strict でコンパイルした場合、以下のコード unsigned long foo = 0x1234; printf("%08X", foo); で生成される警告は、次のとおりです。 Warning: #181-D: argument is incompatible with corresponding format string conversion 警告が表示されないようにするには、コードを次のように書き換えます。 unsigned long foo = 0x1234; printf("%0lX", foo); また、代わりに次のように書き換えることもできます。 unsigned int foo = 0x1234; printf("%0X", foo); %0X は、char、short、または int に使用できます。lX は、 int と long はどちらも ARM プロセッサでは 32 ビット幅であっても、long 型整数に使用して下さい。 182 : ソースファイル <entity> を開けませんでした(検索リストにディレクトリがありません) 183 : キャスト型は整数でなければなりません 184 : キャスト型は算術またはポインタでなければなりません 185 : ダイナミックな初期化が到達できないコード内にあります 186 : 符号なし整数とゼロの無効な比較 以下に例を示します。 unsigned short foo; if (foo<0) printf("This never happens"); この場合、符号なしの(例えば char や int の)値とゼロの比較は常に FALSE に評価さ れるという警告が発生します。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-23 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 187 : == が必要な場所で "=" が使用されています 以下に例を示します。 int main(void) { int a; const int b =1; if (a=b); } 188 : 列挙型と別の型が混在しています 189 : <entity> ファイルの書き込み中にエラーが発生しました: 190 : 中間言語ファイルが無効です 191 : 型指定子はキャスト型では無効です C の仕様では、キャストは左辺値を生成しないことになっているので、修飾された型への キャストは修飾されていないバージョンの型へのキャストと同じ効果を持つことになりま す。この警告は、コードには問題がないものの、型修飾子が効果を持たないことをユー ザに知らせるものです。この警告は、--diag_suppress 191 で非表示にすることがで きます。 以下に例を示します。 val2 = (const float)val1; 上記のコマンドは、以下のコマンドと同じ意味です。 val2 = (float)val1; 192 : 認識されない文字エスケープシーケンス このエラーは、通常、16 ビットの Unicode 文字などの非 ASCII 文字セットを使おうとした ことに関連しています。コンパイラでは、Unicode などのマルチバイト文字セットがサポー トされます。ソースファイルは、コンピュータで選択されているロケールに応じてコンパイ ルされます。そのようにせずに、エスケープ処理を使って、特定の値をエンコードするこ ともできます(Kernighan and Ritchie の A2.5.2 で推奨されています)。 以下に例を示します。 char *p = "\x12\x34\x56\x78"; // 12 34 56 78 文字エスケープと文字列エスケープでは、\ の次の文字に特別な意味がない場合、エス ケープの値はその文字自身となります。例えば、\s は、s と同じなので、警告が生成さ れます。 193 : 未定義のプリプロセッシング識別子としてゼロが使用されています <entity> 194 : asm ストリングが期待されます 195 : asm 関数はプロトタイプにする必要があります 196 : asm 関数には省略記号を含めることができません 219 : ファイル <entity> の削除中にエラーが発生しました 220 : 整数値が必要な浮動小数点型に収まりません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-24 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 221 : 浮動小数点値が必要な浮動小数点型に収まりません 222 : 浮動小数点演算の結果が範囲外です 223 : 関数 <entity> が暗黙に宣言されています これは、関数のプロトタイプがないときに発生する、一般的な警告です。 以下に例を示します。 void foo(void) { printf("foo"); } この問題に対処するには、#include <stdio.h> を追加して、 printf() のプロトタ イプを含めます。 ANSI C では、--diag_suppress 223 でこの警告を非表示にすることができます。古 いスタイルの C を ANSI C モードでコンパイルするときには、この方法が便利です。 224 : フォーマットストリングには追加の引数が必要です 225 : フォーマットストリングがこの引数の前に終了しています 226 : フォーマットストリング変換が無効です 227 : マクロ再帰 228 : コンマが最後にくる形式は標準ではありません 229 : ビットフィールドに列挙型のすべての値を入れることはできません 230 : ビットフィールドでは非標準の型です 厳密な ANSI C では、ビットフィールドに指定できる型は int、signed int、および unsigned int のみです。 以下に例を示します。 struct X { char y:2; }; 231 : 宣言は関数の外側では見えません 232 : void の古い形式の typedef は無視されます 233 : 左オペランドは、このフィールドを含む構造体またはユニオンではありません 234 : ポインタは、このフィールドを含む構造体またはユニオンを指していません 235 : 変数 <entity> は、未定義の型で宣言されていました 236 : 制御式が定数です 237 : セレクタ式が定数です 238 : パラメータの指定子が無効です 239 : クラス宣言外の指定子が無効です 240 : 宣言に重複した指定子があります 241 : ユニオンにはベースクラスが存在することはできません 242 : 複数のアクセス制御指定子は使用できません 243 : クラス定義または構造体定義がありません 244 : 修飾された名前は、クラス <type> またはそのベースクラスのメンバではありません 245 : 非スタティックメンバ参照は、特定のオブジェクトに関連付けられている必要があります ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-25 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 246 : 非スタティックデータメンバは、そのクラスの外では定義できません 247 : <entity> は既に定義されています この問題の典型的な例は、変数名が複数回使用されている場合です。 この問題は、仮宣言に依存する従来のコードをコンパイルしている場合に発生すること があります。仮宣言では、以下のように、変数の宣言と初期化を個別のステートメントで 行うことができます。 int a; int a = 1; 仮宣言は、C コードではデフォルトで許可されていますが、C++ コードではエラーになり ます。 248 : 参照へのポインタは使用できません 249 : 参照を参照することはできません 250 : void を参照することはできません 251 : 参照の配列は使用できません 252 : 参照 <entity> にはイニシャライザが必要です 253 : , が期待されます 254 : 型名は使用できません この問題は、次の例のように、typedef 名が式の中で直接使用されている場合に発生し ます。 typedef int footype; int x = footype; // reports Error:#254:型名は使用できません この問題に対処するには、先にその型のインスタンスを作成します。例えば、次のよう に、その新しい型の変数を作成します。 typedef int footype; footype bar = 1; int x = bar; 255 : 型定義は使用できません 256 : 型名 <entity> の再宣言は無効です 257 : const <entity> にはイニシャライザが必要です 258 : "this" は、非スタティックメンバ関数内でのみ使用できます 259 : 定数値が不明です 260 : 明示的な型がありません("int" を想定) 261 : アクセス制御が指定されていません(デフォルトでは <entity>) 262 : クラス名または構造体名ではありません 263 : ベースクラス名が重複しています 264 : ベースクラスが無効です ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-26 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 265 : <entity> にアクセスできません C++ では、--diag_warning 265 オプションによって、アクセス制御エラーを警告に 降格することができます。 以下に例を示します。 class A { void f() {}; }; // private member A a; void g() { a.f(); } // erroneous access 次のようなメッセージが表示されます。 Error: #265-D: function "A::f" is inaccessible 266 : <entity> があいまいです 267 : 古いスタイルのパラメータリストです(アナクロニズム) 268 : 宣言は、ブロック内の実行可能ステートメントの後には表示できません 269 : アクセスできないベースクラス <type> に変換できません 274 : マクロ呼び出しが正しく終了しませんでした 276 : 後に "::" が付いている名前は、クラス名またはネームスペース名です 277 : friend 宣言が無効です 278 : コンストラクタまたはデストラクタが値を返すことはできません 279 : デストラクタ宣言が無効です 280 : クラスと同じ名前のメンバを宣言します 281 : グローバルスコープ修飾子("::" が先行)は使用できません 282 : グローバルスコープには <entity> が含まれていません 283 : 修飾された名前は使用できません 284 : NULL 参照は使用できません 285 : "<...>" による初期化は <type> 型のオブジェクトには使用できません 286 : ベースクラス <type> があいまいです 287 : 派生したクラス <type> にはクラス <type> の複数のインスタンスが含まれています 288 : ベースクラス <type> へのポインタを派生クラス <type> へのポインタに変換できませ ん。ベースクラスは仮想です。 289 : 引数リストと一致するコンストラクタ <entity> のインスタンスはありません 290 : クラス <type> のコピーコンストラクタがあいまいです 291 : クラス <type> のデフォルトコンストラクタはありません 292 : <entity> は、クラス <type> の非スタティックデータメンバまたはベースクラスではあ りません 293 : 間接非仮想ベースクラスは使用できません 294 : ユニオンメンバが無効です -- クラス <type> には禁止されたメンバ関数が含まれて います 296 : 左辺値でない配列は使用できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-27 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 297 : 演算子が期待されます 298 : 継承されたメンバは使用できません 299 : <entity> のどのインスタンスを対象にしているか特定できません 300 : bound 関数へのポインタは関数の呼び出しにのみ使用できます 301 : typedef 名は既に宣言されています(同じ型で) 302 : <entity> は既に定義されています 304 : 引数リストと一致する <entity> のインスタンスはありません 305 : 関数の戻り値型の宣言内では型を定義できません 306 : デフォルト引数がパラメータリストの最後にありません 307 : デフォルト引数の再定義です 308 : <entity> の複数のインスタンスが引数リストと一致しています 309 : コンストラクタ <entity> の複数のインスタンスが引数リストと一致しています 310 : デフォルト引数 <type> 型の引数は <type> 型のパラメータと互換性がありません 311 : 戻り値型のみで識別される関数はオーバーロードできません 312 : <type> から <type> への適切なユーザ定義変換がありません 313 : この関数には型指定子を使用できません 314 : 非スタティックメンバ関数のみを仮想にできます 315 : オブジェクトにはメンバ関数と互換性のない cv 修飾子が含まれています 316 : プログラムが大きすぎてコンパイルできません(仮想関数が多すぎます) 317 : 戻り値型が戻り値型 <type>(オーバーライドされた仮想関数 <entity> のもの)と同 じでないか、共変ではありません 318 : 仮想 <entity> のオーバーライドがあいまいです 319 : 純指定子("= 0")は仮想関数でのみ使用できます 320 : 不適切な形式の純指定子です("= 0" のみを使用できます) 321 : データメンバイニシャライザは使用できません 322 : 抽象クラス型 <type> のオブジェクトは使用できません 323 : 抽象クラス <type> を返す関数は使用できません 324 : friend 宣言が重複しています 325 : インライン指定子は関数宣言でのみ使用できます 326 : "inline" は使用できません 327 : inline 関数の記憶クラスが無効です 328 : クラスメンバの記憶クラスが無効です 329 : ローカルクラスメンバ <entity> には定義が必要です 330 : <entity> にアクセスできません 332 : クラス <type> には const オブジェクトをコピーするためのコピーコンストラクタがあり ません 333 : 暗黙に宣言されたメンバ関数を定義することはできません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-28 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 334 : クラス <type> には適切なコピーコンストラクタがありません 335 : リンケージを指定できません 336 : 外部リンケージ指定が不明です 337 : リンケージ指定は前の <entity> と互換性がありません 関数のリンケージが前の宣言への互換性のない指定と共に再宣言された場合に、この エラーは生成されます。 以下に例を示します。 int foo(void); int bar(void) { int x; x = foo(); return x; } extern "C" int foo(void) { return 0; } 次のようなメッセージが表示されます。 Error: #337: linkage specification is incompatible with previous "foo" (declared at line 1) 338 : オーバーロードされた関数 <entity> の複数のインスタンスに "C" リンケージが含ま れています 339 : クラス <type> には複数のデフォルトコンストラクタがあります 340 : 値がテンポラリにコピーされ、テンポラリへの参照が使用されています 341 : "operator<entity>" はメンバ関数でなければなりません 342 : 演算子としてスタティックメンバ関数を使用できません 343 : ユーザ定義変換には引数を指定できません 344 : この operator 関数のパラメータが多すぎます 345 : この operator 関数のパラメータが少なすぎます 346 : 非メンバ演算子にはクラス型のパラメータが必要です 347 : デフォルト引数は指定できません 348 : <type> から <type> への複数のユーザ定義変換が適用されます: 349 : 演算子 <entity> はこれらのオペランドと一致しません 350 : 複数の演算子 <entity> がこれらのオペランドと一致します: 351 : allocation 関数の最初のパラメータは "size_t" 型でなければなりません 352 : allocation 関数では "void *" の戻り値型が必要です 353 : deallocation 関数では "void" の戻り値型が必要です 354 : deallocation 関数の最初のパラメータは "void *" 型でなければなりません 356 : 型はオブジェクト型でなければなりません 357 : ベースクラス <type> は既に初期化されています 358 : ベースクラス名が必要です -- <type> を想定(アナクロニズム) ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-29 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 359 : <entity> は既に初期化されています 360 : メンバまたベースクラスの名前がありません 361 : this への代入です(アナクロニズム) 362 : "overload" キーワードが使用されています(アナクロニズム) 363 : 無名共用体が無効です -- パブリックでないメンバは使用できません 364 : 無名共用体が無効です -- メンバ関数は使用できません 365 : グローバルまたはネームスペーススコープにある無名共用体は、スタティックとして宣言 される必要があります 366 : <entity> は次のイニシャライザを提供しません: 367 : クラス <type> の暗黙に生成されたコンストラクタは次のものを初期化できません: 368 : <entity> は、次のものを初期化するためのコンストラクタを定義していません: これは、const 構造体、または const を含む構造体があることを示しています。このメッ セージは、エラー 369 を補助する警告として生成されます。構造体の const メンバが 適切に初期化されていれば、無視しても問題ありません。 369 : <entity> には、初期化されていない const または reference メンバが含まれて います これは、const 構造体、または正しく初期化されていない const を含む構造体のイン スタンスがあることを示しています。各インスタンスで構造体を正しく初期化するか、初期 化を行うコンストラクタを用意する必要があります。 370 : <entity> には、初期化されていない const フィールドが含まれています 371 : クラス <type> には、const オブジェクトをコピーするための代入演算子がありません 372 : クラス <type> には適切な代入演算子がありません 373 : クラス <type> の代入演算子があいまいです 375 : 宣言には typedef 名が必要です 377 : "virtual" は使用できません 378 : "static" は使用できません 379 : bound 関数の通常の関数ポインタへのキャストです(アナクロニズム) 380 : 式はポインタ-メンバ型である必要があります ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-30 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 381 : 余分な ";" は無視されます C では、次の例のように、宣言の行の末尾に予期しないセミコロンがあることによって、こ の問題が発生する場合があります。 int x;; この問題は、マクロを使用しているときに、不注意のために発生することもあります。 同様に、C++ では、この問題が次のような構造によって発生することがあります。 class X { ...} ; ; これは、多くの場合、次のようなマクロの使用が原因です。 #define M(c) class c { ...} ; M(X); 空の宣言は不正であるため、余分なセミコロンは不正です。 382 : 非標準メンバ定数の宣言(標準形式はスタティック const 整数メンバ) 384 : 引数リストと一致する多重定義された <entity> のインスタンスはありません 386 : 必要な型と一致する <entity> のインスタンスはありません 387 : 配列サイズ削除式が使用されました(アナクロニズム) 389 : 抽象クラス <type> にキャストできません 390 : 関数 "main" を呼び出したり、この関数のアドレスを取得したりすることはできません 391 : 配列に対して new-initializer を指定できません 392 : メンバ関数 <entity> は、そのクラスの外では再宣言できません 393 : 不完全なクラス型へのポインタは使用できません 394 : 関数内部のローカル変数を参照できません 395 : 後置の <entity> に単一引数の関数が使用されています(アナクロニズム) 398 : 配列型へのキャストは標準ではありません(<type> へのキャストとして処理されます) 399 : <entity> には演算子 new<entity>() がありますが、デフォルト演算子 delete<entity>() はありません 400 : <entity> にはデフォルト演算子 delete<entity>() がありますが、演算子 new<entity>() はありません 401 : ベースクラス <entity> のデストラクタは仮想ではありません 403 : メンバ <entity> の再宣言は無効です 404 : 関数 "main" はインラインでは宣言できません 405 : クラスと同じ名前のメンバ関数はコンストラクタでなければなりません 406 : ネストされた <entity> を使用しています(アナクロニズム) 407 : デストラクタにパラメータを指定することはできません 408 : クラス <type> のコピーコンストラクタに <type> 型のパラメータを指定することはでき ません 409 : <entity> は不完全型 <type> を返します ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-31 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 410 : 保護された <entity> には、<type> ポインタまたはオブジェクトを介してアクセスでき ません 411 : パラメータは指定できません 412 : ここでは "asm" を宣言できません 413 : <type> から <type> への適切な conversion 関数がありません 414 : 不完全なクラスへのポインタを削除します 415 : <type> から <type> に変換するための適切なコンストラクタがありません 416 : <type> から <type> に変換するために複数のコンストラクタが適用されます: 417 : <type> から <type> への複数の conversion 関数が適用されます: 418 : <type> から組み込み型への複数の conversion 関数が適用されます: 424 : コンストラクタまたはデストラクタは自らのアドレスを取得できません 427 : 修飾された名前はメンバ宣言では使用できません 428 : 列挙型と別の型が混在しています(アナクロニズム) 429 : new 内の配列のサイズは負以外の値でなければなりません 430 : ローカルテンポラリへの参照を返します 433 : <type> 型の参照と <type> 型のイニシャライザのバインドで修飾子が削除されました 434 : <type> 型の参照(const で修飾されていない)は <type> 型の値で初期化できま せん 435 : 関数へのポインタは削除できません 436 : conversion 関数は非スタティックメンバ関数でなければなりません 437 : ここではテンプレートを宣言できません 438 : < が期待されます 439 : > が期待されます 440 : テンプレートパラメータ宣言がありません 441 : <entity> の引数リストがありません 442 : <entity> の引数が少なすぎます 443 : <entity> の引数が多すぎます 450 : long long 型は標準ではありません 451 : <entity> の省略は標準ではありません 452 : 戻り値型は conversion 関数には指定できません 456 : <entity> のインスタンス生成時の過剰な再帰 457 : <entity> は、関数またはスタティックデータメンバではありません 458 : <type> 型の引数は <type> 型のテンプレートパラメータと互換性がありません 459 : テンポラリまたは変換を必要とする初期化は実行できません 460 : <entity> の宣言は関数パラメータを非表示にします 461 : non-const への参照の初期値は左辺値でなければなりません 463 : "template" は使用できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-32 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 464 : <type> はクラステンプレートではありません 467 : <entity> への参照が無効です(ユニオン/非ユニオンが不一致) 468 : テンプレート引数はローカル型を参照できません 469 : <entity> のタグの種類は <entity> の宣言と互換性がありません 470 : グローバルスコープには <entity> という名前のタグが含まれていません 471 : <entity> には <entity> という名前のタグメンバがありません 473 : <entity> は、メンバへのポインタ宣言でのみ使用できます 476 : 後に "::~" が付いている名前は、クラス名または型名です 477 : デストラクタ名が <type> クラスの名前と一致しません 478 : デストラクタ名として使用されている型が <type> 型と一致しません 479 : <entity> は、呼び出された後に"inline"で再宣言されています 485 : <entity> は、インスタンス化できるエンティティではありません 486 : コンパイラによって生成された <entity> は明示的にインスタンス化できません 487 : インライン <entity> は明示的にインスタンス化できません 490 : <entity> はインスタンス化できません -- 明示的に特殊化されています 494 : typedef によって void 型のパラメータリストを宣言するのは標準ではありません コンパイラが C99 C モードでない場合、このエラーは関数宣言 f(V)(V は void 型)によ って生成されます。 void の typedef であるパラメータを使用して関数にパラメータがないことを指定する方 法は、C99 モードのみで使用できます。 496 : テンプレートパラメータ <entity> はこのスコープでは再宣言できません 497 : <entity> の宣言はテンプレートパラメータを非表示にします 498 : テンプレート引数リストはパラメータリストと一致していなければなりません 501 : 演算子名は関数として宣言する必要があります 502 : 演算子名は使用できません 503 : <entity> は現在のスコープでは特殊化できません 504 : メンバ関数のアドレスを取得するための非標準形式です C++ 標準では、メンバへのポインタの名前が、修飾名とアンパサンドを使って &&A::f のようになっている必要があります。 505 : テンプレートパラメータが少なすぎます -- 前の宣言と一致しません 506 : テンプレートパラメータが多すぎます -- 前の宣言と一致しません 507 : 演算子 delete(void *) の関数テンプレートは使用できません 508 : クラステンプレートとテンプレートパラメータの名前を同じにすることはできません 511 : 列挙型は使用できません 512 : 参照型に対して型修飾子は使用できません 513 : <type> 型の値を <type> 型のエンティティに割り当てることはできません 514 : 符号なし整数と負の定数の無効な比較 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-33 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 515 : 不完全なクラス <type> には変換できません 516 : const オブジェクトにはイニシャライザが必要です 517 : オブジェクトには、初期化されていない const または reference メンバが含まれて います 518 : 非標準のプリプロセッシングディレクティブ 519 : <entity> にテンプレート引数リストを指定することはできません 520 : "<...>" による初期化では集合タイプのオブジェクトを期待していました 521 : ポインタ-メンバ選択クラス型の間に互換性がありません(<type> と <type>) 522 : 無効な friend 宣言 524 : const オブジェクトに対して non-const 関数が呼び出されています(アナクロニズ ム) 525 : 依存するステーメントとして宣言は使用できません 526 : パラメータを void 型にすることはできません 以下に例を示します。 void foo(void a) { } 529 : この演算子はテンプレート引数式では使用できません 530 : トライブロックには、少なくとも 1 つのハンドラが必要です 531 : ハンドラには例外宣言が必要です 532 : ハンドラはデフォルトハンドラによってマスクされます 533 : ハンドラは潜在的に <type> 型の前のハンドラによってマスクされます 534 : 例外を指定するためにローカル型を使用します 535 : 例外の指定で型が重複しています 536 : 例外の指定は、前の <entity> の例外の指定と互換性がありません 540 : 例外処理のサポートがディセーブルされています 541 : 例外の指定の省略は前の <entity> と互換性がありません 542 : インスタンス生成要求ファイル <entity> を作成できませんでした 543 : 型のないテンプレート引数では非算術処理を実行できません 544 : 非ローカル変数の宣言にローカル型を使用します 545 : 関数の宣言にローカル型を使用します ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-34 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 546 : 制御の転送により、次の初期化がバイパスされます: 例: int main(void){ int choice = 1; int z =1; { case 1:int y = 1; z = y + z; 2:break; } return 0; switch(choice) break; case この例では、y は初期化された変数であり、他の(使用されない)case のスコープ内にあ ります。y の初期化をバイパスした switch ステートメントの条件から case ラベルへの移 動は、C++ 標準と競合します。 この問題に対処する一般的な方法は、y を宣言する case を次のように括弧で囲むこと です。以下のコードは、 y の有効範囲を制限するため、別の箇所でそれを使用しようと するとエラーが発生します。 case 1:{ int y = 1; z = y + z; } break; y case 1:int y; y = 1; z = y + z; break; 548 : 例外ハンドラに制御が転送されます 549 : 値が設定される前に <entity> が使用されています 550 : <entity> は設定されましたが使用されませんでした 551 : <entity> は現在のスコープでは定義できません 552 : 例外を指定できません 553 : <entity> の外部/内部リンケージが競合しています 554 : <entity> は、暗黙または明示の変換のために呼び出されません 555 : <entity> のタグの種類は <type> 型のテンプレートパラメータと互換性がありません 556 : 演算子 new(size_t) の関数テンプレートは使用できません 558 : <type> 型のメンバへのポインタは使用できません 559 : operator 関数のパラメータリストに省略記号を含めることができません 560 : <entity> は、将来キーワードとして使用するために予約されています 561 : 無効なマクロ定義: 562 : 無効なマクロ未定義: 563 : 無効な <entity> 出力ファイル <filename> 564 : <entity> 出力ファイル <filename> を開けません<reason> 570 : デバッグオプション引数にエラーがあります 571 : 無効なオプション: 574 : 無効な番号: 576 : 無効なインスタンス生成モード: 578 : 無効なエラーリミット: ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-35 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 585 : 仮想関数テーブルは C++ のコンパイル時にのみ抑止できます 586 : アナクロニズムオプションは C++ のコンパイル時にのみ使用できます 587 : インスタンス生成モードオプションは C++ のコンパイル時にのみ使用できます 588 : 自動インスタンス生成モードは、C++ のコンパイル時にのみ使用できます 589 : 暗黙のテンプレートインクルードモードは、C++ のコンパイル時にのみ使用できます 590 : 例外処理オプションは、C++ のコンパイル時にのみ使用できます 593 : ソースファイル名がありません 594 : 複数の入力ファイルをコンパイルする場合は出力ファイルを指定できません 595 : コマンドラインに引数が多すぎます 596 : 出力ファイルが指定されていますが、どのファイルも必要ありません 598 : テンプレートパラメータを void 型にすることはできません 600 : 厳密な ANSI モードは、アナクロニズムの許可と互換性がありません 601 : throw 式を void 型にすることはできません 602 : ローカルインスタンス生成モードは自動インスタンス生成と互換性がありません 603 : 抽象クラス型 <type> のパラメータは使用できません: 604 : 抽象クラス <type> の配列は使用できません 605 : 浮動小数点テンプレートパラメータは標準ではありません 606 : このプラグマは宣言の直前になければなりません 607 : このプラグマはステートメントの直前になければなりません 608 : このプラグマはステートメントまたは宣言の直前になければなりません 609 : ここでこの種類のプラグマは使用できません 611 : オーバーロードされた仮想関数 <entity> は、<entity> で一部分がオーバーライド されます 612 : inline template 関数の特定の定義は、その関数が初めて使用される前に指定す る必要があります 613 : 診断制御オプション内の無効なエラータグ: 614 : 診断制御オプション内の無効なエラー番号: 615 : パラメータ型には、境界が不明な配列へのポインタが含まれます 616 : パラメータ型には、境界が不明な配列への参照が含まれます 617 : メンバ関数へのポインタを関数へのポインタにキャストします 618 : 構造体またはユニオンが名前付きのメンバを宣言していません 619 : 非標準の無名のフィールド 620 : 非標準の無名のメンバ 624 : <entity> は型名ではありません 625 : プリコンパイルヘッダ入力ファイル <entity> を開けません:<reason> 626 : プリコンパイルヘッダファイル <entity> は無効か、このバージョンのコンパイラによっ て生成されたものではありません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-36 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 627 : プリコンパイルヘッダファイル <entity> がこのディレクトリで生成されていません 628 : プリコンパイルヘッダファイル <entity> の生成に使用されたヘッダファイルが変更さ れています 629 : コマンドラインオプションが、プリコンパイルヘッダファイル <entity> の作成時に使用 されたものと一致しません 630 : プリプロセッシングディレクティブの初期シーケンスは、プリコンパイルヘッダファイル <entity> の初期シーケンスと互換性がありません 631 : <entity> に対して、マップされたメモリを取得できません:<reason> これは、大きな プリコンパイルヘッダ(PCH)の使用を試みたときに、ARM コンパイラツ ールチェーンが使用する TMP ディレクトリにサイズの制限がある場合に発生する可能性 があります。これを回避するには、TMP 環境変数を削除します。これにより、現在の作業 ディレクトリに一時ファイルが作成されます。 『スタート ガイド』の以下のセクションを参照して下さい。 一時ファイルディレクトリの TMP および TMPDIR 環境変数 632 : "<entity>":プリコンパイルヘッダファイル "<entity>" の使用 633 : "<entity>":プリコンパイルヘッダファイル "<entity>" の作成 634 : メモリの使用法がプリコンパイルヘッダファイル <entity> と競合しています これは、コンパイラのアドレス空間の必須部分を使用できないために PCH ファイルをビ ルドにマップできない場合に発生する可能性があります。 エラー 631 も参照して下さい。 635 : PCH メモリサイズが無効です 636 : PCH オプションは、コマンドラインの最初に表示されなければなりません 637 : PCH メモリ割り当て用のメモリが足りません 638 : プリコンパイルヘッダファイルは、複数の入力ファイルをコンパイルする場合は使用でき ません 639 : プリコンパイルヘッダファイルを生成するには、割り当て済みのメモリが足りません (<entity> バイト必要) 640 : プログラム内に非常に大きなエンティティがあるため、プリコンパイルヘッダファイルを生 成できません 641 : <entity> は有効なディクレトリではありません 642 : テンポラリファイル名を作成できません 643 : "restrict" は使用できません 644 : 関数型へのポインタまたは参照は "restrict" によって修飾できません 645 : <entity> は、認識されない __declspec 属性です 646 : ここで呼び出し規則修飾子を指定することはできません 647 : 呼び出し規則修飾子が競合しています 650 : ここで指定した呼び出し規則は無視されます 651 : 呼び出し規則の後に、ネストされた宣言子を続けることはできません 652 : この型では呼び出し規則は無視されます 654 : 宣言修飾子は前の宣言と互換性がありません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-37 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 655 : 修飾子 <entity> はこの宣言には使用できません 656 : トライブロックに制御が転送されます 657 : インラインの指定は前の <entity> と互換性がありません 658 : テンプレート定義の閉じ括弧が見つかりません 659 : wchar_t keyword オプションは C++ のコンパイル時にのみ使用できます 660 : パックアライメント値が無効です 661 : 整数定数が期待されます 662 : 純仮想関数の呼び出し 例えば、次のように、純仮想関数が呼び出されるとします。 struct T { T(); virtual void pvfn() = 0; }; T::T() { pvfn(); } // ここで警告が発生 // 純仮想関数 デフォルトでは、純仮想関数を呼び出すと、次のような結果になります。 1. 2. 3. 4. ライブラリ関数 __cxa_pure_virtual() が呼び出される __cxa_pure_virtual() 関数がシグナル SIGPVFN を生成する このシグナルが default_signal_handler によってトラップされる このハンドラがセミホスティングを使ってコンソールに "純仮想関数が呼び出されまし た" と表示する コンパイラのドキュメントの以下のセクションを参照して下さい。 純仮想関数の呼び出し 663 : ソースファイル識別子ストリングが無効です 664 : クラステンプレートは friend 宣言では定義できません 665 : "asm" は使用できません 666 : "asm" は関数定義と一緒に使用する必要があります 667 : "asm" 関数は標準ではありません 668 : 明示的なパラメータなしの省略記号は標準ではありません 669 : "&..." は標準ではありません 670 : "&..." は使用できません 672 : const volatile への参照の初期値としてテンポラリが使用されています(アナクロニ ズム) 673 : <type> 型の参照は <type> 型の値で初期化することはできません 674 : const volatile への参照の初期値は左辺値でなければなりません 676 : <entity> のスコープ外宣言の使用 678 : <entity> の呼び出しはインラインにできません 679 : <entity> はインラインにできません 680 : 無効な PCH ディレクトリ: 688 : <entity> がパックアライメントスタックで見つかりません 689 : パックアライメントスタックが空です ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-38 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 690 : RTTI オプションは C++ のコンパイル時にのみ使用できます 691 : 削除されたコピーに必要な <entity> にアクセスできません 692 : 参照パラメータを右辺値にバインドできないので、削除されたコピーに必要な <entity> を呼び出せません 693 : <typeinfo> は、typeid を使用する前にインクルードする必要があります 694 : <entity> は、const またはその他の型修飾子をキャストできません 695 : dynamic_cast の型は、完全なクラス型へのポインタか参照、または void * でなけ ればなりません 696 : ポインタ dynamic_cast のオペランドは、完全なクラス型へのポインタでなければなり ません 697 : 参照 dynamic_cast のオペランドは、完全なクラス型の左辺値でなければなりません 698 : ランタイム dynamic_cast のオペランドは、ポリモーフィッククラスでなければなりませ ん 699 : bool オプションは C++ のコンパイル時にのみ使用できます 702 : = が期待されます 703 : 条件宣言内で宣言子が期待されます 704 : 条件内で宣言されている <entity> は、このスコープでは再宣言できません 705 : デフォルトのテンプレート引数は、関数テンプレートには使用できません 706 : "," または ">" が期待されます 707 : テンプレートパラメータリストが期待されます 708 : ブール値のインクリメントは廃止される予定です 709 : ブール型は使用できません 710 : ベースクラス <entity> のオフセット(クラス <entity> 内)が大きすぎます 711 : 式はブール型(またはブールに変換可能な型)でなければなりません 712 : array new および delete オプションは C++ のコンパイル時にのみ使用できます 713 : <entity> は変数名ではありません 717 : const_cast 内の型は、オブジェクト型へのポインタ、参照、またはポインタ-メンバでな ければなりません 718 : const_cast は型指定子のみを調整できます。基本型を変更することはできません。 719 : mutable は使用できません 720 : <entity> を再定義してアクセス権を変更することはできません 722 : 代替トークン "<:" の使用は予想されていません 723 : 代替トークン "%:" の使用は予想されていません 724 : ネームスペースは定義できません 725 : 名前はネームスペース名でなければなりません 726 : ネームスペースエイリアスは定義できません 727 : ネームスペースで修飾された名前が必要です 728 : ネームスペース名は使用できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-39 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 730 : <entity> はクラステンプレートではありません 731 : 不完全な要素型の配列は標準ではありません 732 : 領域割り当て演算子はネームスペースでは宣言できません 733 : 領域解放演算子はネームスペースでは宣言できません 734 : <entity> は <entity> の using 宣言と競合しています 735 : <entity> の using 宣言は、<entity> と競合しています 736 : ネームスペースオプションは C++ のコンパイル時にのみ使用できます 737 : using 宣言は無視されます -- 現在のネームスペースを参照しています 738 : クラスで修飾された名前が必要です 744 : 互換性のないメモリ属性が指定されています 745 : メモリ属性は無視されます 746 : メモリ属性の後に、ネストされた宣言子を続けることはできません 747 : メモリ属性が複数回指定されています 748 : 呼び出し規則が複数回指定されています 749 : 型修飾子は使用できません 750 : <entity> が、そのテンプレートを宣言する前に使用されました 751 : 同じパラメータ型のスタティックおよび非スタティックメンバ関数は多重定義できません 752 : <entity> が前に宣言されていません 753 : テンプレート id は使用できません 754 : クラスで修飾された名前は使用できません 755 : <entity> は現在のスコープでは宣言できません 756 : 修飾された名前はネームスペースメンバ宣言では使用できません 757 : <entity> は型名ではありません 758 : 明示的なインスタンス生成は現在のスコープでは実行できません 759 : <entity> は現在のスコープでは明示的にインスタンス化できません 760 : <entity> が複数回明示的にインスタンス化されています 761 : typename はテンプレート内でのみ使用できます 763 : typename オプションは C++ のコンパイル時にのみ使用できます 764 : implicit typename オプションは C++ のコンパイル時にのみ使用できます 765 : オブジェクトライクなマクロ定義の先頭に非標準文字があります 766 : 仮想 <entity> の例外の指定は、オーバーライドされた <entity> の指定と互換性 がありません 767 : ポインタをより小さい整数に変換します 768 : 暗黙的に宣言された仮想 <entity> の例外の指定は、オーバーライドされた <entity> の指定と互換性がありません 769 : <entity>(<entity> から暗黙的に呼び出し)があいまいです 770 : オプション "explicit" は C++ のコンパイル時にのみ使用できます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-40 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 771 : "explicit" は使用できません 772 : 宣言が <entity>(予約済みクラス名)と競合しています 773 : "()" のみが配列 <entity> のイニシャライザとして使用できます 774 : "virtual" は関数テンプレート宣言では使用できません 775 : 無名共用体が無効です -- クラスメンバテンプレートは使用できません 776 : テンプレートのネストの深さが <entity> の前の宣言と一致しません 777 : この宣言には複数の "template <...>" 節を含めることができません 778 : for-init のスコープを制御するオプションは C++ のコンパイル時にのみ使用できま す 779 : for-loop 初期化で宣言された <entity> は、このスコープでは再宣言できません 780 : <entity> への参照です -- 古い for-init スコープルールでは <entity> でし た 781 : for-init の相違に対する警告を制御するオプションは C++ のコンパイル時にのみ 使用できます 782 : ここでは仮想 <entity> の定義が必要です 783 : 空のコメントはトークン貼り付け演算子 "##" として解釈されます 784 : 記憶クラスは friend 宣言では使用できません 785 : <entity> のテンプレートパラメータリストはこの宣言では使用できません 786 : <entity> は有効なメンバクラスまたは関数テンプレートではありません 787 : 有効なメンバクラスまたは関数テンプレート宣言ではありません 788 : テンプレートパラメータリストを含むテンプレート宣言の後に、明示的な特殊化宣言を続 けることはできません 789 : <entity> の明示的な特殊化は、<entity> を初めて使用する前に行う必要がありま す 790 : 明示的な特殊化は現在のスコープでは実行できません 791 : <entity> の部分的な特殊化は実行できません 792 : <entity> は明示的に特殊化できるエンティティではありません 793 : <entity> の明示的な特殊化は、初めて使用する前に実行する必要があります 794 : テンプレートパラメータ <entity> は elaborated 型指定子では使用できません 795 : <entity> を特殊化するには、"template<>" 構文を使用する必要がありま す 798 : オプション old_specializations は C++ のコンパイル時にのみ使用できます 799 : "template<>" 構文を使用しない <entity> の特殊化は標準ではありませ ん 800 : この宣言に extern "C" リンケージを含めることはできません 801 : <entity> は、現在のスコープのクラスまたは関数テンプレート名ではありません 802 : 参照されていない関数テンプレートの再宣言時におけるデフォルト引数の指定は標準 ではありません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-41 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 803 : 既に参照されている関数テンプレートの再宣言時にデフォルト引数を指定することはで きません 804 : ベースクラス <type> のメンバへのポインタは派生クラス <type> のメンバへのポイン タに変換できません。ベースクラスは仮想です。 805 : 例外の指定は、<entity><entity> の例外の指定と互換性がありません 806 : 例外の指定の省略は <entity> と互換性がありません 807 : デフォルト引数式の最後が期待されていませんでした 808 : 参照のデフォルト初期化は実行できません 809 : 初期化されていない <entity> に const メンバが含まれています 810 : 初期化されていないベースクラス <type> に const メンバが含まれています 811 : const <entity> にはイニシャライザが必要です -- クラス <type> には明示的に 宣言されたデフォルトコンストラクタがありません 812 : const オブジェクトにはイニシャライザが必要です -- クラス <type> には明示的に 宣言されたデフォルトコンストラクタがありません 814 : 厳密な ANSI モードは long 保存規則と互換性がありません 815 : 戻り値型に対する型修飾子は無効です 以下に例を示します。 __packed void foo( void ) { } 戻り値型が __packed になることはありえないので、__packed 修飾子は無視されま す。 816 : 関数定義では、"void" 戻り値型に対して型修飾子は使用できません 817 : スタティックデータメンバ宣言はこのクラスでは使用できません 818 : テンプレートのインスタンス生成の結果、無効な関数宣言が生成されました 819 : "..." は使用できません 821 : extern inline <entity> は参照されましたが定義されていません 822 : <type> 型のデストラクタ名が無効です 824 : デストラクタ参照があいまいです -- <entity> および <entity> の両方を使用でき ます 825 : <entity> を使用できます 826 : <entity> はまったく参照されていません 827 : コンストラクタイニシャライザリストでは、ユニオンの 1 つのメンバのみを指定できます 828 : new[] および "delete[]" のサポートが無効となっています 829 : 生成された C コードで、"long double" の代わりに "double" が使用されていま す 830 : <entity> には対応する演算子 delete<entity>(割り当てられたオブジェクトの初 期化中に例外がスローされた場合に呼び出されます)がありません 831 : 配置の削除のサポートはディセーブルされています 832 : 該当する演算子 delete が表示されていません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-42 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 833 : 不完全型へのポインタまたは参照は使用できません 834 : 部分的な特殊化は無効です -- <entity> は既に全体が特殊化されています 835 : 例外の指定が不完全です 836 : ローカル変数への参照を返します 837 : 明示的な型の省略は標準ではありません("int" を想定) 関数が戻り値型なしで宣言または定義されています。 例えば、次のコードでは、 foo(void){ int a; } int 型の結果が想定されます。 結果を返さない場合は、戻り値型として void を指定して下さい。これは、古いスタイル の C では一般的なことです。 --diag_suppress 837 オプションを指定すると、この警告が非表示になります。 このメッセージの特別なケースである main() については、メッセージ番号 938 も参照 して下さい。 838 : 複数の部分的な特殊化が、<entity> のテンプレート引数リストと一致しています 840 : テンプレート引数リストはプライマリテンプレートの宣言では使用できません 841 : 部分的な特殊化にデフォルトテンプレート引数を指定することはできません 842 : <entity> は、<entity> のテンプレート引数リストで使用されていません 844 : 部分的な特殊化のテンプレート引数リストには、テンプレートパラメータに型を依存する 型のない引数がインクルードされています 845 : この部分的な特殊化は、<entity> のインスタンス生成に使用されるはずでした 846 : この部分的な特殊化は、<entity> のインスタンス生成をあいまいにするはずでした 847 : 式は整数型または列挙型である必要があります 848 : 式は算術型または列挙型である必要があります 849 : 式は、算術型、列挙型、またはポインタ型である必要があります 850 : キャスト型は整数または列挙でなければなりません 851 : キャスト型は、算術、列挙、またはポインタでなければなりません 852 : 式は、完全なオブジェクト型へのポインタでなければなりません 854 : 部分的な特殊化の型のない引数は型のないパラメータまたは定数の名前でなければな りません 855 : 戻り値型が戻り値型 <type>(オーバライドされた仮想関数 <entity> のもの)と同じ ではありません 856 : オプション "guiding_decls" は C++ のコンパイル時にのみ使用できます 857 : クラステンプレートの部分的な特殊化は、それがメンバになっているネームスペースで宣 言する必要があります 858 : <entity> は純仮想関数です ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-43 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 859 : 純仮想 <entity> にはオーバライタがありません 860 : __declspec 属性は無視されます 861 : 入力行に無効な文字があります 862 : 関数は不完全型 <type> を返します 863 : この "#pragma pack" ディレクティブの効果は <entity> に対してローカルです 864 : <entity> はテンプレートではありません 865 : friend 宣言では部分的な特殊化を宣言できません 866 : 例外の指定は無視されます 867 : size_t の宣言が期待される型 <type> と一致しません 868 : ネストされたテンプレート引数リストの隣接する ">" 区切り文字の間に空白が必要 です(">>" は右シフト演算子) 869 : ロケール <entity> を設定してマルチバイト文字の処理を有効にすることができませ んでした 870 : マルチバイト文字シーケンスが無効です 871 : テンプレートのインスタンス生成の結果、予期しない関数型 <type> になりました(テン プレート宣言以降に名前の意味が変更された可能性があります -- テンプレートの型は <type> です) 872 : 導入宣言があいまいです -- 複数の関数テンプレート <entity> が <type> 型と 一致します 873 : 型のないテンプレート引数では非整数処理を実行できません 884 : メンバへのポインタ表現 <entity> は <entity> に対して既に設定されています 885 : <type> を使用して <type> のコンストラクタを指定することはできません 886 : 整数定数の接尾文字が無効です 890 : 境界が指定されていない可変長配列は使用できません 891 : 明示的なテンプレート引数リストはこの宣言では使用できません 892 : リンケージを持つエンティティは可変長配列を含む型にすることができません 893 : 可変長配列の保存期間をスタティックにすることができません 894 : <entity> はテンプレートではありません 895 : 可変長配列次元(<entity> と宣言) 896 : テンプレート引数が期待されます 902 : 型修飾子は無視されます 912 : クラスメンバ参照があいまいです -- <entity> が <entity> よりも優先して使用さ れています 915 : セグメント名は既に指定されています 916 : 派生クラス <type> のメンバへのポインタはベースクラス <type> のメンバへのポイン タに変換できません。ベースクラスは仮想です。 917 : インスタンス生成ファイルの無効なディレクトリ: ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-44 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 921 : インスタンス生成情報ファイル名は、複数の入力ファイルをコンパイルする場合は指定で きません 923 : 複数のコマンドラインオプションが省略形 "--<entity>" と一致しています 925 : 関数型の型修飾子は無視されます 926 : 定義リストファイルを開けません:<entity> 928 : va_start の使用法が正しくありません 929 : va_arg の使用法が正しくありません 930 : va_end の使用法が正しくありません 931 : pending instantiations は C++ のコンパイル時にのみ使用できます 932 : #import ファイルの無効なディレクトリ: 934 : 参照型のメンバはユニオンでは使用できません 935 : ここに "typedef" を指定することはできません 936 : <entity> を再宣言するとアクセス権が変更されます 937 : クラスまたはネームスペースで修飾された名前が必要です 938 : 戻り値型 "int" が関数 "main" の宣言で省略されています main() が戻り値型なしで宣言または定義されています。 以下に例を示します。 main(void){ int a; } このコードは、--strict でコンパイルされた場合、コンパイラによってエラーとして報告 されます。 結果を返さない場合は、戻り値型として void を指定して下さい。これは、古いスタイル の C では一般的なことです。 ANSI C では、--diag_suppress 938 オプションを指定すると、この警告が非表示に なります。 C++ では、常にエラーになります。 より一般的なケースについては、メッセージ番号 837 を参照して下さい。 939 : メンバへのポインタ表現 <entity> は <entity> において制約が大きすぎます 940 : 非 void <entity> の末尾に return ステートメントがありません 関数に戻り値型が定義されていますが、値が返されていません。 例: int foo(int a) { printf("Hello %d", a); } 941 : <entity> の重複する using-declaration は無視されます 942 : enum ビットフィールドは常に符号なしですが、enum <type> には負の列挙子が含ま れています ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-45 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 943 : オプション "class_name_injection" は C++ のコンパイル時にのみ使用できます 944 : オプション "arg_dep_lookup" は C++ のコンパイル時にのみ使用できます 945 : オプション "friend_injection" は C++ のコンパイル時にのみ使用できます 946 : template の後の名前はテンプレートでなければなりません 949 : この宣言時におけるデフォルト引数の指定は標準ではありません 951 : 関数 "main" の戻り値型は "int" でなければなりません 952 : 型のないテンプレートパラメータをクラス型にすることはできません 953 : クラスの外側にあるクラステンプレートメンバの宣言時に、デフォルトテンプレート引数を 指定できません 954 : return ステートメントは、コンストラクタのトライブロックのハンドラでは使用できません 955 : 通常の指定子および拡張指定子は、イニシャライザ指定で組み合わせることができませ ん 956 : 2 番目の添字を最初の添字よりも小さくすることはできません 959 : ビットフィールドの宣言されたサイズが、ビットフィールド型のサイズよりも大きくなっていま す。<entity> ビットに切り捨てられます。 960 : コンストラクタ名として使用されている型が <type> 型と一致しません 961 : リンケージのない型を使用してリンケージのある変数を宣言しています 962 : リンケージのない型を使用して関数を宣言しています 963 : 戻り値型はコンストラクタには指定できません 964 : 戻り値型はデストラクタには指定できません 965 : ユニバーサル文字名が正しい形式ではありません 966 : ユニバーサル文字名が無効な文字を指定しています 967 : ユニバーサル文字名は、基本キャクラタセットの文字を指定できません 968 : このユニバーサル文字は識別子には使用できません 969 : 識別子 __VA_ARGS__ は、可変個引数マクロの置換リストにのみ表示できます 970 : この friend 宣言の修飾子は無視されます 971 : 配列範囲指定子はダイナミックなイニシャライザには適用できません 972 : プロパティ名はここには表示されません 975 : 可変長配列型は使用できません 976 : 複合リテラルは整数的な定数式では使用できません 977 : <type> 型の複合リテラルは使用できません 978 : テンプレート friend 宣言はローカルクラスでは宣言できません 979 : あいまいな "?" 演算:<type> 型の 2 番目のオペランドは <type> 型の 3 番目 のオペランドに変換できます。その逆も可能です。 980 : 関数ポインタへの適切な operator() または変換関数のないクラス型のオブジェクト の呼び出し 982 : 引数リストに対して <type> 型のオブジェクトを呼び出すことができる方法が複数ありま す ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-46 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 983 : typedef 名は既に宣言されています(同様の型で) 984 : 演算子 new と演算子 delete には内部リンケージを与えることはできません 985 : 記憶クラス "mutable" は無名共用体には使用できません 986 : プリコンパイルヘッダファイルが無効です 987 : 抽象クラス型 <type> はキャッチ型として使用できません: 988 : 修飾された関数型を使用して非メンバ関数またはスタティックメンバ関数を宣言すること はできません 989 : 修飾された関数型を使用してパラメータを宣言することはできません 990 : 修飾された関数型へのポインタまたは参照を作成できません 991 : 余分な中括弧は標準ではありません 992 : 無効なマクロ定義: コンパイル行での、"-D##" のような不適切な -D の使用 993 : ポインタ型 <type> および <type> の減算は標準ではありません 994 : 空のテンプレートパラメータリストはテンプレートテンプレートパラメータ宣言では使用で きません 995 : class が期待されます 996 : テンプレートテンプレートパラメータを宣言する場合は、"class" キーワードを使用する 必要があります 997 : <entity> は <entity>によって隠蔽されています -- 仮想関数のオーバーライドを 意図した可能性があります 998 : 修飾された名前は、関数定義である friend 宣言には使用できません 999 : <entity> は <entity> と互換性がありません 1000 : ここに記憶クラスを指定することはできません 1001 : using-declaration によって指定されたクラスメンバは、直接ベースクラスで表示さ れていなければなりません 1006 : テンプレートテンプレートパラメータは、そのテンプレートパラメータのいずれかと同じ名 前にすることはできません 1007 : デフォルト引数の再帰的なインスタンス生成 1009 : <entity> は、定義できるエンティティではありません 1010 : デストラクタ名は修飾する必要があります 1011 : friend クラス名は "typename" で示すことができません 1012 : using-declaration ではコンストラクタまたはデストラクタを指定できません 1013 : 修飾された friend テンプレート宣言は、前に宣言した特定のテンプレートを参照す る必要があります 1014 : クラステンプレート宣言内の指定子が無効です 1015 : 引数は仮パラメータと互換性がありません 1016 : ARM 関数修飾子の接頭文字形式は、この位置に置くことができません 1017 : 重複する ARM 関数修飾子は使用できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-47 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1018 : ARM 関数修飾子はこの宣言/定義には使用できません ARM 関数修飾子の例としては、 __svc、__pure、__irq があります。 コンパイラのドキュメントの以下のセクションを参照して下さい。 キーワードと演算子 1019 : 関数修飾子 <entity> は非スタティックメンバ関数には使用できません 1020 : __irq 関数は引数を取ることができません 1021 : __irq 関数は結果を返すことができません 1022 : <entity> 関数へのポインタまたは参照を持つことはできません 1023 : __global_reg はこの宣言には使用できません 1024 : 無効なグローバルレジスタ番号です。1 ~ 8 を使用できます。 無効なレジスタが __global_reg で使用されています。 例: __global_reg(786) int x; 1025 : __svc パラメータ <entity> が、ARM SVC 命令の許可された範囲(0 ~ 0xffffff)外です SVC 番号は、ARM コンパイラでは 0 ~ 0xffffff 、Thumb コンパイラでは 0 ~ 0xFF の範囲に制限されています。 標準セミホスティング SVC は、ARM では 0x123456 、Thumb では 0xAB が使用され ます。 1026 : グローバルレジスタ変数のアドレスを取得することはできません 1027 : __svc_indirect 関数には引数が必要です 1028 : グローバルレジスタ宣言が <entity> と競合しています 1029 : __packed は、非ポインタパラメータでは無視されます 1030 : <entity> <type> は、__packed なしで前に宣言されています 1031 : <type> の定義(パックされた <type> 内)は __packed でなければなりません パックされていない子構造体が、パックされた親構造体に含まれていると、エラーになり ます。サブ構造体が配列である場合も同様です。 以下に例を示します。 typedef struct ChildStruct { int a; } ChildStruct; typedef __packed struct ParentStruct { ChildStruct child[1]; } ParentStruct; 次のようなメッセージが表示されます。 エラー:#1031:"ChildStruct" の定義(パックされた "ParentStruct" 内)は __packed でなけれ ばなりません コンパイラのドキュメントの以下のセクションを参照して下さい。 __packed 1032 : ネストされたアノニマス <entity> の定義(パックされた <type> 内)は__packed でなければなりません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-48 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1033 : <entity> は関数定義と互換性がありません 1034 : __irq 関数を関数呼び出しのターゲットにすることはできません 1038 : 無効なアライメントが指定されています。2 の整数の累乗のみを指定できます。 1039 : アライメント宣言が <entity> と競合しています 1040 : アンダーアライメントは許可されません 1041 : 自動オブジェクトのアライメントは 8 を超えることができません 以下に例を示します。 int main(void){ __align(16) int foo = 10; } __align はローカル変数 foo には使用できないため、エラーが発生します。 コンパイラのドキュメントの以下のセクションを参照して下さい。 __align。 1042 : <entity> は、位置非依存でコンパイルされている場合、ダイナミックに初期化できま せん 1043 : <entity> は mutable メンバを保持しているので const にできません 以下に例を示します。 struct foo { int a; mutable int b; }; extern const struct foo bar; コンパイラが ROPI モードまたは RWPI モードの場合は、 const オブジェクトに mutable メンバを含めることはできません。 これらのモードでこの制約を行う理由は、コンパイラは読み出し-書き込みデータとは別 に、読み出し専用データに対処するからです。したがって、オブジェクトが RO または RW データセクションにあるかどうかを知る必要があります。次のサンプルでは、この制 約は bar が mutable メンバを含められないため、RO データセクションに存在すること を意味します。 struct foo; extern const struct foo bar; const struct foo *get_foo() &bar; } { return コンパイラのドキュメントの以下のセクションを参照して下さい。 --apcs=qualifier...qualifier 1044 : オプション "dep_name" は C++ のコンパイル時にのみ使用できます 1045 : "operator->" 関数のシーケンスのループがクラス <type> で始まっています 1046 : <entity> にメンバクラス <entity> がありません 1047 : グローバルスコープには <entity> という名前のクラスが含まれていません 1048 : テンプレートのデフォルト引数の再帰的なインスタンス生成 1049 : アクセス宣言と using 宣言はユニオンに表示できません 1050 : <entity> はクラスメンバではありません 1051 : 非標準メンバ定数を宣言できません 1053 : オプション "parse_templates" は C++ のコンパイル時にのみ使用できます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-49 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1054 : オプション "dep_name" は "no_parse_templates" では使用できません 1055 : 指定されている言語モードの間に互換性がありません 1056 : ネストされたクラスの再宣言は無効です 1057 : 未知のサイズ配列を含む型は使用できません 1058 : スタティックな保存期間を持つ変数は inline 関数内で定義できません 1059 : 内部リンケージを持つエンティティは、外部リンケージを持つ inline 関数内で参照 できません 1060 : 引数の型 <type> は、この型汎用の関数マクロと一致しません 1062 : friend 宣言は、前の宣言にデフォルト引数を追加できません 1063 : <entity> はこのスコープで宣言できません 1064 : 予約済みの識別子 <entity> は、関数内でのみ使用できます 1065 : このユニバーサル文字を識別子の先頭には使用できません 1066 : 文字列リテラルが期待されます 1070 : va_copy の使用法が正しくありません 1071 : <entity> は、浮動小数点型と一緒の場合のみ使用できます 1072 : 複素型は使用できません 1073 : 指定子の種類が無効です 1074 : 浮動小数点値は正確に表現できません 1075 : 複素数浮動小数点演算の結果が範囲外です 1077 : イニシャライザは、フレキシブル配列メンバに対して指定できません 1079 : 標準では、後続の宣言によって <entity> に型を指定する必要があります("int" を想定) 1080 : インライン <entity> には定義が必要です 1081 : 整数をより小さいポインタに変換します 1082 : _Complex または _Imaginary 型の型指定子には浮動小数点型を含める必要があ ります 1083 : インラインアセンブラの構文エラー ARM コンパイラ 4.1p2 以前のバージョンでは、このエラーは、インラインアセンブリコー ドにインラインアセンブラ(例えば WFI 命令)によってサポートされなかった命令が含ま れた場合に生成されます。4.1p3 以降のバージョンでは、すべての ARM コンパイラ 5 のバージョンを含めて、次のエラーが代わりに発生します。 1084:この命令はインラインアセンブラでは使用できません 1084 : この命令はインラインアセンブラでは使用できません 1085 : オペランドがありません 1086 : オペランドの型が正しくありません 1087 : オペランドは定数でなければなりません 1088 : オペランドの数が正しくありません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-50 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1089 : PSR オペランドが無効です 1090 : PSR オペランドが期待されます 1091 : 指定されたシフトが無効です 1092 : acc0 でなければなりません 1093 : 修正可能な左辺値でなければなりません 1094 : レジスタ式が期待されます 1095 : ラベル名または関数名が期待されます 1096 : 命令を条件付きにすることはできません 1097 : [ または ] が期待されます 1098 : シフト演算が期待されます 1099 : ] が期待されません 1100 : レジスタ指定シフトは使用できません 1101 : プレインデックスアドレッシングは使用できません 1102 : ポストインデクスアドレッシングは使用できません 1103 : アドレシングモードではライトバックできません 1104 : { が期待されます 1105 : } が期待されます 1106 : レジスタリストにレジスタが多すぎます 1107 : ここでは ^ のみが有効です 1108 : レジスタリストに仮想レジスタと C/C++ 式を混在させることはできません 1109 : レジスタ範囲では仮想レジスタのみを指定できます 1110 : ユーザモードのレジスタ選択/CPSR 更新は、インラインアセンブラではサポートされて いません。組み込みアセンブラまたはアウトオブラインアセンブラを使用してください。 1111 : コプロセッサ名が期待されます 1112 : コプロセッサレジスタ名が期待されます これらのエラーは、次のような場合にインラインアセンブラによって発生します。 • • MCR または MRC 命令で、コプロセッサ番号を指定し忘れている 無効なコプロセッサ番号またはコプロセッサレジスタ番号が指定されている この正しい使用例は、次のとおりです。 void foo() { int reg0; __asm { MRC p15, 0, reg0, c1, c0, 0 } } ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-51 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1114 : この機能は、ターゲットアーキテクチャ/プロセッサではサポートされていません 例えば、以下のコードを armcc --cpu 4T でコンパイルした場合、 int main(void) { int a,b,c; __asm { QADD a,b,c } return(a); } サチュレート加算命令は ARMv5TE 以降でしかサポートされていないため、エラーメッ セージが生成されます。 1115 : const オペランドに割り当てられません 1116 : レジスタリストは空にできません 1117 : 非修飾の仮想関数は使用できません 1118 : 復帰改行が期待されます 1119 : スタティック変数への参照は __asm 関数では使用できません 1120 : スタティック関数への参照は __asm 関数では使用できません 1121 : データメンバへのポインタは __asm 関数では使用できません 1122 : __asm 関数にはスタティック修飾子を含めることができません。 1123 : ベースクラス <type> は <type> の仮想ベースクラスです 1124 : ベースクラス <type> は <type> の仮想ベースクラスではありません 1125 : <entity> にはメンバ関数 <entity> が含まれていません 1126 : "__asm" はこの宣言には使用できません 1127 : メンバイニシャライザリストは __asm コンストラクタには使用できません 1128 : トライブロックは __asm コンストラクタには使用できません 1129 : オペランドの順序と前のコンパイラバージョンに互換性がありません 1130 : __align は typedef では使用できません 1131 : 移植不可能命令(ライトバックとベースを使用する LDM がレジスタリストで指定されて いる場合、ベースの最終的な値は予想できません) 1132 : 移植不可能命令(ライトバックとベースを使用する STM がレジスタリストの最初にない 場合、ベースの格納値は予想できません) 1133 : 式オペランドは仮想ベースレジスタでは使用できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-52 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1134 : リテラルは "long long" として処理されます 定数が signed long で表現するには大きすぎるので、(signed)long long として処理 されました。 以下に例を示します。 int foo(unsigned int bar) { return (bar == 2147483648); } 2147483648 は signed long で使用できる最大値より 1 大きいので、警告が発生しま す。警告が表示されないようにするには、定数を符号付き long ではなく、(64 ビットの) long long 型として処理する必要がある場合は、ll または LL の接尾文字を明示的に 追加するか、符号なし整数として処理する場合は、 U 接尾文字を追加します。 以下に例を示します。 int foo(unsigned int bar) { return (bar == 2147483648U); } コンパイラのドキュメントの以下のセクションを参照して下さい。 long long。 1135 : リテラルは "unsigned long long" として処理されます 定数が signed long long で表現するには大きすぎるので、unsigned long long 型に されました。エラー番号 1134 を参照して下さい。 1137 : コンマが期待されます 1138 : この式の後に期待されないコンマがあります 1139 : MRRC 処理のオペコードは 0 ~ 15 の範囲になければなりません 1140 : MCRR 処理のオペコードは 0 ~ 15 の範囲になければなりません 1141 : CDP 処理のオペコードは 0 ~ 15 の範囲になければなりません 1142 : MRC 処理のオペコードは 0 ~ 7 の範囲になければなりません 1143 : MCR 処理のオペコードは 0 ~ 7 の範囲になければなりません 1144 : opcode_2 は 0 ~ 7 の範囲になければなりません 1145 : LDC/STC の余分なオペコードは 0 ~ 255 の範囲になければなりません 1146 : LDC/STC オフセットは -1020 ~ 1020 の範囲内にあり、ワード境界で整列させる必 要があります 1147 : 定数オペランドが範囲外です 1148 : 浮動小数点演算子は --fpu=none では使用できません 1149 : 関数定義内の浮動小数点の戻り値型は、-fpu=none では使用できません 1150 : 関数定義内の浮動小数点のパラメータ型は、-fpu=none では使用できません 1151 : イニシャライザによる浮動小数点変数定義は、-fpu=none では使用できません 1152 : ポリモーフィックベースクラスもエクスポートする必要があります 1153 : このレジスタリストの物理レジスタを割り当てることはできません 1154 : ここには偶数番号の物理レジスタのみを指定できます 1155 : ここには物理レジスタへの割り当てのみを指定できます 1156 : ここには物理レジスタからの割り当てのみを指定できます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-53 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1157 : 破壊されたレジスタリストの物理レジスタのみを指定できます 1158 : ここでは PSR オペランドは無効です 1159 : 明確なラベル名または関数名が期待されます 1160 : テンポラリのデストラクタの呼び出しは、この命令によって更新された条件フラグを上書 きします 1161 : スタックポインタ SP(r13)を直接変更することはできません 1162 : リンクレジスタ LR(r14)を直接変更することはできません 1163 : プログラムカウンタ PC(r15)を直接変更することはできません 1164 : オフセットはワード境界で整列させる必要があります 1165 : 型は無名共用体では宣言できません 1166 : ローカル変数へのポインタを返します 1167 : ローカルテンポラリへのポインタを返します 1168 : オプション "export" は C++ のコンパイル時にのみ使用できます 1169 : オプション "export" は "no_dep_name" では使用できません 1170 : オプション "export" は "implicit_include" では使用できません 1171 : <entity> の宣言は、別の変換単位内の宣言と互換性がありません 1172 : もう 1 つの宣言は <entity> です 1175 : フィールド宣言は可変長配列を含む型にすることができません 1176 : <entity> の宣言は <entity> のコンパイル中には別の意味を持っていました 1177 : template が期待されます 1178 : "export" は明示的なインスタンス生成には使用できません 1179 : "export" はこの宣言には使用できません 1180 : 無名のネームスペースのメンバは "export" として宣言できません 1181 : テンプレートを定義した後に "export" として宣言することはできません 1182 : 宣言にラベルを付けることはできません 1183 : エクスポートされたテンプレートのサポートはディセーブルされています 1184 : エクスポートされたテンプレートファイルを開けません:<entity> 1185 : <entity> は <entity> のコンパイル中に既に定義されています 1186 : <entity> は別の変換単位で既に定義されています 1188 : メイクファイルの依存関係を一覧表示するオプションは、複数の変換単位をコンパイル する場合には指定できません 1190 : 前処理済み出力を生成するオプションは、複数の変換単位をコンパイルする場合には 指定できません 1191 : クラスと同じ名前のフィールドを、ユーザが宣言したコンストラクタによってクラスで宣言 することはできません 1192 : "implicit_include" は、複数の変換単位をコンパイルする場合には使用できませ ん 1193 : エクスポートされたテンプレートファイル <entity> は破壊されています ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-54 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1194 : <entity> はインスタンス化できません -- エクスポートされた定義を含む変換単位 で明示的に特殊化されています 1196 : オブジェクトにはメンバ <entity> と互換性のない cv 修飾子が含まれています 1197 : 引数リストと一致する <entity> のインスタンスはありません(オブジェクトには一致を 妨げる cv 修飾子が含まれています) 1198 : 属性が、<type> と互換性のないモードを指定しています 1199 : 指定された幅を持つ型はありません 1200 : 属性によって指定されたアライメント値が無効です 1201 : <type> の属性が無効です 1202 : <entity> の属性が無効です 1203 : パラメータの属性が無効です 1204 : 属性 <entity> は引数を取ることができません 1207 : 属性 <entity> は無視されます 1208 : 属性はここに表示できません 1209 : 属性 <entity> に対する引数が無効です 1210 : packed 属性は typedef では無視されます 1211 : goto *expr では、expr は void * 型である必要があります 1212 : "goto *expr" は標準ではありません 1213 : ラベルのアドレスの取得は標準ではありません 1214 : ファイル名が複数回指定されています 1215 : #警告ディレクティブ:<entity> 1216 : 属性 <entity> は関数定義でのみ使用できます 1217 : transparent_union 属性はユニオンのみに適用され、<type> はユニオンではあ りません 1218 : transparent_union 属性は不完全型では無視されます 1219 : <type> を透過的にできません。これは、<entity> がユニオンと同じサイズでないた めです。 1220 : <type> を透過的にできません。これは、ユニオンと同じサイズでない <type> 型の フィールドがあるためです。 1221 : 透過的にできるのはパラメータのみです 1222 : <entity> 属性はローカル変数には適用されません 1224 : 属性は関数定義には使用できません 1225 : ローカルラベルの宣言はステートメント式の先頭のみに表示される必要があります 1226 : case range の 2 番目の定数は最初の定数より大きくなければなりません 1227 : asm 名は関数定義では使用できません 1228 : asm 名は typedef では無視されます 1229 : 不明のレジスタ名 "<entity>" 1230 : 修飾子文字 '<entity>' は asm オペランドでは無視されます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-55 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1231 : 不明の asm 制約条件修飾子 '<entity>' 1232 : 不明の asm 制約条件文字 '<entity>' 1233 : asm オペランドに制約条件文字がありません 1234 : asm 出力オペランドには、'=' または '+' のいずれかの修飾子を含める必要があり ます 1235 : asm 入力オペランドに、'=' または '+' 修飾子を含めることはできません 1236 : asm ステートメントに対するオペランドが多すぎます(最大値は 30。'+' 修飾子は暗 黙的なオペランドを追加します) 1237 : asm ステートメントにコロンが多すぎます 1238 : レジスタ "<entity>" が 2 回以上使用されています 1239 : レジスタ "<entity>" が使用され、かつ上書きされています 1240 : レジスタ "<entity>" が複数回上書きされています 1241 : レジスタ "<entity>" には一定の目的がありますが、asm ステートメントでは使用で きません 1242 : レジスタ "<entity>" には一定の目的がありますが、asm ステートメントでは上書き できません 1243 : 空の上書きリストは完全に省略する必要があります 1244 : asm オペランドが期待されます 1245 : 上書きするレジスタが期待されます 1246 : "format" 属性が、変数引数を持たない <entity> に適用されました 1247 : 最初の代入引数は最初の変数引数ではありません 1248 : フォーマット引数のインデックスがパラメータの数より大きくなっています 1249 : フォーマット引数は文字列型ではありません 1250 : 構文のあいまいさをなくすために使用されている "template" キーワードは、テンプ レート内でのみ使用できます 1253 : 属性は非関数型 <type> には適用されません 1254 : void または関数型へのポインタに対する演算 1255 : 記憶クラスは auto またはレジスタでなければなりません 1256 : <type> は、省略記号パラメータを介して渡されると、<type> に促進されます。代わ りに後者の型を使用して下さい。 1257 : <entity> はベースクラスメンバではありません 1262 : 符号化された名前が長すぎます 1263 : オフセットはハーフワード境界で整列させる必要があります 1264 : オフセットはダブルワード境界で整列させる必要があります 1265 : 浮動小数点型への変換または浮動小数点型からの変換は、--fpu=none では実行 できません 1266 : オペランドは定数式でなければなりません 1267 : 暗黙の物理レジスタ <entity> は変数として定義する必要があります ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-56 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1268 : 宣言は不明のエンティティ <entity> にエイリアスされています 1269 : 宣言はそのエリアス <entity> と一致しません 1270 : エイリアスとして宣言されたエンティティには定義を含めることができません 1271 : 可変長配列フィールド型は、長さがゼロの配列フィールド型として処理されます 1272 : 左辺値に対する非標準キャストはサポートされていません 1273 : 認識されないフラグ名 1274 : void 戻り値型は修飾できません 1275 : auto 指定子はここでは無視されます(標準 C/C++ では無効) 1276 : packed 属性のないアライメントの縮小は無視されます 1277 : <entity> に対応するメンバテンプレートは、別の変換単位で別の種類のテンプレー トとして宣言されています 1278 : 余分なイニシャライザは無視されます 1279 : va_start は省略記号パラメータを含む関数のみに表示できます 1282 : 変数 <entity> はレジスタ範囲では使用できません 1283 : ここでは物理レジスタ名が必要です 1284 : ここにレジスタ範囲を指定することはできません 1285 : 暗黙の物理レジスタ <entity> が定義されていません 1286 : LDRD/STRD 命令は展開されます インラインアセンブラで LDRD および STRD 命令が使用されると、これらはコンパイラによ って 2 つの LDR または STR 命令に展開されてから、コンパイラの最適化ステージに渡 されます。 最適化ステージでは、通常、2 つの LDR または STR 命令を 1 つの LDRD または STRD 命令に結合し直しますが、場合によっては、LDRD または STRD が使用されないこともあ ります。 1287 : LDM/STM 命令は展開できます インラインアセンブリコードの LDM および STM 命令は、コンパイラによって複数の LDR ま たは STR 命令に展開されてから、コンパイラの最適化ステージに渡されます。 最適化ステージでは、通常、LDR または STR 命令を LDM または STM 命令に結合し直し ますが、場合によっては、単一の LDM または STM が使用されないこともあります。 1288 : 名前の競合のために、暗黙の ARM レジスタ <entity> が定義されませんでした 1289 : ステートメント式はブロックスコープでのみ使用できます 1291 : asm 名は非レジスタ自動変数で無視されます 1292 : inline 関数はエイリアスとしても宣言されます。定義は無視されます。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-57 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1293 : 条件による代入 ブール値が必要なコンテキスト (if、while、for の制御式)や条件式の第 1 オペラン ドで、式に次のいずれかが含まれています。 • • ビット単位否定演算子(~)。論理否定演算子(!)を使う必要があったと考えられま す。 代入演算子(=)。等価演算子(==)の入力間違いだと考えられます。以下に例を示し ます。 int main(void) { int a,b; if (a=b); } どちらの場合も、演算子が意図したものである場合は、0 との明示的な比較を追加する ことにより、警告を非表示にできます。 この警告は、--diag_suppress 1293 オプションを使用すると、非表示にできます。 1294 : 古いスタイルの関数 <entity> コンパイラは、古いスタイルの関数宣言も、新しいスタイルの関数宣言も受容します。以 下の例にそれらの違いを示します。 // 新しいスタイル int add2(int a, int b) { return a+b; int oldadd2(a,b) int a; int b; { return a+b; } } // 古いスタイル 古いスタイルの関数を C モードでコンパイルすると、次のメッセージが生成されます。 警告:#1294-D:古いスタイルの関数 oldadd2 1295 : 廃止される予定の宣言 <entity> - arg 型を指定 通常、この警告は、ANSI C モードで引数型のない宣言があった場合に発生します。 ANSI C では、このような宣言は廃止される予定です。ただし、古いコードを移植する場 合など、--diag_suppress 1295 オプションを指定して、この警告を非表示にした方 が便利な場合もあります。 C++ では、 void foo(); が次の意味になります。 void foo(void); 警告は生成されません。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-58 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1296 : 拡張定数イニシャライザが使用されています 定数イニシャライザとして使用されている式が移植できない可能性があります。 このメッセージは、ANSI C の厳密な規則に従っていない定数イニシャライザがあること を警告しています。 この問題を解決するには、ANSI に準拠するようにコードを記述し直すことです。 次のサンプルでは、この警告を生成するコードを表示し、ANSI C 準拠のコードで同じ 目標を達成する潜在的な代替案を提案します。 --diag_suppress 1296 でコンパイルすると、この警告を非表示にできます。 サンプル 1: このコードは、C 標準が定数式の整数にポインタのキャストを許可しないため、x および y がグローバル変数または静的ローカル変数である静的オブジェクトの場合は、警告 1296 を生成します。 int x; int y = (int) &x; ANSI C では静的オブジェクトのイニシャライザが定数式である必要があります。(int) & x は定数式とは見なされません。 アドレスは算術型ではないため、このサンプルの C コードは ANSI C に対して使用でき ないことに注意して下さい。残念ながら、これは他のコンパイラでは一般的な ANSI 非 準拠であり、ARM にレガシーコードを移植するときに問題が発生することがあります。こ れは、ARM コンパイラがエラーというより警告を発行するためです。 ANSI C 準拠の代替方法では、y が x のポインタとなるようにコードを次のように記述し 直します。 int x; int* y = &x; サンプル 2: --c90 スイッチでコンパイルされたこのコードは、警告 1296 を生成します。 const int foo_table[] = { (int)"foo", 0, 1, 2}; ANSI C 準拠の代替方法では、次のようにコードを記述し直します。 const char* foo_table[] = { "foo", 0, (char*)1, (char*)2}; サンプル 3: このコードは、C 標準が定数式の長整数にポインタのキャストを許可しないため、警告 1296 を生成します。 char value; long array[] = { (long)&value, (long)"string" }; ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-59 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト ANSI C 準拠の代替方法では、ポインタを使用するためにコードを次のように記述し直し ます。 char value; char *array[] = { (char*)&value, (char*)"string" }; ポインタへのポインタのキャストは C 言語で使用できるため、この解決方法は有効で す。 1297 : 複数のインクルードに対してヘッダファイルが保護されていません この警告は、保護されていないヘッダファイルがインクルードされた場合に発生します。 保護されていないヘッダファイルとは、次のような宣言内にラップされていないヘッダフ ァイルのことです。 #ifdef foo_h #define foo_h /* body of include file */ #endif この警告はデフォルトではオフになっています。次のオプションを使って有効にできま す。 --diag_warning 1297 1298 : ヘッダファイルは '<entity>' によって保護されていますが、これを #define はし ていません 例: #ifndef MYHEADER_H //#define MYHEADER_H #endif このコードを修正するには、コメントのスラッシュ(//)を削除します。この警告はデフォル トではオフになっています。次のオプションを使って有効にできます。 --diag_warning 1298 1299 : メンバおよびベースクラスは宣言の順序で初期化されません。メンバ初期化リスト順で はありません。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-60 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1300 : <entity> は暗黙の仮想を継承します この警告は、派生クラスの非仮想メンバ関数が親クラスの仮想メンバを隠蔽する場合に 発生します。以下に例を示します。 struct Base { virtual void f(); }; struct Derived :Base { void f(); }; 次のようなメッセージが表示されます。 警告:#1300-D:f inherits implicit virtual struct Derived :Base { void f(); }; ^ 派生クラスで virtual キーワードを追加すると、この警告が生成されないようにすること ができます。C++ では、--diag_suppress 1300 オプションを指定すると、暗黙の仮 想の警告が非表示になります。 1301 : 構造体 <entity> に挿入されるパディング 構造体のメンバを正しく整列させるために、メンバ間にいくつかのパディングが挿入され ました。この警告はデフォルトでオフになっていますが、--diag_warning 1301 また は --remarks を使って、表示されるようにすることができます。 以下に例を示します。 struct X { char x; int y; } 次のようなメッセージが表示されます。 警告:#1301-D:構造体 X に挿入されるパディング コンパイラは、struct の末尾または複数の struct の間に追加されたパディングにつ いて警告を生成することもできます。2530 を参照して下さい。 1302 : 型はレジスタで返すには大きすぎます - __value_in_regs は無視されます 1303 : --force_new_nothrow の使用:"throw()" を追加 1304 : operator new に例外の指定がありません 1305 : --force_new_nothrow の使用:"(::std::nothrow)" を追加 1307 : 浮動小数点引数は、-fpu=none では使用できません 1308 : ベースクラス <type>(__packed クラス <type>)は __packed でなければなりま せん 1310 : 共有ブロックサイズが前に指定されたサイズと一致しません 1311 : 括弧で囲まれた式は、配列次元ではなくブロックサイズの指定と見なされます 1312 : 共有配列のブロックサイズはゼロより大きくする必要があります 1313 : 複数のブロックサイズは指定できません 1314 : strict または relaxed には shared が必要です 1316 : 指定されたブロックサイズは <entity> の最大値を超えています 1317 : shared を返す関数は使用できません 1320 : 構造体またはユニオン内で共有型は使用できません 1321 : パラメータを共有型にすることはできません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-61 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1323 : 共有変数は static または extern でなければなりません 1327 : アフィニティ式は、共有型であるか、共有型へのポインタでなければなりません 1328 : アフィニティは(共有型へのポインタではなく)共有型です 1329 : shared void* 型は、等についてのみ比較できます 1331 : 入力行内の null(ゼロ)文字は無視されます 1332 : 文字列または文字定数に null(ゼロ)文字が含まれています 1333 : ヘッダ名に null(ゼロ)文字が含まれています 1334 : for イニシャライザ内の宣言は、それを囲むスコープの宣言を非表示にします 1335 : 非表示にされる宣言は <entity> です 1336 : <entity> のプロトタイプ宣言は、この非プロトタイプ再宣言の後で無視されます 1338 : <entity> に外部 C リンケージを含める必要があります 1339 : 変数宣言は for イニシャライザの宣言を非表示にします 1340 : typedef <entity> は elaborated 型指定子では使用できません 1341 : ゼロ定数の呼び出しは無視されます 1342 : パラメータ <entity> は関数トライブロックの catch 節では再宣言できません 1343 : <entity> の最初の明示的な特殊化は、テンプレートを含むネームスペースで宣言 する必要があります 1345 : "template" の後には識別子が必要です 1347 : レイアウト修飾子は shared へのポインタを修飾できません 1348 : レイアウト修飾子は不完全な配列を修飾できません 1349 : <entity> の宣言はハンドラパラメータを非表示にします 1350 : 配列型への非標準キャストは無視されます 1351 : このプラグマは _Pragma 演算子では使用できません(#pragma ディレクティブを使 用する必要があります) 1352 : フィールドはベースクラスの末端パディングを使用します 1353 : GNU C++ コンパイラはビットフィールドパディングを使用できます 1354 : メモリマッピングがプリコンパイルヘッダファイル <entity> と競合しています 1355 : 抽象クラス <type> には仮想デストラクタが含まれているので、このクラスへのポインタ に delete を呼び出すと、動作は未定義になります 1356 : asm 名は非スタティックメンバ宣言では使用できません 1357 : <entity> のスタティックな初期化を行うと(<entity> のアドレスを使用)、リンク失敗 <option> が発生する場合があります エラー番号 1359 を参照して下さい。 1358 : extern const <entity> のスタティックな初期化(<entity> のアドレスを使用) は、ROPI に対して低くすることができません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-62 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1359 : <entity> のスタティックな初期化を行うと(<entity> のアドレスを使用)、リンク失敗 <option> が発生する場合があります 警告 1357 と 1359 は、 位置非依存(PI)ではなく、その後のリンク手順の失敗の原因と なるコード構造を強調します。 サンプル 1 --apcs /ropi で次のコードをコンパイルした場合、 char *str = "test"; /* グローバルポインタ */ 次のようなメッセージが表示されます。 警告:#1357-D:変数 "str" のスタティックな初期化を行うと(文字列リテラルのアドレスを使用)、リンク 失敗 --ropi が発生する場合があります グローバルポインタ str は ..constdata セクションの char 文字列 test のアドレスに 初期化する必要がありますが、PI システムでは絶対アドレスを使用できないためです。 サンプル 2 --apcs /rwpi で次のコードをコンパイルした場合、 int bar; int *foo = &bar; /* グローバルポインタ */ 次のようなメッセージが表示されます。 警告:#1359-D:変数 "foo" のスタティックな初期化を行うと(bar のアドレスを使用)、リンク失敗 -rwpi が発生する場合があります グローバルポインタ foo は .data セクションの bar のアドレスに初期化する必要があり ますが、PI システムでは絶対アドレスを使用できないためです。 以下の解決方法があります。 • • グローバルポインタを使用しないようにコードを変更します。例えば、代わりにグロー バル配列またはローカルポインタを使用できます。 次のように、初期化を実行時に行います。 int bar; int *foo; 次に、関数内で foo = &bar; と設定するコードを書きます。これは、静的にデータ を初期化する場合とは異なり、コードを生成するときにコンパイラが ROPI/RWPI の 制約を回避するためのスコープを持てるようにするためです。 リンカのエラー L6248E を参照してください。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-63 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1360 : extern const <entity> のスタティックな初期化(<entity> のアドレスを使用) は、RWPI に対して低くすることができません 例えば、--apcs /rwpi で次のコードをコンパイルした場合、 extern int y; int* const x = &y; int* foo() { return(x); } y に接頭文字 extern を付けると、変数 x と y の直接アドレスオフセットをコンパイラが 定義できなくなるため、警告が生成されます。 1361 : <entity> が "deprecated" と宣言されました 1362 : 認識されないフォーマット関数型 <entity> は無視されます 1363 : ベースクラス <entity> は、ベースクラス <entity> の末端パディングを使用しま す 1366 : この無名共用体/構造体フィールドは <entity> によって非表示にされます 1367 : 無効なエラー番号 1368 : 無効なエラータグ 1369 : エラー番号またはエラータグが期待されます 1370 : クラスのサイズは末端パディングの影響を受けます 1371 : ラベルは関数定義内でのみ参照できます 1372 : ステートメント式内に制御を転送することはできません 1374 : ステートメント式の外へ制御を転送することはできません 1375 : 非 POD クラス定義は、ステートメント式内では行うことができません 1376 : 破棄可能なエンティティは、ステートメント式内では使用できません 1377 : ダイナミックに初期化されたローカルスタティック変数は、ステートメント式内では使用で きません 1378 : 可変長配列はステートメント式内では使用できません 1379 : ステートメント式はデフォルト引数内では使用できません 1382 : 関数へのポインタとデータへのポインタ間における非標準の変換です 1383 : インタフェース型には仮想ベースクラスを含めることができません 1384 : インタフェース型は "private" または "protected" を指定できません 1385 : インタフェース型は他のインタフェース型からのみ派生できます 1386 : <type> はインタフェース型です 1387 : インタフェース型には typedef メンバを含めることができません 1388 : インタフェース型にはユーザが宣言したコンストラクタやデスタラクタを含めることができ ません 1389 : インタフェース型にはユーザが宣言したメンバ演算子を含めることができません 1390 : インタフェース型は関数内では宣言できません 1391 : インタフェーステンプレートを宣言できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-64 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1392 : インタフェース型にはデータメンバを含めることができません 1393 : インタフェース型には friend 宣言を含めることができません 1394 : インタフェース型にはネストされたクラスを含めることができません 1395 : インタフェース型をネストされたクラス型にすることはできません 1396 : インタフェース型にはメンバテンプレートを含めることができません 1397 : インタフェース型にはスタティックメンバ関数を含めることができません 1398 : このプラグマは _pragma 演算子では使用できません(#pragma ディレクティブを使 用する必要があります) 1399 : 修飾子は <type> のベースクラスでなければなりません 1400 : 宣言は、指定されたベースクラスの純仮想メンバ関数に対応している必要があります 1401 : <type> のサイズまたは複雑さが原因で、内部演算で整数のオーバフローが発生しま した 1402 : 内部演算で整数のオーバーフローが発生しました 1404 : int、long、またはポインタ型が 64 ビットである環境でコンパイルした場合、潜在的 に変換がナローイングされます 1405 : プラグマパックの現在値は <entity> です 1406 : プラグマパックの引数は無視されます 1407 : アライメント指定子の値が無効です 1408 : 整数リテラルが期待されます 1409 : 前の __declspec(align(...)) は無視されます 1410 : <entity> 属性パラメータの引数値が期待されます 1411 : <entity> 属性パラメータの引数値が無効です 1412 : <entity> 属性パラメータのブール値が期待されます 1413 : 位置引数を属性内の名前付き引数の後に置くことはできません 1414 : 属性 <filename> には、<filename> というパラメータがありません 1415 : <entity> 属性の引数リストが期待されます 1416 : , または "]" が期待されます 1417 : 属性引数 <entity> には既に値が与えられています 1418 : 値を <entity> 属性に割り当てることはできません 1419 : throw 式を不完全型へのポインタにすることはできません 1420 : alignment-of 演算子は不完全型に適用されます 1421 : <entity> はスタンドアロン属性としてのみ使用できます 1422 : <entity> 属性はここでは使用できません 1423 : 認識されない属性 <entity> 1424 : 属性はここでは使用できません 1425 : <entity> 属性パラメータの引数値が無効です 1426 : 属性引数が多すぎます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-65 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1427 : アクセスできないベースクラス <type> からは変換できません 1428 : オプション "export" では個別のテンプレート署名が必要です 1429 : 文字の種類が異なる文字列リテラルは連結できません 1430 : GNU レイアウトバグは、仮想ベース <entity> を <entity> オブジェクト境界の外 に配置するので、エミュレートされません 1431 : 仮想ベース <entity> は、<entity> オブジェクト境界の外に配置されます 1432 : ネームスペースメンバ宣言に非標準の修飾名があります 1433 : アライメントの縮小は無視されます 1434 : const 修飾子は無視されます 1436 : __breakpoint 引数は整数コンパイル時定数でなければなりません 1437 : __breakpoint 引数は、ARM を対象としたコンパイル時には 0 ~ 65535 の範囲 内になければなりません 1438 : __breakpoint 引数は、Thumb を対象としたコンパイル時には 0 ~ 255 の範囲 内になければなりません 1439 : BKPT 命令は、ターゲットアーキテクチャ/プロセッサではサポートされていません 1440 : オーバーサイズのビットフィールドレイアウトは変更されます -- "<entity>:0;" を 先頭に追加することを検討して下さい 1441 : 左辺値に対する非標準キャスト C の仕様では、「An assignment operator shall have a modifiable lvalue as its left operand」(代入演算子は左オペランドとして修正可能な左辺値を持つべきである)およ び「a cast does not yield an lvalue」(キャストは左辺値を生成しない)と記載されていま す。 1442 : エクスポートされた派生クラスでポリモーフィックベースクラスを使用するには、エクスポ ートする必要があります 1443 : 仮想派生クラスから継承されたポリモーフィックベースクラスはエクスポートする必要が あります 1444 : 仮想派生クラスから継承されたポリモーフィックベースクラスを使用する場合、全仮想関 数をエクスポートする必要があります 1446 : 非 POD クラス型が省略記号で渡されました 1447 : 非 POD クラス型は、va_arg によってフェッチすることはできません ISO C++ 標準では、可変個引数関数の必須でない引数は POD(plain-old-data)型でな ければならないと定義されています。例えば、構造体やクラスではなく、int や char 型 である必要があります。 エラーや警告が生成されないようにするには、代わりにクラスや構造体のアドレスを指定 します。 1448 : 固定小数点リテラルでは、接尾文字 'u' または 'U' の後に 'l' または 'L' を 続ける必要があります 1450 : 整数オペランドを使用すると、固定小数点のオーバーフローが発生する可能性があり ます 1451 : 固定小数点定数が範囲外です 1452 : 固定小数点値は正確に表現できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-66 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1453 : 定数が long long 型に対して大きすぎます。符号なしの long long 型が与えら れました(非標準) 1454 : レイアウト修飾子は shared void へのポインタを修飾できません 1456 : 強い using-directive はネームスペーススコープでのみ表示されます 1457 : <entity> は非テンプレート関数を宣言します。テンプレートインスタンスを参照する には <> を追加して下さい 1458 : この操作を実行すると、固定小数点のオーバーフローが発生する可能性があります 1459 : 式は、整数型、列挙型、または固定小数点型である必要があります 1460 : 式は、整数型または固定小数点型である必要があります 1461 : noreturn で宣言された関数に戻り値があります 1462 : 前の宣言と競合するため、asm 名が無視されました 1463 : クラスメンバ typedef は、再宣言されない可能性があります 1464 : テンポラリのアドレスを取得しています 1465 : 定義でないクラス宣言の属性は無視されました 1466 : 固定小数点値が暗黙に浮動小数点型に変換されました 1467 : 固定小数点型には分類がありません 1468 : テンプレートパラメータを固定小数点型にすることはできません 1469 : 16 進数の浮動小数点定数は使用できません 1471 : 浮動小数点値が必要な固定小数点型に収まりません 1472 : 値を固定小数点値に正確に変換できません 1473 : 固定小数点変換の結果、符号が変更されました 1474 : 整数値が必要な固定小数点型に収まりません 1475 : 固定小数点演算の結果が範囲外です 1481 : 固定小数点値が必要な浮動小数点型に収まりません 1482 : 固定小数点値が必要な整数型に収まりません 1483 : 値が必要な固定小数点型に収まりません 1485 : 名前付きレジスタの記憶クラスはここで使用できません 1486 : <entity> が、互換性のない名前付きレジスタの記憶クラスで再宣言されました 1487 : エイリアスの変数に対して名前付きレジスタの記憶クラスは指定できません 1488 : 名前付きレジスタの記憶域指定子は既に使用中です 1492 : 行 <entity> の定義済みマクロエントリが無効です:<reason> 1493 : マクロモード名 <entity> が無効です 1494 : 定義済みマクロ <entity> の再定義に互換性がありません 1495 : <entity> の再定義に、名前付きレジスタの記憶クラスがありません 1496 : 名前付きレジスタが変数の型に対して小さすぎます 1497 : 名前付きレジスタの記憶クラスでは配列を定義できません 1498 : 列挙型への const_cast は標準ではありません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-67 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1500 : __svc パラメータ <entity> が、Thumb SVC 命令の許可された範囲(0 ~ 0xff) 外です 1501 : __svc または __svc_indirect 関数の引数が多すぎます 1502 : __svc または __svc_indirect 関数の引数は整数型である必要があります 1503 : __svc_indirect 関数には引数が必要です 1504 : __svc_indirect 関数の第 1 引数は整数型である必要があります 1505 : __svc または __svc_indirect 関数の結果は整数レジスタで返す必要があります 1506 : ソースファイル <entity> のフォーマットが不正です 1507 : <entity> ファイルの書き込み中にエラーが発生しました:<reason> 1508 : 関数修飾子のみで識別される関数は多重定義できません 1509 : 関数修飾子 <entity> は仮想メンバ関数には使用できません 1510 : オーバーライドされた仮想関数 <entity> の関数 "__attribute__((__<entity>__))" は、オーバーライドする関数内でも必要です 1511 : 関数修飾子 <entity> は、オーバーライドされた仮想関数 <entity> 内で同一で はありません 1512 : オーバーライドされた仮想関数 <entity> の関数修飾子 <entity> は、オーバー ライドする関数内でも必要です 1514 : 境界が指定されていない配列では、空のイニシャライザは無効です 1515 : 関数は不完全なクラス型 <type> を返します 1516 : <entity> は既に初期化されています。クラス外のイニシャライザは無視されます 1517 : 宣言は <entity> を非表示にします 1519 : 固定/浮動小数点定数の接尾文字が無効です 1522 : <entity> には対応するメンバ演算子 delete<entity>(割り当てられたオブジェク トの初期化中に例外がスローされた場合に呼び出されます)がありません 1523 : スレッドローカル変数の宣言には "dllimport" または "dllexport" を使用でき ません 1525 : イニシャライザは、フレキシブル配列メンバの要素が自明でないデストラクタである場合 は指定できません 1526 : イニシャライザは、間接的なフレキシブル配列メンバに対して指定できません 1528 : 括弧で囲まれたイニシャライザの後の変数の属性は無視されます 1529 : このキャストの結果は左辺値として使用できません 1530 : 符号なしの固定小数点値の否定 1531 : この演算子をここで使用することはできません。括弧を使用してください 1532 : フレキシブル配列メンバのイニシャライザは定数である必要があります 1533 : レジスタ名はレジスタ変数に対してのみ使用できます 1534 : 名前付きレジスタ変数を void 型にすることはできません 1535 : この宣言では __declspec 修飾子は無効です 1536 : パラメータにリンクスコープの指定子は使用できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-68 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1537 : 複数のリンクスコープ指定子 1538 : リンクスコープ指定子は、外部リンケージがある関数と変数でのみ表示されます 1539 : 再宣言によってリンクスコープを弱めることはできません 1540 : リンクスコープの指定子はこの宣言には使用できません 1541 : グローバルスコープ宣言に非標準の修飾名があります 1542 : 64 ビットの整数型が、少ないビット数の整数型に暗黙に変換されます(移植時に問題 が発生する可能性があります) 1543 : 64 ビットの整数型が、少ないビット数の整数型に明示的に変換されます(移植時に問 題が発生する可能性があります) 1544 : ポインタが同じサイズの整数型に変換されます(移植時に問題が発生する可能性があ ります) 1547 : スレッドローカルストレージを使用できるのは static または extern 変数だけです 1548 : 複数のスレッドローカルストレージ指定子です 1549 : 仮想 <entity> は定義されませんでした(無名のネームスペースのメンバであるた め、別の場所でも定義できません) 1550 : ソース行内の文字/文字列リテラルやコメントの外部にキャリッジリターン文字があります 1551 : 式は固定小数点型である必要があります 1552 : 無効なアクセス指定子は無視されます 1553 : ポインタがブール型に変換されました 1554 : メンバへのポインタがブール型に変換されました 1555 : 記憶域指定子は無視されます 1556 : dllexport と dllimport は、クラステンプレートでは無視されます 1557 : ベースクラスの dllexport/dllimport 指定が、派生クラスの dllexport/ dllimport 指定と異なります 1558 : 再宣言では <entity> に dllexport/dllimport を追加できません このメッセージが抑制されている場合の動作は、dllexport または dllimport が省 略されたときと同様です。以下に例を示します。 void f(void); __declspec(dllimport) void f(void) { } /* suppress treats as void f(void) { } */ ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-69 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1559 : dllexport/dllimport が <entity> と矛盾しています。dllexport が指定され ていると見なします これは、コンパイラが dllimport および dllexport の両方としてマークされていること を示します。この場合、コンパイラはエンティティが dllexport であると仮定します。 次のサンプルでは、関数定義 foo() は宣言__declspec(dllimport) void foo() と競合しています。この状況では、コンパイラは dllexport が指定されたときと 同じ処理をします。 ---test.cpp--- __declspec(dllimport) void foo(); void foo() { } -----------armcc -c test.cpp "test.cpp", line 3:警告:#1559-D:dllexport/dllimport conflict with "foo" (declared at line 1); dllexport assumed fromelf –s test.o ...# Symbol Name Value Bind Sec Type Vis Size ==================================================================== 6 _Z3foov 0x00000000 Gb 1 Code Pr 0x4 ... 警告メッセージとシンボル可視性は、関数 foo() は dllexport であると仮定されて いることを示します。 1560 : dllimport エンティティを定義できません 1561 : dllexport/dllimport では外部リンケージが必要です 1562 : dllexport/dllimport で宣言されているクラスのメンバを、これらの指定子を付け て宣言することはできません 1563 : DLL インタフェースを持つクラス内で、DLL インタフェースを持たないクラス型のフィー ルドが使用されています 1564 : 括弧囲みのメンバ宣言は規格外です 1565 : 結合行内のバックスラッシュと改行間のホワイトスペースは無視されます 1566 : dllexport/dllimport が <entity> と矛盾しています。dllexport/ dllimport を削除します 1567 : 匿名メンバクラスのメンバが無効です -- クラス <type> に、許可されていないメン バ関数が含まれています 1568 : 規格外の reinterpret_cast 1569 : 位置を示すフォーマット指定子には、ゼロを指定できません 1570 : ローカルクラスでは、関数内部の可変長配列を参照することはできません 1571 : メンバ <entity> には、既に明示的な dllexport/dllimport 指定子が指定され ています 1572 : 関数の戻り値は、可変長配列型にはできません 1573 : 型 <type> のメンバへのポインタは、可変長配列型にはできません 1574 : ステートメント式の結果は、可変長配列を含む型にはできません 1575 : インラインアセンブラでは、変換を伴うロード/ストアは使用できません。組み込みアセン ブラまたはアウトオブラインアセンブラを使用してください。 1576 : インラインアセンブラでは、フラグ設定乗算命令は使用できません。組み込みアセンブ ラまたはアウトオブラインアセンブラを使用してください。 1577 : インラインアセンブラでは、定数オペランドを含むフラグ設定 MOV/MVN 命令は使用で きません。組み込みアセンブラまたはアウトオブラインアセンブラを使用してください。 1578 : asm 名は自動変数では無視されます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-70 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1593 : 最適化できません:符号なしインデックスが使用されているために最適化できません 1594 : 最適化できません:完全な最適化を行うためには、ループのパラメータを整数型にする 必要があります 1604 : 最適化できません:この関数を参照しているため、最適化できません 1613 : 最適化できません:多重ストアの競合 1617 : 最適化できません:ループが複雑すぎます 1621 : 最適化:デッドコードを削除しました 1624 : 最適化できません:重複する条件が多すぎるため、効率的に変換できません 1629 : 最適化できません:繰り返し回数が少なすぎて配列を最適化できません 1636 : 最適化できません:変数の使用方法が複雑すぎます 1637 : 不明なプラグマ - 無視します 1638 : スカラテンポラリの最終値を判断できません 1639 : 可能であれば、nolstval ディレクティブを使用してください 1641 : 最適化できません:データの依存関係が多すぎます 1656 : プラグマの構文に問題があります 1661 : 最適化できません:逆方向の転送は最適化できません 1662 : 最適化できません:促進するスカラの最終値が必要です 1663 : 最適化できません:ループ外への分岐があるため、変換できません 1670 : 最適化:if ループが for ループに変換されました 1676 : 最適化できません:このステートメントが原因で、ループを最適化できません 1679 : 最適化:ループがベクタ化されました 1687 : 最適化できません:縮小関数が抑制されました - 結合変換が必要です 1690 : 最適化できません:明示的なベクタ演算に対するサポートされないデータ型 1691 : 最適化:ループが前のループと結合されました 1714 : 最適化できません:外側のループで、内側のループの終了条件を指定しています 1730 : このループではインデックスは使用されていません 1742 : 最適化できません:配列要素のフィードバック(等価比較された配列) 1750 : 最適化:ループが再度ロールされました 1759 : 最適化できません:非ユニットストライドが原因で、ベクタ最適化できません 1771 : 最適化できません:volatile 項目が使用されているため、最適化できません 1801 : 最適化:関数が展開されました 1824 : 最適化できません:変換に見合うだけのベクタ演算がありません 1885 : 最適化できません:ループ範囲が配列の次元を超えています 1861 : 最適化できません:配列に対してこの格納処理を行っているため、外部のループを最 適化できません 1866 : 最適化できません:非整数の添字があります 1894 : 最適化:依存関係をなくすために、ループから繰り返しを取り除きました ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-71 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 1896 : 最適化:論理節を単純化しました 1947 : 最適化できません:このデータ型と演算の組み合わせを変換できません 1978 : 最適化できません:ユーザ選択ループを最適化できません 1979 : 最適化できません:この演算が原因で、ループを変換できません 1987 : 最適化:ループが切り替えられました 1988 : 最適化:代替コードが生成されます 1997 : 最適化:定数長のループがアンロールされました 2091 : 最適化:ループがアンロールされました 2168 : 最適化:外側のループを内側のループの中に移動しました 2170 : 最適化:不変式を外側のループの外に移動しました 2189 : 最適化:ループをアンロールおよびロテートしました 2190 : 最適化:ループをアンロールおよび最適化しました 2191 : 最適化:負荷の一部をループの先頭に移動しました 2218 : イディオムが検出され、最適化されました 2300 : 最適化できない可能性:あるループパスから別のループパスへのスカラ値のフィードバ ック。行 <entity> で競合。ループインデックスは <entity>(<filename>、<entity>) 2301 : 最適化できない可能性:あるループパスから別のループパスへのスカラ値のフィードバ ック。行 <entity> で競合。ループインデックスは <entity>(<filename>) 2302 : 最適化できない可能性:あるループパスから別のループパスへのスカラ値のフィードバ ック。行 <entity> で競合。(<entity>,<filename>) 2303 : 最適化できない可能性:あるループパスから別のループパスへのスカラ値のフィードバ ック。行 <entity> で競合。(<entity>) 2304 : 最適化できない可能性:ループの繰り返し間で多重ストアの競合の可能性があります。 行 <entity> で競合。ループインデックスは <entity>(<filename>、<entity>) 2305 : 最適化できない可能性:ループの繰り返し間で多重ストアの競合の可能性があります。 行 <entity> で競合。ループインデックスは <entity>(<filename>) 2306 : 最適化できない可能性:ループの繰り返し間で多重ストアの競合の可能性があります。 行 <entity> で競合。(<entity>,<filename>) 2307 : 最適化できない可能性:ループの繰り返し間で多重ストアの競合の可能性があります。 行 <entity> で競合。(<entity>) 2308 : 最適化できない可能性:ループの繰り返し間でフィードバックの競合の可能性がありま す。行 <entity> で競合。ループインデックスは <entity>(<filename>、<entity>) 2309 : 最適化できない可能性:ループの繰り返し間でフィードバックの競合の可能性がありま す。行 <entity> で競合。ループインデックスは <entity>(<filename>) 2310 : 最適化できない可能性:ループの繰り返し間でフィードバックの競合の可能性がありま す。行 <entity> で競合。(<entity>,<filename>) 2311 : 最適化できない可能性:ループの繰り返し間でフィードバックの競合の可能性がありま す。行 <entity> で競合。(<entity>) ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-72 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 2312 : 最適化できません:ポインタエイリアスの可能性 - 可能であれば制限修飾子を使用し てください。行 <entity> で競合。ループインデックスは <entity>(<filename>、 <entity>) 2313 : 最適化できません:ポインタエイリアスの可能性 - 可能であれば制限修飾子を使用し てください。行 <entity> で競合。ループインデックスは <entity>(<filename>) 2314 : 最適化できません:ポインタエイリアスの可能性 - 可能であれば制限修飾子を使用し てください。行 <entity> で競合。(<entity>,<filename>) 2315 : 最適化できません:ポインタエイリアスの可能性 - 可能であれば制限修飾子を使用し てください。行 <entity> で競合。(<entity>) 2351 : ループのネストが次のネストと結合されました 2438 : インラインできません:式内で void 関数が使用されています 2439 : インラインできません:識別子の宣言です 2442 : インラインできません:式から関数を削除できません 2516 : 高レベルの最適化が停止しました:ルーチン内にアセンブリコードがあります 2519 : このループの定数の繰り返し回数を特定できません 2524 : 対応する #pragma push がない #pragma pop #pragma push と #pragma pop は、現在のプラグマ状態を保存および復元します。 それぞれのポップはプッシュとペアになる必要があるで、エラーは次のコードに対して発 生します。 #pragma push ; #pragma pop ; #pragma pop 2525 : 対応する #pragma pop がない #pragma push #pragma push と #pragma pop は、現在のプラグマ状態を保存および復元します。 各ポップはプッシュとペアになっている必要があります。 2529 : 式は、<entity> ~ <entity> の範囲の整数定数である必要があります ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-73 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 2530 : 構造体 '<entity>' の末尾にパディングが追加されました コンパイラは、struct の末尾または複数の struct の間に追加されたパディングについて 警告を生成することもできます。この警告はデフォルトではオフになっています。この警 告は、--diag_warning 2530 または --remarks を使用して有効にできます。 以下に例を示します。 typedef struct { int x; char y; } A; typedef struct { int p; int q; } B; 次のようなメッセージが表示されます。 Warning: #2530-D: padding added to end of struct 'anonymous' コンパイラは、struct 内に挿入されたパディングについて警告を生成することもできま す。1301 を参照して下さい。 2531 : 無名のネームスペースのメンバに、dllimport/dllexport が適用されました 2533 : <entity> 属性は、外部リンケージがある関数と変数でのみ表示されます 2534 : strict モードは、グローバルネームスペースのエイリアスとしてネームスペースを扱う 方法とは互換性がありません 2535 : マクロ拡張 "<entity>" <entity> で、 2537 : マクロ拡張 "<entity>" <entity><entity> で 2540 : 無効なシンボリックオペランド名 <entity> 2541 : シンボリック一致制約は最初の 10 オペランドのいずれかを参照する必要があります 2544 : スレッドローカル変数は動的に初期化できません 2546 : 一部の列挙値を列挙型のベースとなる整数型で表現できません 2547 : デフォルト引数は friend クラスのテンプレート宣言では使用できません 2548 : 複数の文字の文字リテラル(移植時に問題が発生する可能性があります) 2549 : クラス、構造体、または共用体型が期待されます 2550 : offsetof の 2 番目のオペランドはフィールドでなければなりません 2551 : offsetof の 2 番目のオペランドにビットフィールドは使用できません 2552 : offsetof は仮想ベースのメンバに適用できません 2553 : 非 POD 型への offsetof の適用は標準ではありません 2554 : メンバ関数の friend 宣言では、デフォルト引数は使用できません 2555 : 定義ではない friend 宣言では、デフォルト引数は使用できません 2556 : デフォルト引数を持つ friend として以前に宣言されている <entity> の再宣言は できません 2557 : <type> の無効な修飾子(ここで派生クラスは使用できません) 2558 : クラス <type> の定義の無効な修飾子 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-74 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 2560 : ワイド文字列リテラルは使用できません 2565 : <entity> のテンプレート引数リストはパラメータリストと一致していなければなりません 2566 : 不完全なクラス型は使用できません 2567 : 複素整数型はサポートされていません 2570 : <entity> が "deprecated (<entity>)" と宣言されました 2571 : <entity> の無効な再定義 2574 : <entity> の明示的な特殊化は、初めて使用(<entity>)する前に実行する必要が あります 2575 : sealed クラスはベースクラスとして使用できません 2576 : クラス修飾子が重複しています 2577 : メンバ関数に "abstract" と "sealed" の両方の修飾子を指定することはできま せん 2578 : sealed メンバは純粋仮想にできません 2579 : 非仮想関数は、"abstract" または "sealed" を指定して宣言できません 2580 : override 修飾子を使用して宣言したメンバ関数は、ベースクラスのメンバをオーバ ーライドできません 2581 : sealed の <entity> をオーバーライドできません 2582 : <entity> がクラス修飾子 "abstract" を指定して宣言されました 2662 : 認識されない呼び出し規則 <entity>。次のいずれかを使用する必要があります: 2665 : 属性 <entity> はパラメータ宣言では使用できません 2666 : 列挙型のベースとなる型はブール以外の整数型である必要があります 2667 : 一部の列挙定数を <type> で表現できません 2668 : <entity> は現在のモードでは使用できません 2676 : #pragma start_map_region は現在有効です。プラグマは無視されます 2677 : <entity> はデストラクタの名前に使用できません(型の名前が必要です) 2678 : 非標準の空のワイド文字リテラルが L'\\0' として処理されました 2679 : ここに "typename" を指定することはできません 2680 : non-placement 演算子 delete は、仮想デストラクタを持つクラスで可視である必 要があります 2681 : 名前のリンケージが <entity> の前の宣言と競合しています 2682 : エイリアスがエイリアスエンティティのサイクルを作成しています 2683 : 添字は定数でなければなりません 2684 : 特定のレジスタに割り当てられたスタティックな保存期間を持つ変数は、イニシャライザ を使用して宣言できません 2685 : 特定のレジスタに割り当てられる変数は POD 型にできません 2686 : <entity> の定義済みの意味は破棄されました 2687 : 宣言によって組み込みの <entity> が隠蔽されます 2688 : 宣言によって組み込みの <entity> が再定義されます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-75 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 2689 : ここではスタティックメンバ関数を使用できません 2690 : <entity> 属性は、内部リンケージがある関数と変数でのみ表示されます 2813 : IF 文の依存した文が空です この注釈は、if 文に依存する文が含まれず、else 文が後に続かないことを示します。 以下に例を示します。 if (x <= 0); // remark 2813 is generated here { foo(x); } この注釈は、--diag_warning 2813 または --remarks を使用して有効にできま す。--remarks オプションを使用する場合、--diag_suppress 2813 を使用してこの 注釈を非表示にできます。 2815 : while 文内の依存した文が空です この注釈は、while 文に依存する文が含まれないことを示します。以下に例を示しま す。 while (x != 0); この注釈は、--diag_warning 2815 または --remarks を使用して有効にできま す。--remarks オプションを使用する場合、--diag_suppress 2815 を使用してこの 注釈を非表示にできます。 2902 : 認識されない Unicode ソースの種類です (UTF-8、UTF-16、UTF-16LE、 UTF-16BE のいずれかである必要があります) 2903 : 16 進数値 <entity> を含む Unicode 文字が出力の前処理において表示されま せん 2917 : <entity> のファイル <entity> を開けません: 2918 : <entity> のファイル <entity> を開けません: <entity> 2934 : 変換によって "__restrict" 修飾子が削除されます 2935 : <entity> に対して、マップされたメモリを取得できません:<entity> 2936 : フレキシブル配列メンバを含む要素の配列は標準ではありません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-76 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 2938 : <entity> の初期化は <entity> の初期化の前に行われます C ++標準では、メンバ変数は、イニシャライザリストで書かれている順序ではなく、クラス で宣言されている順序で初期化されす。コンパイラは、イニシャライザリストの初期化の 順序とクラスの宣言の順序が一致しないときに、この警告を生成します。この警告は、-diag_warning 2938 または --remarks を使用して有効にできます。 以下に例を示します。 class Foo { int x; char y; public: Foo() : y(42), x(32) {} }; 次のようなメッセージが表示されます。 Warning: #2938-D: the initialization of member "Foo::x" will be done before that of member "Foo::y" 2939 : 継承の種類は C では使用できません 2940 : 継承の種類は、列挙指定子では無視されます 2941 : 修飾子は、列挙指定子では使用できません 2942 : 修飾子は、列挙指定子では無視されます 2943 : 識別子文字を Unicode で表現できません 2944 : ヘッダ名に、Unicode で表現できない文字が含まれています 2945 : <entity> は有効なロケール名ではありません 2946 : テンプレートパラメータでの void 型パラメータリストの宣言は非標準です 2949 : <entity> は変数ではありません 2960 : 無効なテンプレートディレクトリ: 2969 : 空白が後に続く "\" は行のスプライスではありません 2970 : この dynamic_cast は実行時の型情報がないと実行できませんが、この情報は無効 になっています コンパイラは、dynamic_cast がランタイム型チェックを実行する必要があるが -no_rtti オプションを使用してコンパイルすることで RTTI へのサポートが無効になっ ているときに、エラーを生成します。例えば、次のコードはこのエラーを発生します。 class Foo { virtual int foo() = 0; }; class Bar {}; Bar *convert(Foo *x) { return dynamic_cast<Bar *>(x); } 2971 : <entity> への変換があいまいであり、直接の基本が選択されています 2972 : 内部バッファが大きくなりすぎます 2973 : C++ 例外ハンドラが使用されましたが、例外処理のセマンティクスが指定されていませ ん 2974 : 型修飾子がコンストラクタで無視されました ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-77 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 2981 : 明示的なテンプレート引数が無視されました 2983 : <entity> はクラス型ではありません 2984 : pointer-to-array 型に適用された "delete" は delete[] として扱われまし た コンパイラは、プログラマが間違った種類の delete 演算子を使用しましたが、コンパイラ が自動的にそれを修正したときに、この警告を生成します。例えば、次のコードはこの警 告を発生します。 void f(char (*data)[10]) { delete data; } 2985 : pointer-to-array 型に適用された "delete" は非標準であるため delete[] として扱われました この警告は 2984 と同じ意味です。コンパイラは、コマンドラインで --strict をコンパイ ラするときに 2984 の代わりにこの警告を生成します。 2989 : 型修飾子は無視されます (潜在型は参照です) 2990 : <entity> はローカル型を使用して宣言されていますが、この変換単位で定義する必 要があります 2991 : <entity> はリンケージのない型を使用して宣言されていますが、この変換単位で定 義する必要があります 2997 : __builtin_va_arg_pack/__builtin_va_arg_pack_len は省略記号パラメータ を持つインライン関数でのみ使用できます 2999 : C++ キーワードが必要です 3001 : オフセットが定数ではありません 3002 : 認識されない #pragma コメント型 <entity> です 3006 : #pragma コメントの文字列が無効です 3011 : <entity> のデフォルト引数は別の変換単位内の宣言と互換性がありません 3012 : <entity> のコンパイル中、<entity> のデフォルト引数が異なっていました 3014 : <entity> のイニシャライザが別の変換単位で異なります 3015 : <entity> のコンパイル中、<entity> のイニシャライザが異なっていました 3016 : テンプレート依存型への指定子は使用できません 3017 : 認識されない準拠の種類です 3018 : "on" または "off" が必要です 3019 : #pragma conform(forScope) のスタックが空です 3020 : 以前の #pragma conform(forScope) エントリが <entity> と一致しません 3021 : forScope の動作は非標準です 3022 : forScope の動作は標準です 3024 : 型修飾子はここでは無効です 3028 : 関数呼び出しには 1 つの引数が必要です 3029 : 関数呼び出しには実数の浮動小数点引数が必要です 3033 : "main" の最初のパラメータの <entity> が非標準です("int" が必要) ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-78 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 3034 : "main" のパラメータの個数が非標準です (0 または 2 個のパラメータが必要) 3035 : "main" の 2 番目のパラメータの <entity> が非標準です("char *[]" または "char ** が必要) 3039 : "packed" 属性は非 POD <entity> のクラスで無視されました 3040 : ファイル <entity> の削除中にエラーが発生しました:<entity> 3049 : SWP 命令はアーキテクチャ ARMv6 以上では廃止されます 3050 : FLDMX/FSTMX 命令は廃止される予定です 3051 : 命令は現在の命令セットでは予測不能です 3052 : MSB < LSB を使用する命令は予測不可能です 3053 : 指定されたイミディエート値を使用する命令は予測不可能です 3054 : 指定された条件を使用する命令は予測不可能です 3055 : 命令は IT ブロック内で予測不可能です 3056 : 指定された特殊レジスタを持つ命令は予測不可能です 3057 : 指定された PSR マスクを使用する命令は予測不可能です 3058 : イミディエートは範囲 <entity> にありません 3059 : イミディエートは <entity> の倍数ではありません 3060 : 選択したターゲットには VFP がありません 3061 : 認識されない命令オペコードです 3062 : "<entity>" が期待されます 3063 : "<entity>" のフラグ文字が期待されます 3064 : MSR/MRS の特殊レジスタが期待されます 3065 : 特殊レジスタ名は廃止されます 3066 : 特殊レジスタフィールド指定子は廃止されます(代わりに "<entity>" を使用して下 さい) 3067 : MRS ではフィールドを選択できません。直接 APSR、CPSR、または SPSR を使用して ください 3068 : 条件コードが期待されます 3069 : これらのデータ型間での VCVT 変換は使用できません 3070 : デスティネーションオペランド型またはレジスタソートが正しくありません 3071 : ソースオペランド型またはレジスタソートが正しくありません 3072 : データ型指定子はこの命令の有効なエンコーディングと一致していません 3073 : データ型指定子がありません 3074 : スカラオペランドが期待されます 3075 : デスティネーションオペランドにはデータ型指定子 "<entity>" が必要です 3076 : ソースオペランドにはデータ型指定子 "<entity>" が必要です 3077 : ライトバックは機能しません 3078 : この命令ではデータ型指定子を使用できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-79 1 C および C++ コンパイラのエラーおよび警告 1.2 armcc のエラーおよび警告メッセージのリスト 3079 : 命令の幅データ修飾子またはデータ型指定子が無効です 3080 : 特殊レジスタはサポートされていません 3081 : 行末記号または ";" が必要です ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-80 1 C および C++ コンパイラのエラーおよび警告 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト armcc で依然として生成される可能性のある旧式のエラーおよび警告メッセージのリスト。 注 C4002W : 不正な非境界整列ロードまたはストアアクセスです - 代わりに __packed を使用 してください C4008W : LDM/STM を分割しても効果はありません スイッチ "--split_ldm" の使用が不適切です。このオプションは、キャッシュ付きシス テムや書き込みバッファ付きプロセッサには大きなメリットはありません。 C4009E : サポートされていない CPU <entity> C4016W : 不明なオプション '-<entity><entity>':無視されます C4017W : <entity> は設定前に使用できます コンパイラは、最適化レベルでのデータフロー分析を実行します。 -O1 以上。この情報 を使用して、設定されていない変数の使用など、コード内の潜在的な問題点を識別でき ます。ただし、これは最適化の副産物のようなものであり、独立した機能ではありませ ん。設定される前の変数の使用を検出するデータフロー分析は、ハードウェアのレジス タの使用のみを解析します。つまり、プロセッサレジスタで保持される変数のみが対象に なります。スタックに割り当てられる(プロセッサレジスタではなくメモリに格納される)変数 または構造体は、解析されません。 コンパイラによって生成されるコード(およびレジスタメモリの使用方法)は最適化のレベ ルによって異なるので、どのレベルでコンパイルされたコードであるかに応じて、警告が 表示される場合とされない場合があります。例えば、-O2 の場合は表示され、-O1 の場 合は表示されません。 注 データフロー分析は、完全な機能を目的としているわけではありません。コンパイラによ って生成される C4017W の警告は、単なるガイドとして扱い、問題のあるコードを特定す るための確実な情報とは考えないようにして下さい。Lint などの専用ツールほど多くの 情報をコンパイラが提供することはありません。 C4018W : ゼロによる除算:<entity> 定数伝播によって、除算または剰余演算子の第 2 オペランドが 0 であることが示されて います。実行がこの式に到達すると、エラーになります。コンパイラは、定数 0 による除 算の結果として 0 を返します。 C4038E : 関数が大きすぎるか複雑すぎてコンパイルできません(0x<num>) C4041U : '<entity>' 書き込み中の I/O エラー:<entity> C4047U : エラーが多すぎます C4048U : -g をコンパイル中にストア不足が発生しました。割り当てサイズは <entity> でし たが、システムのサイズは <entity> です ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-81 1 C および C++ コンパイラのエラーおよび警告 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト C4049U : ストア不足です。割り当てサイズは <entity> でしたが、システムのサイズは <entity> です コンパイラによるストレージ割り当て要求が失敗しました。-g オプションによって要求さ れるデバッグテーブルのコンパイルには、大量のメモリが必要になります。-g を指定せ ずに再コンパイルするか、プログラムをいくつかに分割して再コンパイルすると、問題を 解決できる場合があります。 C4050U : コンパイルがアボートされました。 C4051E : ファイル '<entity> に書き込めませんでした:<entity> C4052E : ファイル '<entity>' を読み出せませんでした:<entity> C4056E : 不正なオプション '<s>' C4057E : 不正なオプション '<s1> <s2>' C4065E : 入力ファイル '<entity>' のタイプが不明です C4066E : このオブジェクトに必要なコードスペースは、このバージョンのコンパイラには大きす ぎます ソースファイルをいくつかに分割して下さい。 C4075E : 出力用の <entity> を開くことができません C4078E : 他のファイルと結合された stdin('-') C4079E : <entity> コマンドは機能しません C4301W : 設定ファイルは、新しいバージョンのコンパイラのファイルである可能性があります 設定ファイルが、コンパイラに --arm_linux_config_file スイッチを使って渡された XML ファイルのうちの 1 つです(--arm_linux_paths または GCC コマンドライン変 換を使用している場合)。以下に例を示します。 armcc --arm_linux_paths --arm_linux_config_file=arm_linux_config.xml この警告は、ファイルが新しいコンパイラ用のものであり、サポートされていない機能が 含まれている場合があることを意味しています。非互換性の問題を回避するには、設定 ファイルを生成した新しいバージョンのコンパイラを使用するか、以前のバージョンのコ ンパイラを使って設定ファイルを再生成して下さい。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --arm_linux_config_file=path --arm_linux_paths C4302E : コンフィギュレーションファイルのバージョン文字列が無効です このメッセージは、ARM Linux コンフィギュレーションファイルに対する読み出しまたは 書き込みエラーを意味しています。 以下の手順に従います。 1. ファイルの読み出しおよび書き込みが可能であることと、有効なパーミッションがある ことを確認します。 2. --arm_linux_configure を使って設定ファイルを再生成してみます。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --arm_linux_configure。 C4303E : コンフィギュレーションファイルが指定されませんでした エラー C4302E の説明を参照して下さい。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-82 1 C および C++ コンパイラのエラーおよび警告 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト C4304E : 設定ファイル <file> の読み出し中に I/O エラーが発生しました エラー C4302E の説明を参照して下さい。 C4305E : 設定ファイル <file> の書き込み中に I/O エラーが発生しました エラー C4302E の説明を参照して下さい。 C4306E : 設定ファイル <file> を解析できませんでした エラー C4302E の説明を参照して下さい。 C4307E : 設定ファイルを読み出せません エラー C4302E の説明を参照して下さい。 C4308W : システムインクルードディレクトリが見つかりません ARM Linux モード、--arm_linux、--arm_linux_paths、または GCC コマンドライ ン変換を使用している場合は、ARMCC5INC 環境変数を install_directory \include に設定します。これにより、コンパイラが arm_linux ヘッダサブディレクトリ を見つけられるようにします。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --arm_linux。 --arm_linux_paths。 『スタート ガイド』の以下のセクションを参照して下さい。 ツールチェーンの環境変数。 C4309E : 自動コンフィギュレーションに失敗しました - GCC が見つかりません このエラーは、 --arm_linux_configure を使ってツールが自動的に設定されるよう にしたものの、GCC が見つからなかった場合に生成されます。 -configure_gcc=path_to_gcc コマンドラインオプションを使って、GCC 実行可能フ ァイル (arm-none-linux-gnueabi-gcc など)へのパスを指定して下さい。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --arm_linux_configure。 --configure_gcc=path。 C4310W : 自動コンフィギュレーションは未完了です - GCC から sysroot パスを特定でき ません ARM Linux コンフィギュレーション処理に使用された GCC が有効な sysroot パスを 提供しませんでした。--configure_sysroot=sysroot_path を使ってパスを設定し て下さい。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --configure_sysroot=path。 C4311E : 自動コンフィギュレーションに失敗しました - GLD が見つかりません このエラーは、 --arm_linux_configure を使ってツールを自動的に設定しようとした が、GNU リンカ(ld)が見つからない場合に生成されます。-configure_gkd=path_to_gcc コマンドラインオプションを使って、GNU ld 実行可能 ファイル (arm-none-linux-gnueabi-ld など)へのパスを指定して下さい。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --arm_linux_configure。 --configure_gcc=path。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-83 1 C および C++ コンパイラのエラーおよび警告 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト C4312E : 自動コンフィギュレーションに失敗しました - GCC を実行できませんでした このエラーは、--arm_linux_configure を指定して ARM Linux の自動コンフィギュ レーションを使用した場合に、各ツール(GCC または GNU ld)が実行できなかったか、 起動に失敗したことを示しています。各ツールに実行パーミッションがあることと、GNU ツールチェーンインストールが正常に機能していることを確認して下さい。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --arm_linux_configure C4313E : 自動コンフィギュレーションに失敗しました - GLD を実行できませんでした エラー C4312E の説明を参照して下さい。 C4314W : gcc コマンドライン変換 - 変換を伴わないオプションは無視されます:<option> C4315W : gcc コマンドライン変換 - このコマンドの変換は完全にはサポートされていませ ん:<option> C4316W : arm linux ではオプションはサポートされていません:<option> C4317W : 変換された cpu またはアーキテクチャオプション <option> が無効です C4318W : ファイル <file> を読み取れません C4319W : ファイル <file> の種類を認識できません - ファイルは無視されます C4320W : ファイル <file> が見つかりません - ファイルは無視されます C4321E : 自動コンフィギュレーションに失敗しました - GCC からコンフィギュレーションを特 定できませんでした --arm_linux_configure を使って ARM Linux を自動的に設定する際に、コンパイ ラがコンフィギュレーションの生成に必要な情報を GCC から特定できませんでした。-configure_sysroot で sysroot パス、--configure_cpp_headers で GNU C++ ヘッダファイルへのパスを設定することによって、手動で設定してみて下さい。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --arm_linux_configure。 --configure_cpp_headers=path。 --configure_sysroot=path。 C4322W : GCC からライブラリコンフィギュレーションを正確に特定できませんでした - コンフィ ギュレーションが不完全である可能性があります C4323E : 自動コンフィギュレーションに失敗しました - GCC 内部仕様コンフィギュレーション レポートエラー:<text> C4324W : libstdc++ ヘッダファイルのパスを特定できませんでした - C++ コードが正しく コンパイルされるように、パスを手動で指定してください libstdc++ ヘッダファイルへのパスが GCC から特定できませんでした。このパスを -configure_cpp_headers=path で指定して下さい。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --configure_cpp_headers=path。 C4327W : アプリケーションのエントリポイントの関数を特定できません - デフォルトで <value> を使用しています C4328W : GNU リンカからライブラリのパスを特定できません - デフォルト設定の使用を試み ています ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-84 1 C および C++ コンパイラのエラーおよび警告 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト C4329W : オプションに引数がありません:<option> C4330E : GCC のコンフィギュレーションが無効です C4331W : スクリプトファイル <file> はスキャッタファイルとして処理されます C4332E : via ファイル <file> の読み出し中に I/O エラーが発生しました C4333E : via ファイル <file> を閉じる際に I/O エラーが発生しました C4334W : コンフィギュレーションファイルの GCC バージョンが無効です - デフォルトを使用 します C4335E : コンフィギュレーションファイルに GNU 実行可能ファイルへのパスが記載されてい ないので、再試行できません GCC フォールバックで指定された ARM Linux コンフィギュレーションファイルに gcc へ の適切なパスがない場合に表示されます。 コンパイラのドキュメントの以下のセクションを参照して下さい。 アプリケーションをビルドする場合の GCC フォールバックの使用。 -Warmcc,--gcc_fallback。 C4336W : コンパイルに失敗しました - GNU ツールで再試行します armcc のコンパイルに失敗し、GCC フォールバックが指定された場合に表示されます。 その場合、armcc は、gcc を実行してコンパイルを完了します。 コンパイラのドキュメントの以下のセクションを参照して下さい。 アプリケーションをビルドする場合の GCC フォールバックの使用。 -Warmcc,--gcc_fallback。 C4337E : GNU ツールでのコンパイルにも失敗しました gcc が GCC フォールバック中に失敗した場合に表示されます。 コンパイラのドキュメントの以下のセクションを参照して下さい。 アプリケーションをビルドする場合の GCC フォールバックの使用。 -Warmcc,--gcc_fallback。 C4338W : GNU ツールでのコンパイルに成功しました GCC フォールバックに成功したときに表示されます。 コンパイラのドキュメントの以下のセクションを参照して下さい。 アプリケーションをビルドする場合の GCC フォールバックの使用。 -Warmcc,--gcc_fallback。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-85 1 C および C++ コンパイラのエラーおよび警告 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト C4339W : あいまいな変換モードオプションが指定されました - <option> を使用します 特定の変換モードを選択する場合は、複数の変換モード オプションを指定しないで下 さい。変換モード オプションは次のとおりです。 • • • --translate_gcc --translate_g++ --translate_gld コンパイラのドキュメントの以下のセクションを参照して下さい。 --translate_g++。 --translate_gcc。 --translate_gld。 C4340W : ベクトル化(-O3 で示唆)のライセンスを取得できませんでした - デフォルトで fno-tree-vectorize になります GCC コマンドライン変換では、-O3 を使用するとベクトル化を指定したことになります。た だし、ARM コンパイラ 4.1 以前では、コンパイラの NEON ベクトル化機能を使用するた めに別個のライセンスが必要になります。NEON ベクトル化ライセンスが利用できない場 合、コンパイラはこの警告を生成し、ベクトル化を無効にします。ARM コンパイラ 5.0 以 降では、個別の NEON ベクトル化ライセンスは必要ないため、この警告は生成されませ ん。 『スタート ガイド』の以下のセクションを参照して下さい。 ARM コンパイラのライセンスされた機能。 コンパイラのドキュメントの以下のセクションを参照して下さい。 -Onum。 C4403E : __alloca_state は定義されていません C4419W : ダイナミックなスタックアライメントのベニアが <entity> に挿入されました この警告は、__irq 関数を --cpu=Cortex-M3-rev0 でコンパイルして、割り込みの開 始時にスタックを 8 バイト境界で整列させた場合に生成されます。 C4421W : 文字列リテラルへの書き込み リテラル文字列を指すように割り当てられたポインタによる書き込みがあります。ANSI 標 準では、この動作は定義されていません。書き込まれた場所からのその後の読み出しに は、書き込みが反映されていない可能性があります。 C4435E : <entity> の参照は使用できません C4447E : オプション '-E' と入力ファイル '<filename>' のタイプが矛盾しています C4484E : 最上位レベルの配列引数の最小値は 1、2、4、または 8 にする必要があります C4486W : オプション '-<optionchar>' を指定すると、入力ファイル '<filename>' は 無視されます C4487E : 変数 '<var>' からの読み出しで、オフセットが範囲外です 以下に例を示します。 void foo(void) { unsigned int pntr; pntr = (unsigned int)&pntr; pntr -= 4; pntr = *(unsigned int*)pntr; } ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-86 1 C および C++ コンパイラのエラーおよび警告 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト C4488E : 変数 '<var>' への書き込みで、オフセットが範囲外です C4489E : __vfp_status() 組み込み関数は、VFP を備えていないターゲットでは使用でき ません C4490W : ファイル拡張子により命令セットを切り替える機能は、今後使用できなくなります C4493E : 関数のアライメントは、1 より大きく、2 の累乗である必要があります C4494E : 無効なグローバルレジスタ番号 <num> です。1 ~ <num> を使用できます。 C4497E : 保持制約の構文が無効です:<text> C4498E : オプションが arm linux のターゲット設定オプションと競合しています:<option> ARM Linux をターゲットにしている場合は、いくつかのオプションを使用する必要があり ます(例えば、正しい ABI バリアントオプションの選択など)。このメッセージは、互換性 のないオプションが指定されたことを示すために生成されます。 コンパイラのドキュメントの以下のセクションを参照して下さい。 --arm_linux ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 1-87 第2章 アセンブラのエラーおよび警告 アセンブラ (armasm)のエラーおよび警告メッセージについて説明します。 このドキュメントは、次で構成されています。 • ARM DUI0496JJ 2.1 armasm のエラーおよび警告メッセージのリスト(2-89 ページ). Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-88 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト 2.1 armasm のエラーおよび警告メッセージのリスト armasm で生成されるエラーおよび警告メッセージのリスト A1017E : :INDEX:PC 相対式では使用できません :INDEX:式演算子が、PC 相対式(通常はプログラムラベル)に適用されまし た。:INDEX:は、レジスタ相対式での、ベースレジスタからのオフセットを返します。 <areaname> というエリア内の <label> というラベルのオフセットを取得する場合は、 <label> - <areaname> という形式で指定します。 アセンブラのドキュメントの以下のセクションを参照して下さい。 単項演算子 A1020E : 不正な事前定義:<directive> --predefine(-pd)コマンドラインオプションのオペランドが認識されませんでした。デ ィレクティブは、スペースを含んでいる場合は引用符で囲む必要があります。例えば、 Windows では次のようにします。 --predefine "versionnum SETA 5" SETS ディレクティブを使用する場合は、ディレクティブの引数も引用符で囲む必要があ ります。引用符は、オペレーティングシステムおよびシェルに応じてエスケープしなけれ ばなりません。以下に例を示します。 --predefine "versionstr SETS \"5A\"" A1021U : 入力ファイルがありません コマンドラインで、入力ファイルが指定されませんでした。原因としては、引数を囲む引 用符のうち、終了側の引用符がなかったことが考えられます。 A1023E : ファイル "<filename>" を開けませんでした:<reason> A1024E : ファイル "<filename>" をロードできませんでした:<reason> A1042E : 認識されない APCS 修飾子 '<qualifier>' --apcs コマンドラインオプションに指定された引数にエラーがあります。<qualifier> のスペルを確認して下さい。 A1051E : --depend ファイル '<filename>' を開けません:<reason> A1055E : --errors ファイル '<filename>' を開けません:<reason> A1056E : ターゲットの cpu '<cpu>' が認識されません --cpu コマンドラインオプションで指定された名前が、認識されているプロセッサ名では ありません。引数のスペルを確認して下さい。 サポートされているプロセッサおよびアーキテクチャのリストを表示するには、-cpu=list を使用します。 A1067E : 出力ファイルが '<filename1>' として指定されましたが、既に '<filename2>' として指定されています コマンドラインで、複数の出力ファイル(-o filename)が指定されました。コマンドライ ンオプションのスペルの間違いが原因である可能性があります。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-89 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1071E : リストファイル '<filename>' を開けません:<reason> --list <filename> コマンドラインオプションで指定されたファイルが開けませんでし た。この例外は、以下のいずれかの理由で発生することがあります。 • • • • 指定された名前が無効 スペースがない 同じ名前の読み取り専用ファイルが既に存在する ファイルが別のプロセスによって使用されている ファイルのパスが正しく指定されていることを確認して下さい。 A1072E : リストファイル '<filename>' として .s ファイルまたは .o ファイルを指定する ことはできません --list コマンドラインオプションの filename 引数が、ソースファイルまたはオブジェクト ファイルであることを示す拡張子を持っています。原因としては、コマンドラインで filename 引数を指定し忘れたことが考えられます。--list コマンドラインオプションに 正しい引数が指定されていることを確認して下さい。 A1073E : 出力ファイル '<filename>' としてソースファイルを指定することはできません コマンドラインで指定されたオブジェクトファイルが、ソースファイルであることを示すファ イル名拡張子を持っています。原因としては、コマンドラインでオブジェクトファイル名を 指定し忘れたことが考えられます。 A1074E : 依存ファイル '<filename>' としてソースファイルを指定することはできません --depend コマンドラインオプションの filename 引数が、ソースファイルであることを示す 拡張子(.s)を持っています。原因としては、コマンドラインで filename 引数を指定し忘 れたことが考えられます。正しい引数が指定されていることを確認して下さい。 A1075E : エラーファイル '<filename>' としてソースファイルを指定することはできません --errors コマンドラインオプションの filename 引数が、ソースファイルであることを示す 拡張子(.s)を持っています。原因としては、コマンドラインで filename 引数を指定し忘 れたことが考えられます。正しい引数が指定されていることを確認して下さい。 A1085W : 強制ユーザモード LDM/STM の後にバンク付きの R8-R14 を使用することはでき ません ARM アーキテクチャでは、ユーザレジスタ LDM または STM のすぐ後に続く命令でバン クレジスタにアクセスすることはできません。NOP を LDM または STM の直後に追加する と、このエラーを回避することができます。 以下に例を示します。 stmib sp, {r0-r14}^ ; Return a pointer to the frame in a1. mov r0, sp 変更後: stmib sp, {r0-r14}^ ; Return a pointer to the frame in a1. nop mov r0, sp A1088W : エリア AREA の宣言が正しくありません |$$$$$$$| これは、AREA ディレクティブが指定されていない場合にレポートされます(A1105E を参 照)。 A1099E : 構造体スタックが最大スタックサイズ <max> をオーバーフローしています A1100E : 構造体スタックがアンダーフローしています A1105E : Area ディレクティブがありません これは、AREA ディレクティブが指定されていない場合にレポートされます(A1088W を 参照)。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-90 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1106E : コンマがありません A1107E : 不正なシンボル型。ラベルが期待されます。 A1108E : シンボル '<name>' が複数回定義されています A1109E : 不正な式の型 A1110E : 定数式が期待されます 例えば SETA の後には、定数式を指定する必要があります。 アセンブラのドキュメントの以下のセクションを参照して下さい。 数値式 A1111E : 定数式またはアドレス式が期待されます A1112E : アドレス式が期待されます A1113E : ストリング式が期待されます 例えば SETS の後には、ストリング式を指定する必要があります。 アセンブラのドキュメントの以下のセクションを参照して下さい。 文字列式 A1114E : レジスタ相対式が期待されます A1116E : ストリングのオペランドは DCB に対してのみ指定できます A1117E : レジスタシンボル '<name>' は既に定義されています A1118E : 現在のマクロ拡張がありません A1119E : 条件内では MEND を使用できません MEND は "END of Macro" の意味であり、英語の単語 "mend" ではありません。 アセンブラのドキュメントの以下のセクションを参照して下さい。 マクロについて A1120E : 不正なグローバル名 A1121E : グローバル名 '<name>' は既に存在しています A1122E : ローカル変数は、マクロ外では使用できません A1123E : 不正なローカル名 A1125E : グローバル/ローカルシンボル '<name>' の型が不明または間違っています A1126E : 不正なアライメント境界です。2 の倍数にする必要があります A1127E : 不正な IMPORT/EXTERN 名 A1128E : 共通名 '<sym>' は既に存在しています A1129E : インポートされた名前 '<sym>' は既に存在しています A1130E : エクスポートされた名前が不正です A1131E : エクスポートされたシンボル '<sym>' のシンボル型が不正です A1132E : REQUIRE ディレクティブは <entity> 形式の出力ではサポートされていません A1133E : 必須のシンボル名が不正です A1134E : 必須のシンボル型が不正です。シンボルが外部またはラベルで、かつシンボルが再 配置可能および絶対であることが期待されます。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-91 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1135E : エリア名がありません アルファベット以外の文字で始まる AREA 名は縦棒で囲む必要があります。例えば、次 のような名前の場合、 AREA 1_DataArea, CODE, READONLY 次のように変更します。 AREA |1_DataArea|, CODE, READONLY A1136E : エントリアドレスは既に設定されています A1137E : 行の終わりに予期しない文字があります この問題は、命令の行に、命令の一部ではない余分な文字が発見された場合に発生し ます。 以下に例を示します。 ADD r0, r0, r1 comment 以下のように変更できます。 ADD r0, r0, r1 ; comment A1138E : 文字列 "<string>" は操作に対して短すぎます。長さは <oplength> より大き くする必要があります。 A1139E : 文字列がオーバーフローしています。文字列が <max> 文字を超えています。 A1140E : 不正なオペランド型 A1141E : 再配置された式のみを加算または減算できます A1142E : 減算による再配置は <entity> 形式の出力ではサポートされていません この問題は、次のように、減算シンボルが別のエリアにある場合に発生します。 IMPORT sym1 IMPORT sym2 DCD (sym2 - sym1) A1143E : COMMON ディレクティブは %s 形式の出力ではサポートされていません A1144E : DCDO ディレクティブは %s 形式の出力ではサポートされていません A1145E : エクスポートされたシンボル '<sym>' は定義されていません A1146E : 出力ファイル <codeFileName> を開けません:<reason> A1147E : 不正なシフト名 A1148E : 不明なシフト名 <name>。LSL、LSR、ASR、ROR、RRX のいずれかが期待されます。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-92 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1150E : 不正なシンボル。定義されていないか、外部です。 この問題は、通常、以下の場合に発生します。 • 現在のファイルが、いくつかのシンボルを定義するために、他のファイルの INCLUDE を必要とする場合。以下に例を示します。 "init.s", line 2: Error: A1150E: Bad symbol 2 00000000 DCD EBI_CSR_0 通常は、以下のように、定義ファイルをインクルードする必要があります。 INCLUDE targets/eb40.inc • 現在のファイルが、いくつかのシンボルのために、IMPORT を必要とする場合。以下 に例を示します。 "init.s", line 4: Error: A1150E: Bad symbol 4 00000000 LDR r0, =||Image$$RAM$$ZI$$Limit|| 通常は、以下のように、シンボルをインポートする必要があります。 IMPORT ||Image$$RAM$$ZI$$Limit|| A1151E : 不正なレジスタ名シンボル 例: MCR p14, 3, R0, Cr1, Cr2 コプロセッサレジスタ CR は、ビルドのコードでは小文字(c)でラベル付けする必要があり ます。ARM レジスタは、以下のように、r でも R でもかまいません。 MCR p14, 3, r0, c1, c2 または MCR p14, 3, R0, c1, c2 A1152E : 予期しない演算子 A1153E : 未定義のシンボル A1154E : 予期しないオペランド。演算子が期待されます。 A1155E : <operator> と等しい予期しない単項演算子 A1156E : 開き括弧がありません A1157E : ディレクティブの後に構文エラーがあります A1158E : 行の先頭が不正です。先頭は空白にする必要があります。 一部のディレクティブ(ENTRY、IMPORT、EXPORT、GET など)は、行の先頭にラベルがな い行でしか使えません。ラベルが存在する場合は、このエラーが発生します。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-93 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1159E : 行の先頭にラベルがありません 一部のディレクティブ(FUNCTION、SETS など)は、行の先頭にラベルが必要です。以下 に例を示します。 my_func FUNCTION または label SETS ラベルが存在しない場合は、このエラーが発生します。 A1160E : 不正なローカルラベル番号 数値のローカルラベルは範囲 0 ~ 99 の数値で、その後に名前を付けることもできま す。 アセンブラのドキュメントの以下のセクションを参照して下さい。 数値のローカルラベル。 A1161E : ローカルラベル定義の後に構文エラーがあります A1162E : 不正なルーチン名 '<name>' A1163E : 不明なオペコード <name> です。オペコードまたはマクロが期待されます。 この最も一般的な原因は、以下のとおりです。 • 命令の前の左余白にいくつかのホワイトスペースを入れるのを忘れている。例えば、 次の命令は、 MOV PC,LR 次のように変更します。 MOV PC,LR • --fpu スイッチを使わずに、ハードウェア浮動小数点命令を使用している。例えば、 FMXR FPEXC, r1 ; • は、 armasm --fpu vfp でアセンブルする必要があります。 オペコードの入力を間違えた。例えば、 ADDD は、次のように修正します。 ADD A1164E : オペコードは選択されたプロセッサではサポートされていません armasm コマンドラインで選択されたプロセッサでは、この命令はサポートされていませ ん。 以下を参照してください。 ARM アーキテクチャリファレンスマニュアル。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-94 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1165E : 実際のパラメータが多すぎます。<actual> パラメータが期待されます。 A1166E : ラベルの後に構文エラーがあります A1167E : 行の先頭が無効です A1168E : プレインデクス形式では変換できません A1169E : 閉じ角括弧がありません A1170E : イミディエート 0x<adr> がこの操作の範囲外です。0x(0x<adr>)未満である必要 があります。 このエラーは、DCB、DCW、または DCWU ディレクティブを大きすぎるイミディエートと共に 使用した場合に発生します。 アセンブラのドキュメントの以下のセクションを参照して下さい。 DCB。 DCW および DCWU。 A1171E : 閉じ括弧がありません A1172E : 不正なローテータ <rotator> です。ローテータは偶数かつ 0 以上 30 以下で ある必要があります。 A1173E : ADR/L は外部シンボルでは使用できません ADR および ADRL 疑似命令は、同じコードエリア内のラベルと共に使う場合のみ使用 できます。レジスタにエリア外のアドレスをロードするには、代わりに LDR を使用して下さ い。 A1174E : データ転送オフセット 0x<val> が範囲外です。許可された値は 0x<mini> ~ 0x<maxi> です A1175E : 不正なレジスタ範囲 A1176E : 分岐のオフセット 0x<val> が範囲外です。許可された値は 0x<mini> ~ 0x<maxi> です 分岐は PC 相対で、範囲の制限があります。数値のローカルラベルを使用している場合 は、ROUT ディレクティブを使うとその有効範囲が制限できます。これにより、誤って違うラ ベルが参照されるのを防ぐことができます。 アセンブラのドキュメントの以下のセクションを参照して下さい。 数値のローカルラベル。 A1179E : 不正な 16 進数 A1180E : 閉じ引用符がありません A1181E : 不正な演算子 A1182E : ベースとなる <base> 数が不正です A1183E : 数値オーバーフロー A1184E : 外部シンボルは式内では有効ではありません A1185E : シンボルがありません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-95 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1186E : データエリア内で生成されたコード 命令がデータエリア内にアセンブルされました。この問題は、AREA ディレクティブで CODE 属性を省略した場合に発生することがあります。 アセンブラのドキュメントの以下のセクションを参照して下さい。 AREA。 A1187E : マクロのパラメータにエラーがあります A1188E : レジスタ値 <val> は範囲外です。許可された値は <mini> ~ <maxi> です A1189E : '#' がありません A1190E : 予期しない '<entity>' A1191E : 浮動小数点レジスタ番号が範囲(0 ~ <maxi>)を超えています A1192E : コプロセッサレジスタ番号が範囲(0 ~ 15)を超えています A1193E : コプロセッサ番号が範囲(0 ~ 15)を超えています A1194E : 不正な浮動小数点数 A1195W : 小さな浮動小数点値は 0.0 に変換されます A1196E : 浮動小数点数を禁止するには遅すぎます A1198E : 不明なオペランド この問題は、オペランドが誤って入力された場合に発生します。 以下に例を示します。 armasm init.s -g -PD "ROM_RAM_REMAP SETL {FALS}" これは、以下のようにする必要があります。 armasm init.s -g -PD "ROM_RAM_REMAP SETL {FALSE}" アセンブラのドキュメントの以下のセクションを参照して下さい。 アセンブリ時の変数代入。 A1199E : コプロセッサ命令が範囲(0 ~ <maxi>)を超えています A1200E : 構造体が一致しません。While/Wend が期待されます。 A1201E : 代入された行が長すぎます。最大長は <max> です。 A1202E : 代入されたシンボル '<name>' の宣言がありません アセンブラのドキュメントの以下のセクションを参照して下さい。 アセンブリ時の変数代入。 A1203E : マクロプロトタイプのラベルパラメータの先頭が不正です A1204E : 不正なマクロパラメータのデフォルト値 A1205E : レジスタ <reg> がリスト内に複数あります A1206E : レジスタは、レジスタ番号の昇順で表示されている必要があります この警告は、例えば LDM や STM 命令で、レジスタが昇順で指定されておらず、-checkreglist オプションが使用されている場合に発生します。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-96 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1207E : 不正または不明な属性 このエラーは、AREA ディレクティブで無効な属性が指定された場合に発生します。以下 に例を示します。 AREA test,CODE,READONLY,HALFWORD HALFWORD は無効なので、削除します。 アセンブラのドキュメントの以下のセクションを参照して下さい。 AREA。 A1209E : ADRL は PC と共にデスティネーションとして使用することはできません A1210E : 初期化されていないエリア '<name>' にゼロ以外のデータがあります A1211E : 開き角括弧がありません A1212E : ゼロによる除算 A1213E : 属性 <entity> を属性 <entity> と共に使用することはできません A1214E : シンボル '<sym>' をレジスタリストとして定義するには遅すぎます A1215E : 不正なレジスタリストシンボル A1216E : 不正なストリングエスケープシーケンス A1217E : コードファイル '<codeFileName>' への書き込み中にエラーが発生しました: <reason> A1219E : APSR 指定子、CPSR 指定子、または SPSR 指定子が不正です 以下に例を示します。 MRS r0, PSR この場合、以下のように、どのステータスレジスタ(CPSR または SPSR)を使用するかを 指定する必要があります。 MRS r0, CPSR A1220E : BLX <address> は無条件にする必要があります A1221E : エリアの属性 '<entity>' は <entity> オブジェクトのファイル形式ではサポー トされていません A1223E : Comdat シンボル '<name>' は定義されていません A1224E : <entity> 形式では、エリア間の PC 相対データ転送は実行できません A1225E : ASSOC 属性は非 comdat エリアでは使用できません A1226E : SELECTION 属性は非 comdat エリアでは使用できません A1227E : Comdat 関連エリア '<name>' はこの時点でファイル内に定義されていません A1228E : Comdat 関連エリア '<name>' はエリア名ではありません A1229E : COMDAT シンボルがありません A1230E: Missing '}' after COMDAT symbol A1234E : シンボル '<sym>' の未定義または未エクスポートの Weak エイリアス ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-97 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1237E : レジスタまたはレジスタの組み合わせがこの操作に対して無効です A1238E : この操作で使用する場合、イミディエート値はワード境界で整列している必要があり ます A1240E : イミディエート値はこの操作では使用できません A1241E : この操作ではイミディエート値を使用する必要があります A1242E : この操作で使用する場合、オフセットはワード境界で整列している必要があります A1243E : この操作では、オフセットはハーフワード境界で整列している必要があります A1244E : '!' がありません A1245E : Thumb コードから ARM コードへの B または BL です A1247E : ARM コードから ARM コードへの BLX です。BL を使用してください。 この問題は、このアセンブラファイル内に ARM コードから ARM コードへの BLX label 分岐がある場合に発生します。これが許可されないのは、BLX ラベル では常 に命令セットの状態変更が起きるためです。通常は、代わりに BL を使用することで解決 できます。 A1248E : Thumb コードから Thumb コードへの BLX です。BL を使用してください。 この問題は、このアセンブラファイル内に Thumb コードから Thumb コードへの BLX label 分岐がある場合に発生します。これが許可されないのは、BLX ラベル では常 に命令セットの状態変更が起きるためです。通常は、代わりに BL を使用することで解決 できます。 A1249E : ポストインデクスアドレッシングモードは使用できません A1250E : プレインデクスアドレッシングモードはこの命令では使用できません。[Rn, Rm] を 使用してください。 A1253E : 外部シンボルへの Thumb 分岐は再配置できません:<fmt> では表現できません A1254E : ハーフワードリテラル値はサポートされていません 次の例では、LDRH を LDR に変更します。LDR は、レジスタに定数をロードする標準的 な方法です。 LDRH R3, =constant A1256E : DATA ディレクティブは CODE エリアでのみ使用できます A1259E : 無効な PSR フィールド指定子です。構文は <PSR>_ で、<PSR> には CPSR ま たは SPSR が入ります。 A1260E : PSR フィールド '<entity>' が複数回指定されています A1261E : MRS ではフィールドを選択できません。直接 APSR、CPSR、または SPSR を使用し てください この問題は、次のように、MRS 命令と共に CPSR または SPSR のフィールドを使おうとし た場合に発生します。 MRS r0, CPSR_c A1262U : 式記憶エリアアロケータがエラーになりました A1265U : 構造体が一致しません:INCLUDE ファイルの最後で IF または WHILE が一致し ません A1267E : ファイル <filename> に対して不正な GET または INCLUDE です ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-98 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1268E : 条件またはマクロが一致しません A1269U : 構造体スタック上に予期しない GET があります A1270E : ファイル "<entity>" が見つかりません A1271E : 行が長すぎます。最大行長は <MaxLineLength> です。 A1272E : 入力ファイルの終わり A1273E : '\\' はストリングの分割には使用できません A1274W : コメントの最後に '\\' があります A1283E : リテラルプールが離れすぎています。LTORG を使用して 1KB 以内になるようにア センブルしてください。 Thumb コードでは、アクセスを可能にするために、リテラルプールを LDR 命令の 1KB 以内にしなければなりません。A1284E および A1471W を参照して下さい。 A1284E : リテラルプールが離れすぎています。LTORG を使用して 4KB 以内になるようにア センブルしてください。 ARM コードでは、リテラルプールはそれにアクセスしようとしている LDR 命令の 4KB 以 内になければなりません。この問題を解決するには、LTORG ディレクティブをアセンブリ ソースコード内の適当な場所に追加します。 アセンブラのドキュメントの以下のセクションを参照して下さい。 LDR Rd, =label を使用したレジスタへのアドレスのロード LTORG。 A1285E : 不正なマクロ名 A1286E : マクロは既に存在しています A1287E : マクロプロトタイプのパラメータの先頭が不正です A1288E : マクロプロトタイプのパラメータが不正です A1289E : マクロプロトタイプのパラメータの区切り文字が無効です A1290E : マクロ定義が大きすぎます。最大長は <max> です。 A1291E : マクロ定義を入れ子にすることはできません A1310W : シンボル属性が認識されません A1311U : 拡張内でマクロ定義が試行されました A1312E : アサートがエラーになりました A1313W : ファイルの終わりに END ディレクティブがありません アセンブラは、ファイル内のコードがどこで終了するかを知るために、END ディレクティブ を必要とします。このディレクティブの後には、自由な形式でコメントなどの情報を追加 できます。 A1314W : 予約されている命令(NV 条件を使用) A1315E : NV 条件はターゲットの CPU ではサポートされていません A1316E : MSR に対するシフトされたレジスタオペランドの効果が定義されていません A1319E : 影響が定義されていません(PC を Rs として使用) A1320E : 影響が定義されていません(レジスタ指定シフトで PC を Rn または Rm として使 用) ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-99 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1321E : 影響が定義されていません(PC をオフセットレジスタとして使用) A1322E : PC の非境界整列転送です。転送先アドレスは 4 バイト境界で整列されている必 要があります。それ以外の場合、予測不能な結果になります このエラーは、LDR 命令を使用してワード境界で整列されていないアドレスから PC をロ ードしようとすると報告されます。以下に例を示します。 AREA Example, CODE LDR pc, [pc, #6] ; Error – オフセットは 4 の倍数である必要がありま す END このコードよって、予期していなかった結果が生じます。 A1323E : 予約済みの命令(Rm = Rn とポストインデクスの併用) A1324E : 影響が定義されていません(PC + ライトバック) A1327E : 移植不可能命令(ライトバックとベースを使用する LDM がレジスタリストで指定され ている場合、ベースの最終的な値は予期できません) LDM では、ベースレジスタ <Rn> が <registers> で指定されていて、ベースレジスタの ライトバックが指定されている場合、<Rn> の最終的な値は UNKNOWN です。 A1328E : 移植不可能命令(ライトバックとベースを使用する STM がレジスタリストの最初にな い場合、ベースの格納値は予期できません) STM 命令では、<Rn> が <registers> で指定されていて、ライトバックが指定されてい る場合、次のようになります。 • • <Rn> が <register_list> で指定されている最も小さな番号のレジスタであるなら ば、<Rn> の元の値が格納されます。 そうでないならば、<Rn> の格納値は UNKNOWN です。 A1329E : 予測不能な命令(ベースへのライトバックを使用した強制ユーザモード転送) この問題は、PUSH {r0}^ のような命令によって発生します(^ は、ユーザレジスタへの アクセスを示します)。ベースレジスタへのライトバックは、この命令では使用できませ ん。ベースレジスタは、次のように別途更新する必要があります。 SUB sp, sp,#4 STMID sp, {r0}^ また、STMFD R0!, {r13, r14}^ を次のように置き換える方法もあります。 SUB r0, r0,#8 STM r0, {r13, r14}^ A1085W も参照して下さい。 A1331E : 予測不能な命令(ソースまたはデスティネーションとしての PC) A1332E : 影響が予測不能です(PC 相対 SWP) A1334E : 影響が定義されていません(PC/PSR の使用) A1335E : 意味のない命令(PC にライトバックすることはできません) A1337E : 意味のない命令(PC はデスティネーションです) A1338E : 疑わしい命令(PC がオペランドとして使用されています) A1339E : RdLo と RdHi が同じレジスタの場合予測できません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-100 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1341E : 境界整列されていないデスティネーションへの分岐です。<max> バイト境界で整列 されているデスティネーションが期待されます。 A1342W : シンボルがこの命令と離れすぎている場合、別の AREA 内のシンボルの <name> はリンク時のエラーの原因になります A1344I : ホストエラー:メモリが不足しています A1355U : AREA 内にないラベルが見つかりました この問題は、アセンブラディレクティブの前にホワイトスペースがない場合に発生しま す。ARM アセンブラディレクティブは、次のようにインデントされている必要があります。 IF :DEF: FOO ; code ENDIF 以下は、正しくない例です。 IF :DEF: FOO ; code ENDIF 最初の列で始まるシンボルは、ラベルであると見なされます。 A1356E : 命令がターゲットの CPU でサポートされていません この問題は、選択されたアーキテクチャまたはプロセッサでサポートされていない命令を 使おうとした場合に発生します。 以下に例を示します。 SMULBB r0,r0,r1 ; これは、次のようにアセンブルできます。 armasm --cpu 5TE 以下を参照してください。 ARM アーキテクチャリファレンスマニュアル。 A1406E : 不正な 10 進数 A1407E : 大きすぎる浮動小数点値 A1408E : 大きすぎる(単精度)浮動小数点値 A1409W : 小さな(単精度)浮動小数点値は 0.0 に変換されます A1411E : ベクタ指定子に閉じの '>' がありません A1412E : ベクタ長が不正です。<min> と <max> の間にする必要があります。 A1413E : ベクタのストライドが不正です。<min> と <max> の間にする必要があります。 A1414E : ベクタはそれ自身を循環して上書きされます。長さ * ストライドが <max> 以下で ある必要があります。 A1415E : VFPASSERT の後に 'VECTOR' または 'SCALAR' を指定する必要があります A1416E : ベクタ長が現在のベクタ長 <len> と一致しません A1417E : ベクタのストライドが現在のベクタのストライドと一致しません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-101 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1418E : レジスタの型 '<type>' が命令に対して不正です。浮動小数点/倍精度型のレジ スタが期待されます。 A1419E : スカラオペランドがスカラバンク内にありません A1420E : ベクタオペランドの長さが異なっています A1421E : ベクタオペランドのストライドが異なっています A1422E : このベクタオペランドとスカラオペランドの組み合わせは使用できません A1423E : この操作はベクタ化できません A1424E : この命令に対するオペランドではベクタ指定子は使用できません A1425E : デスティネーションのベクタをスカラバンク内に置くことはできません A1426E : ソースのベクタをスカラバンク内に置くことはできません A1427E : オペランドが部分的にオーバラップしています A1428E : レジスタリストに型の異なるレジスタが含まれています A1429E : 期待されるレジスタリスト この問題は、FRAME SAVE および FRAME RESTORE ディレクティブにレジスタリストが指 定されていない場合に、アセンブラによって通知されます。 アセンブラのドキュメントの以下のセクションを参照して下さい。 FRAME RESTORE。 FRAME SAVE。 A1430E : 不明な frame ディレクティブ A1431E : frame ディレクティブは PROC/FUNCTION の外部では使用できません アセンブラのドキュメントの以下のセクションを参照して下さい。 Frame ディレクティブ。 A1432E : 浮動小数点レジスタ型は、選択した浮動小数点アーキテクチャと互換性がありませ ん A1433E : この命令のライトバック形式のみが存在します 命令で指定されたアドレッシングモードは、ライトバック指定子(つまり、ベースレジスタの 後の '!')を含んでいませんでしたが、命令セットは命令のライトバック形式だけをサポ ートしています。ライトバック形式を使用するか、要求された動作をする命令に置き換え て下さい。 A1435E : アーキテクチャ用にアセンブルする場合、{PCSTOREOFFSET} は定義されていませ ん {PCSTOREOFFSET} は、プロセッサ用にアセンブルする場合にだけ定義され、アーキテ クチャ用の場合は定義されません。 A1437E : {ARCHITECTURE} が定義されていません {ARCHITECTURE} は、アーキテクチャ用にアセンブルする場合にだけ定義され、プロセ ッサ用の場合は定義されません。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-102 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1446E : 不正または不明な属性 '<attr>' です。代わりに --apcs /interwork を使用 してください 以下に例を示します。 AREA test1, CODE, READONLY AREA test, CODE, READONLY, INTERWORK このコードは、元はレガシー ARM ソフトウェア開発ツールキット(STD)と共に動作する ことが想定されていたと考えられます。INTERWORK エリア属性は、現在では廃止されて います。このエラーが表示されないようにするには、以下の処理を行います。 • • AREA の行から ", INTERWORK" を削除します。 代わりに、 armasm --apcs /interwork foo.s でアセンブルします。 A1447W : ファイルの終わりに END ディレクティブがありませんが、END というラベルが見つか りました この問題は、インデントされていない END ディレクティブによって発生します。 A1448E : 廃止予定の形式の PSR フィールド指定子が使用されています(_f を使用してくだ さい) A1449E : 廃止予定の形式の PSR フィールド指定子が使用されています(_c を使用してくだ さい) ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-103 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1450E : 廃止予定の形式の PSR フィールド指定子が使用されています(将来の互換性のた めに _cxsf を使用してください) armasm では、以下の形式で、MRS および MSR 命令のすべてがサポートされています。 MRS(cond) Rd, CPSR MRS(cond) Rd, SPSR MSR(cond) CPSR_fields, Rm MSR(cond) SPSR_fields, Rm MSR(cond) CPSR_fields, #immediate MSR(cond) SPSR_fields, #immediate ここで、fields は、cxsf の任意の組み合わせです。 アセンブラの以前のリリースでは、制御フィールドとフラグフィールドを変更するために、 MSR 命令で次のような他の形式も使用できました。 • • • cpsr または cpsr_all、制御およびフラグフィールド cpsr_flg、フラグフィールドのみ cpsr_ctl、制御フィールドのみ 同様の制御およびフラグ設定が、SPSR にも適用されます。 これらの形式は、廃止予定になっているため、使用しないで下さい。これらの形式が従 来のコードに含まれている場合、アセンブラによって以下のメッセージが通知されます。 廃止予定の形式の PSR フィールド指定子が使用されています(_cxsf を使用してください) 警告が表示されないようにするには、多くの場合、代わりに _c、_f、_cf、または _cxsf を使うようにコードを変更します。 アセンブラのドキュメントの以下のセクションを参照して下さい。 ARM 状態での条件付き実行。 Thumb 状態での条件付き実行。 汎用レジスタ。 インラインバレルシフタへのアクセス。 以下の FAQ を参照して下さい。 armasm:use of MRS and MSR instructions ('Deprecated form of PSR field specifier') も 参照して下さい。 A1454E : FRAME STATE RESTORE ディレクティブに対応する FRAME STATE REMEMBER が ありません アセンブラのドキュメントの以下のセクションを参照して下さい。 Frame ディレクティブ。 FRAME STATE REMEMBER。 FRAME STATE RESTORE。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-104 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1456W : INTERWORK エリアディレクティブは現在サポートされていません。--apcs /inter が選択された場合と同様に続行されます。 例えば、次のコードはこの警告を生成します。 AREA test, CODE, READONLY, INTERWORK このコードは、元はレガシー ARM ソフトウェア開発ツールキット(STD)と共に動作する ことが想定されていたと考えられます。INTERWORK エリア属性は、現在では廃止されて います。この警告が表示されないようにするには、以下の処理を行います。 1. AREA の行から ", INTERWORK" を削除します。 2. 代わりに、 armasm --apcs /interwork foo.s でアセンブルします。 A1457E : INTERWORK と NOINTERWORK コードエリアを同じファイル内に混在させることはで きません。 INTERWORK と(既定の)NOINTERWORK コードエリアは、同じファイル内に混在させること ができません。このコードは、元は ARM ソフトウェア開発ツールキット(STD)と共に動作 することが想定されていたと考えられます。INTERWORK AREA 属性は、ARM コンパイラ ツールチェーンでは廃止されています。 以下に例を示します。 AREA test1, CODE, READONLY … AREA test2, CODE, READONLY, INTERWORK このエラーが表示されないようにするには、以下の手順を実行します。 1. 2 つの AREA を、例えば test1.s と test2.s のような個別のアセンブリファイルに 移動します。 2. , INTERWORK を test2.s の AREA の行から削除します。 3. test1.s を armasm --apcs /nointerwork でアセンブルします。 4. test2.s を armasm --apcs /interwork でアセンブルします。 5. リンク時に、リンカによって必要なインターワーキングベニアが追加されます。 A1458E : fpu が None の場合、DCFD または DCFDU は使用できません。 A1459E : レジスタに対する B または BL は実行できません。 命令のこの形式は使用できません。使用できる形式については、以下を参照して下さ い。 ARM アーキテクチャリファレンスマニュアル。 A1461E : 指定されたプロセッサまたはアーキテクチャは Thumb 命令をサポートしていません --cpu オプションを使用して特定のアーキテクチャまたは CPU を指定した後で、このエ ラーを生成した AREA 内に Thumb コードを組み込んだと考えられます。 例えば、次のコマンドラインでは、選択されたアーキテクチャ ARMv4 は、Thumb コード をサポートしていません。 armasm --cpu 4 code.s A1462E : 指定されたメモリ属性はこの命令をサポートしていません A1463E : SPACE ディレクティブは大きすぎるためこのエリアに収まりません。エリアのサイズの 制限は 2^32 です。 A1464W : ENDP/ENDFUNC に対応する PROC/FUNC がありません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-105 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1466W : 演算子の優先順位とは、C では式が異なる方法で評価されることを意味します armasm は常に、特定の式を C とは異なる順序で評価してきました。この警告は、C プロ グラマがアセンブリ言語で記述する際の手助けになります。 警告が表示されないようにするには、次のいずれかの対処を行います。 • • 評価の順序が明示的になるようにコードを変更します。つまり、括弧を追加します。 --unsafe スイッチで、警告を非表示にします。 アセンブラのドキュメントの以下のセクションを参照して下さい。 演算子の優先順位 A1467W : 負のオフセット <offset> を使用した FRAME ADDRESS は推奨されません A1468W : 標準構造フレームアドレスより上にレジスタを保存する FRAME SAVE は推奨されま せん A1469E : FRAME STATE REMEMBER ディレクティブに対応する FRAME STATE RESTORE が ありません アセンブラのドキュメントの以下のセクションを参照して下さい。 Frame ディレクティブ。 FRAME STATE REMEMBER。 FRAME STATE RESTORE。 A1471W : ディレクティブ <directive> は実行可能な位置にある可能性があります この問題は、例えば LTORG ディレクティブで発生する場合があります(A1283E および A1284E を参照)。LTORG は、この位置でのリテラルプール DCD データをダンプする ようにアセンブラに指示します。 この警告が発生しないようにするには、データをプロセッサが命令として実行できない場 所に配置する必要があります。LTORG の位置として適切なのは、無条件分岐の直後、 またはサブルーチンの最後にある復帰命令の後です。 最後の手段として、データが実行されるのを防ぐために、次のように LTORG の部分に 分岐を追加することもできます。 B unique_label LTORG unique_label A1475E : 少なくとも 1 つのレジスタを転送する必要があります。転送しないと結果を予測でき ません。 A1476E : ワード境界で整列されていないアドレスでの BX r15 は予測できません A1477E : このレジスタの組み合わせは予測不能な動作になります このエラーは、実行時に予測不可能な結果が生じる命令をアセンブリしている場合に生成さ れます。この 予測不可能 な結果を回避するには、コードを記述し直す必要があります。例 えば、次の命令は Thumb 命令のアセンブル時にこのエラーを必ず発生し、ターゲットア ーキテクチャは ARMv6T2 以降です。 ADD sp, r0, #100 ; error - 予測不要な SP の使用 CMP pc, #1 ; error - 予測不要な PC の使用 PUSH {r0, pc} ; error - 予測不要なレジスタの組み合わせの使用 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-106 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1479W : 要求されたアライメント <alignreq> がエリアアライメント <align> より大きいた め、エリアアライメントを大きくしました これは、ALIGN ディレクティブの整列境界が、それを含む AREA よりも粗い場合の警告 です。これは使用できません。この問題を解消するために、AREA の側のアライメントが アセンブラによって自動的に増やされます。この警告を発生させる単純な例は、次のよ うなものです。 AREA test, CODE, ALIGN=3 ALIGN 16 mov pc, lr END この例では、AREA (ALIGN=3) のアライメントが 2^3=8 バイト境界ですが、mov pc,lr 命令は 16 バイト境界になっているため、エラーになります。 注 2 つのアライメントの種類が、異なる方法で指定されています。 この警告は、AREA ... ALIGN=0 を使ってコードセクションをバイト境界に整列させると きにも発生します。そのような設定はできません。コードセクションは、次のようにだけ整 列できます。 • • ARM コードでは、4 バイト境界。つまり、"ALIGN=2" を使用します。 Thumb コードでは、2 バイト境界。つまり、"ALIGN=1" を使用します。 アセンブラのドキュメントの以下のセクションを参照して下さい。 ALIGN。 AREA。 A1480W : ディレクティブまたは命令と同じ名前をマクロに付けることはできません A1482E : シフトオプションが範囲外です。使用可能な値は <min> ~ <max> です。 A1484W : 現在サポートされていないシフト名 'ASL' です。代わりに LSL を使用してくださ い。 ARM アーキテクチャには、ASL シフト演算がありません。ARM バレルシフタには、以下 のシフトの種類だけがあります。 • • • • ROR ASR LSR LSL 算術(符号付き)左シフトは、論理左シフトと同じです。符号ビットは、常にシフトアウトさ れるためです。 ASL という名前を使用すると、アセンブラはこの警告をレポートして自動的に ASL を LSL に変換します。 アセンブラのドキュメントの以下のセクションを参照して下さい。 --unsafe。 ASR。 A1485E : LDM/STM 命令が --split_ldm で許可されている最大レジスタ数 <max> を超 えています ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-107 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1486E : 別の AREA のシンボルの ADR/ADRL は ELF ではサポートされていません。 ADR および ADRL 疑似命令は、同じコードセクション内のラベルと共に使う場合のみ 使用できます。レジスタにエリア外のアドレスをロードするには、代わりに LDR を使用し て下さい。 A1487W : 現在サポートされていない命令名 'ASL' です。代わりに LSL を使用してくださ い。 この警告は、--16 コマンドラインオプションを使用してアセンブルする場合、CODE16 デ ィレクティブを使用してアセンブルする場合、UAL 以前の Thumb コードで ASL 命令が 使用された場合に生成されます。対応する ARM ASL メッセージ A1484W を参照して 下さい。 A1488W : 行 <lineno> の PROC/FUNC に対応する ENDP/ENDFUNC がありません(ファイ ル '<filename>') A1489E : <FPU> が定義されていません A1490E : <CPU> が定義されていません {CPU} は、プロセッサ用にアセンブルする場合にだけ定義され、アーキテクチャ用の場 合は定義されません。 A1491W : 内部エラー:不正なアライメントを使用した再配置がオフセット <offset> で見つか りました この問題は、アセンブラのエラーを示している場合があります。購入元にお問い合わせ 下さい。 A1492E : イミディエート 0x<val> がこの操作の範囲外です。許可された値は 0x<mini> ~ 0x<maxi> です A1493E : REQUIRE は AREA 内にある必要があります A1495W : 分岐のターゲットがデータアドレスです armasm はシンボルの種類を判断し、データへの分岐を検出します。この警告が表示さ れないようにするには、--diag-suppress 1495 を指定します。 A1496W : シンボル '<symbol>'(オフセット <offset>)に関する ROPI アドレスの絶対再 配置を実行すると、リンクエラーが発生する場合があります 例えば、--apcs /ropi で次のコードをアセンブルするときに、この警告が発生しま す。これは、PI コードシンボルへの絶対再配置(R_ARM_ABS32)が生成されるためで す。 AREA code, CODE codeaddr DCD codeaddr END A1497W : シンボル '<symbol>'(オフセット <offset>)に関する RWPI アドレスの絶対再 配置を実行すると、リンクエラーが発生する場合があります 例えば、--apcs /rwpi で次のコードをアセンブルするときに、この警告が発生しま す。これは、PI データシンボルへの絶対再配置(R_ARM_ABS32)が生成されるためで す。 AREA data, DATA dataaddr DCD dataaddr END ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-108 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1498E : Thumb 命令の後に予期しない文字があります 例えば、次の命令は UAL と UAL 以前のコードで有効です。 ADD r0, r0, r1 ただし、次の命令は UAL 以前の Thumb コードでは無効です。予期しない文字は、, ASR #1 です。 ADD r0, r0, r1, ASR #1 A1499E : レジスタの組み合わせは有効な連続ペアではありません A1500E : '<eword>' が期待する場所に他の文字が指定されています A1501E : シフトオプションが範囲外です。使用可能な値は 0、8、16、または 24 です。 A1502W : レジスタ <reg> は caller-save レジスタであり、この操作では有効ではありま せん A1505E : 不正な式の型。論理式が期待されます。 A1506E : 累算器は accx の形式である必要があります。x の範囲は 0 ~ <max> です。 A1507E : レジスタリストの 2 番目のパラメータは最初のパラメータ以上である必要がありま す。 A1508E : 構造体が一致しません。条件が期待されます。 A1509E : 不正なシンボル型です。ラベルまたは weak 外部シンボルが期待されます。 A1510E : イミディエート 0x<imm> は、0 ~ 255 およびローテーションで表すことはできま せん A1511E : イミディエートは 2 つのデータ処理命令の組み合わせで表すことはできません A1512E : イミディエート 0x<val> がこの操作の範囲外です。許可された値は <mini> ~ <maxi> です A1513E : シンボルが見つからないか、シンボル型が '<name>' に対して互換性がありませ ん A1514E : 不正なグローバル名 '<name>' A1515E : 不正なローカル名 '<name>' A1516E : 不正なシンボル '<name>'。定義されていないか、外部です。 A1517E : <operator> と等しい予期しない演算子 A1539E : リンク順序の依存関係 '<name>' がエリアではありません A1540E : self にリンク順序の依存関係を指定することはできません A1541E : <code> は有効な条件コードではありません A1542E : マクロ名 <name1> と <name2>[パラメータ] が矛盾しています A1543W : マクロパラメータのデフォルト値が空です A1544E : 空の PSR フィールド指定子は無効です。フィールドには c、x、s、f のいずれか 1 つを指定する必要があります。 A1545U : 1 つの <objfmt> ファイルにセクションが多すぎます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-109 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1546W : スタックポインタの更新によって、8 バイトのスタックのアライメントが分断される可能 性があります スタックは外部境界上の 8 バイト境界で整列されていなければならないので、奇数のレ ジスタをプッシュすると、この警告が発生します。以下に例を示します。 PUSH {r0} この警告はデフォルトでは非表示になっています。この警告が表示されるようにするに は、--diag_warning 1546 を使用します。 アセンブラのドキュメントの以下のセクションを参照して下さい。 --diag_warning=tag{, tag}。 A1547W : PRESERVE8 ディレクティブが自動的に設定されました 例: PUSH {r0,r1} この警告は、PRESERVE8 ディレクティブは明示的に設定されていないが、アセンブラに よって自動的に設定されているために発生します。この警告はデフォルトでは非表示に なっています。この警告が表示されるようにするには、--diag_warning 1547 を使用 します。 アセンブラのドキュメントの以下のセクションを参照して下さい。 --diag_warning=tag{, tag}。 REQUIRE8 および PRESERVE8 A1548W : コードに SP のインデクス/オフセットされた LDRD/STRD が含まれていますが、 REQUIRE8 が設定されていません この警告は、REQUIRE8 ディレクティブが必要であるのに設定されなかった場合に発生 します。以下に例を示します。 PRESERVE8 STRD r0,[sp,#8] アセンブラのドキュメントの以下のセクションを参照して下さい。 REQUIRE8 および PRESERVE8 A1549W : PRESERVE8 を設定せずに REQUIRE8 を設定するのは異常です。 例: PRESERVE8 {FALSE} REQUIRE8 STRD r0,[sp,#8] A1550U : 入力と出力のファイル名が同じです。 A1551E : Comdef エリア <name> を非 comdat グループに追加することはできません A1560E : 定数以外のバイトリテラル値はサポートされていません A1561E : MERGE セクションと STRING セクションはデータセクションである必要があります A1562E : Merge セクションのエントリサイズは 0 より大きくする必要があります ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-110 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1563W : 命令によって CPU が <stalls> サイクルの間ストールします --cpu オプションによって選択されたプロセッサのパイプラインが原因で、コード内で発 生する可能性があるインターロックに関する情報を、アセンブラから取得できます。その ためには、 armasm --diag_warning 1563 を使用してアセンブルします。 注 --cpu オプションで Cortex-A8 などのマルチイッシュープロセッサが指定されている場 合、インターロック警告は正しくないことがあります。 警告 A1746W も参照して下さい。 A1572E : 演算子 SB_OFFSET_11_0 は、LDR/STR 命令でのみ使用できます A1573E : 演算子 SB_OFFSET_19_12 は、データ処理命令でのみ使用できます A1574E : "<str>" の 1 つ以上のフラグ文字が期待されます A1575E : bit[0] が 1 に等しい BLX はアーキテクチャ上定義されていません A1576E : 不正なコプロセッサレジスタ名シンボル A1577E : 不正なコプロセッサ名シンボル A1578E : 不正な浮動小数点レジスタ名シンボル '<sym>' A1581W : <no_padbytes> バイトのパディングがアドレス <address> で追加されました デフォルトでは、生成されるコードにパディングバイトが追加されるとアセンブラによる警 告が生成されます。この問題は、より大きな境界が必要なアドレスで命令またはディレク ティブが使用されると、常に発生します。例えば、いくつかの Thumb 命令の後で確実に ARM 命令が 4 バイト境界で開始される必要がある場合や、DCB の後に DCD が続く場 合です。 以下に例を示します。 AREA Test, CODE, READONLY THUMB ThumbCode MOVS r0, #1 ADR r1, ARMProg r1 ; ALIGN ; <<< 最初の警告を回避するためにコメントを解除 ARM ARMProg r0,r0,#1 BX LR DCB 0xFF DCD 0x1234 END BX ADD このコードでは、次の警告が生成されます。 A1581W:2 バイトのパディングが 0x6 で追加されました 8 00000008 ARM A1581W:3 バイトのパディ ングがアドレス 0x11 で追加されました 13 00000014 DCD 0x1234 この警告は、Thumb 専用コードで ADR を使用した場合にも発生します。ADR Thumb 疑 似命令は、ワード境界で整列されたアドレスしかロードできませんが、Thumb コード内の ラベルはワード境界で整列されていない場合があります。ALIGN を使用して、Thumb コ ード内のアドレスを 4 バイト境界調整で整列させることができます。 アセンブラのドキュメントの以下のセクションを参照して下さい。 ADR(PC 相対)。 ADR(レジスタ相対)。 DCB。 DCD および DCDU。 ALIGN。 A1582E : リンク順序エリア '<name>' が定義されていません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-111 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1583E : グループシンボル '<name>' が定義されていません A1584W : モード <mode> はこの命令では使用できません A1585E : オペランド型(<typ1>)は演算子 <op> に対して不正です A1586E : オペランド型(<typ1>、<typ2>)は演算子 <op> に対して不正です A1587E : レジスタリスト内のレジスタ数 <count> が多すぎます。最大数は <max> です。 A1593E : 不正なアライメント。転送サイズ UIMM * <dt> と一致している必要があります。 A1595E : 不正なアライメント。<st> * <dt> と一致しているか、<st> が 4 の場合、64 で ある必要があります A1596E : dt st の組み合わせに対してアライメント <align> が不正です A1598E : 不正なレジスタリストの長さ A1599E : サブスクリプトが範囲外です。0 と <max_index> の間にある必要があります。 A1600E : セクション型は、SHT_LOOS と SHT_HIUSER の範囲内にある必要があります。 A1601E : イミディエートを表現できません A1603E : IT ブロック内のこの命令は、予測不能な結果になります A1604W : デスティネーションへの Thumb 分岐で、<max> バイトに整列されていません A1606E : シンボル属性 <attr1> は、属性 <attr2> とともに使用できません A1607E : Thumb-2 ワイド分岐命令が使用されましたが、Thumb-1 ナロー分岐命令にフィット するオフセットです A1608W : MOV pc,<rn> 命令が使用されましたが、BX <rn> の方が適しています A1609W : MOV <rd>,pc 命令ではビット 0 に設定されないため、復帰アドレスは作成されま せん この警告は、Thumb 状態での実行中に PC の現在値がレジスタにコピーされる場合に 発生します。この方法で復帰アドレスを作成しようとすると、ビット[0] が設定されないた め、失敗します。この命令に BX しようとすると、状態が ARM に切り替えられます。 復帰アドレスを作成するには、以下のコードを使用します。 MOV r0, pc ADDS r0, #1 その後は、以下のようにしてこの警告を非表示にしても安全です。 --diag_suppress 1609 A1611E : この命令では、レジスタリストを 2 ずつインクリメントすることはできません A1612E : <type> アドレシングは <instr> では使用できません A1615E : 全レーンへの単一の要素または構造体のストアが定義されていません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-112 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1616E : 命令、オフセット、イミディエート、またはレジスタの組み合わせが、現在の命令セット でサポートされていません このエラーは、オペランドの無効な組み合わせを使おうとした場合に発生することがあり ます。例えば、Thumb での次のようなコードです。 MOV r0, #1 ; /* 不可 */ MOVS r0, #1 ; /* Ok */ アセンブラのドキュメントの以下のセクションを参照して下さい。 ARM 命令と Thumb 命令。 A1617E : 指定した幅は、現在の命令セットでサポートされていません A1618E : 指定した命令は、現在の命令セットでサポートされていません A1619E : 指定した条件が、前の IT と整合性がありません A1620E : ファイル '<filename>' への書き込み中にエラーが発生しました:<reason> A1621E : Thumb コードから ARM コードへの CBZ または CBNZ です A1622E : 負のレジスタオフセットは、現在の命令セットでサポートされていません A1623E : オフセットは、現在の命令セットでサポートされていません A1624W : Thumb コードから ARM コードへの分岐です A1625W : ARM コードから Thumb コードへの分岐です A1626W : Thumb コードから ARM コードへの BL です A1627W : ARM コードから Thumb コードへの BL です この問題は、このファイル内に ARM コードから Thumb コードへの(またはその逆への) 分岐がある場合に発生します。通常は、Thumb コードを別のアセンブラファイルに移動 することで解決できます。その後、リンク時に、リンカによって必要なインターワーキング ベニアが追加されます。 A1630E : 指定されたプロセッサまたはアーキテクチャは ARM 命令をサポートしていません Cortex-M3 および Cortex-M1 などの ARM M プロファイルプロセッサでは、Thumb 命 令セットだけが実装されており、ARM 命令セットは実装されていません。アセンブリファ イルにいくつかの ARM 固有の命令が含まれており、これらのいずれかのプロセッサ用 にビルドされていると考えられます。 A1631E : ロード/ストアでは、左へ 1、2、または 3 しかシフトできません A1632E : IT AL ブロックでは、ELSE を使用できません A1633E : LDR rx,= pseudo 命令は、ロードワード形式でしか使用できません A1634E : Thumb の LDRD/STRD では、レジスタオフセットアドレシングモードはありません A1635E : CBZ/CBNZ は、条件付きにすることはできません A1636E : Thumb では、フラグ設定 MLA はサポートされていません A1637E : 行の読み出しでエラーが発生しました:<reason> A1638E : Thumb 内のレジスタオフセットのロード/ストアでは、ライトバックは使用できません A1639E : 条件付きの DCI は Thumb モードでのみ使用できます A1640E : オフセットは 4 の倍数である必要があります A1641E : Thumb では、強制ユーザモード LDM/STM は使用できません A1642W : 再配置されたナロー分岐は推奨されません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-113 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1643E : 単精度/倍精度値に対して命令を使用できるかどうか判断できません A1644E : 単精度レジスタを FLDMX/LSTMX とともに使用することはできません A1645W : <old> に <new> を代入しました armasm は、命令を置換する場合に警告を発行するように設定できます。以下に例を示 します。 • • • ADD negative_number は SUB positive_number と同じです。 MOV negative_number は MVN positive_number と同じです。 CMP negative_number は CMN positive_number と同じです。 Thumb 命令セットでは、予測不能な単一レジスタ LDM が LDR に変換されます。 この警告はデフォルトでは非表示になっていますが、--diag_warning 1645 を使っ て、表示されるようにすることができます。 --diag_warning 1645 を使用して、次のコードがアセンブルされた場合、 AREA foo, CODE ADD r0, #-1 MOV r0, #-1 CMP r0, #-1 アセンブラによって次のように通知されます。 警告:A1645W:Substituted ADD with SUB 3 00000000 ADD r0, #-1 Warning:A1645W: Substituted MOV with MVN 4 00000004 MOV r0, #-1 Warning:A1645W:Substituted CMP with CMN 5 00000008 CMP r0, #-1 生成されたコードは、次のようになります。 foo 0x00000000:e2400001 [email protected] r0,r0,#1 0x00000004:e3e00000 ....MVN r0,#0 0x00000008:e3700001 ..p.CMN r0,#1 A1647E : 不正なレジスタ名シンボルです。整数レジスタが必要です 構文のこの位置には、整数(コア)レジスタを指定する必要があります。 A1648E : 不正なレジスタ名シンボルです。ワイヤレス MMX SIMD レジスタが必要です A1649E : 不正なレジスタ名シンボルです。ワイヤレス MMX ステータス/制御または汎用レジス タが必要です A1650E : 不正なレジスタ名シンボルです。任意のワイヤレス MMX レジスタが必要です A1651E : デスティネーションレジスタが R15 でない場合の TANDC、TEXTRC、TORC 命令が 定義されていません A1652W : FLDMX/FSTMX 命令は ARMv6 で廃止される予定です。精度が不明な値を保存お よび復元するには、FLDMD/FSTMD 命令を使用して下さい。 A1653E : ステータス/制御レジスタを使ったシフト命令が定義されていません A1654E : バイトまたはハーフワードのロード/ストア時には、外部シンボルにアクセスできませ ん A1655E : ハーフワード/ワード/ダブルワードが整列されていない場合、命令は予測不能です A1656E : この命令を使用する場合、ターゲットは少なくともワード境界で整列している必要が あります A1657E : WLDRB/WLDRH = 定数を使用して、バイト/ハーフワードリテラルをロードできません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-114 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1658W : <opt> のサポートは廃止される予定です armasm に渡されたオプションは、廃止される予定になっています。 アセンブラのドキュメントの以下のセクションを参照して下さい。 アセンブラコマンドラインオプション。 A1659E : ARM/Thumb と Thumb-2EE 間で、B/BL/BLX を実行できません A1660E : このレジスタタイプではスカラインデクスを指定できません A1661E : このレジスタではアライメントを指定できません A1662E : このレジスタタイプではデータ型を指定できません A1663E : このレジスタでは既にデータ型が指定されています A1664E : データ型指定子を認識できません A1665E : データ型のサイズは、8、16、32、64 のいずれかである必要があります A1666E : 浮動小数点型のサイズは、32 または 64 である必要があります A1667E : 多項式型のサイズは、8 または 16 である必要があります A1668E : 命令に指定されているデータ型の数が多すぎます A1669E : この命令ではデータ型指定子を使用できません A1670E : 64 ビットダブルワード型のレジスタ式が必要です A1671E : 128 ビットクワッドワード型のレジスタ式が必要です A1672E : 64 ビットまたは 128 ビットのレジスタ式が必要です A1673E : ソースの 2 つのデータ型は、型とサイズが同じである必要があります A1674E : ソースの第 1 オペランドは、第 2 オペランドの 2 倍のサイズの整数型である必 要があります A1675E : デスティネーションのデータ型とサイズは、ソースと同じである必要があります A1676E : デスティネーションは、ソースの 2 倍のサイズの整数型である必要があります A1677E : デスティネーションは、ソースと同じ型で、サイズは 1/2 にする必要があります A1678E : デスティネーションは、ソースと同じサイズの型なしである必要があります A1679E : デスティネーションは、ソースと同じ型で、サイズは 2 倍にする必要があります A1680E : デスティネーションは、符号なし型で、サイズはソースの符号付き型の 1/2 である 必要があります A1681E : デスティネーションは、符号なし型で、サイズはソースの符号付き型と同じである必 要があります A1682E : デスティネーションが符号なし/符号付き型でソースが浮動小数点型であるか、ディ スティネーションが浮動小数点型でソースが符号なし/符号付き型である必要があります。サイズ は両方とも 32 ビットにしてください A1683E : データ型指定子が、この命令の有効なエンコーディングと一致していません A1684E : ソースオペランドは、サイズが <min> ~ <max> の、符号付き型または符号なし型 である必要があります A1685E : ソースオペランドは、サイズが <min> ~ <max> の、符号付き型、符号なし型、ま たは浮動小数点型である必要があります ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-115 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1686E : ソースオペランドは、サイズが <min> ~ <max> の、符号付き型または浮動小数 点型である必要があります A1687E : ソースオペランドは、サイズが <min> ~ <max> の、整数型または浮動小数点型 である必要があります A1688E : ソースオペランドは、サイズが <min> ~ <max> の型なしである必要があります A1689E : ソースオペランドは、<n> ビットの浮動小数点型である必要があります A1690E : ソースオペランドは、サイズが <min> ~ <max> の符号付き型である必要がありま す A1691E : ソースオペランドは、サイズが <min> ~ <max> の、整数型、浮動小数点型、また は多項式型である必要があります A1692E : ソースオペランドは、サイズが <min> ~ <max> の、符号付き型、符号なし型、ま たは多項式型である必要があります A1693E : ソースオペランドは、サイズが <min> ~ <max> の、符号なし型または浮動小数 点型である必要があります A1694E : 現在の命令セットでは、命令を条件付きにすることはできません 条件付き命令は、指定された命令セットでは使用できません。例えば、命令 MOVEQ は、 IT 命令を使用できるアーキテクチャの ARM コード、および Thumb コードで使用できま す。 A1695E : この命令ではスカラインデクスを使用できません A1696E : 32、64、または 128 ビットのレジスタ式が必要です A1697E : 32 または 64 ビットの VFP レジスタ式が必要です A1698E : 32 ビットの VFP レジスタ式が必要です A1699E : これらのレジスタでは、64 ビットのデータ型は使用できません A1700E : ソースオペランドは、サイズが <min> ~ <max> の整数型である必要があります A1701E : ソースオペランドでは、16 ビットの多項式型は使用できません A1702E : この命令では、レジスタ Dm はスカラにできません A1704E : このデータ型では、レジスタ Dm は D0 ~ D<upper> の範囲内である必要があり ます A1705W : アセンブラが Qm レジスタを D<rnum>[<idx>] に変換しました A1706E : レジスタ Dm はスカラである必要があります A1708E : この命令の第 3 オペランドは、定数式である必要があります A1709E : ARM またはスカラレジスタ式が必要です A1710E : 現在のレジスタと以前のレジスタの差は <diff> である必要があります A1711E : この命令では、レジスタリスト内にスカラレジスタを含めることはできません A1712E : LSB と WIDTH を組み合わせて使用すると、動作が不安定になります A1713E : APSR のフィールド指定子が無効です。APSR_ の後に n、z、c、v、q、g のいずれ かを指定してください A1714E : APSR のフィールド指定子の組み合わせが無効です A1715E : PSR がターゲットアーキテクチャで定義されていません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-116 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1716E : VMOV 命令のデスティネーションは、ARM 整数レジスタ、32 ビット単精度レジスタ、 64 ビットダブルワードレジスタ、または 64 ビットダブルワードスカラレジスタである必要がありま す A1717E : ソースレジスタは、ARM 整数レジスタ、32 ビット単精度レジスタ、または 64 ビットダ ブルワードスカラレジスタである必要があります A1718E : ソースレジスタは、ARM 整数レジスタまたはデスティネーションと同じレジスタである 必要があります A1719W : この PSR 名は今後のリリースで廃止される予定です A1720E : ソースレジスタは、64 ビットダブルワードスカラレジスタである必要があります A1721E : デスティネーションレジスタには、all-lanes 指定子を使用できません A1722E : IT ブロック内ではラベルは使用できません A1723W : __RELOC は廃止される予定です。新しい RELOC ディレクティブを使用してくださ い A1724E : RELOC は、命令やデータ生成ディレクティブの直後にのみ使用できます A1725W : コマンドラインでの 'armasm inputfile outputfile' という形式の使用は、今 後サポートされなくなる予定です A1726W : --max_cache を 8MB 未満にすることは、推奨されません A1727W : 16 ビットの Thumb MOVS 命令の使用によりイミディエートが生成された可能性が あります A1728E : ソースレジスタは、デスティネーションレジスタと同じ型である必要があります A1729E : レジスタリストには、32 ビット単精度レジスタまたは 64 ビットダブルワードレジスタ のみを含めることができます A1730E : これらの命令では、IA または DB アドレシングモードのみを使用できます A1731E : クワッドワードレジスタでは、レジスタリストのインクリメントを 2 以上にすることはでき ません A1732E : レジスタリストには、1 ~ 4 個の連続するダブルワードレジスタを含める必要があり ます A1733E : レジスタリストには 2 個または 4 個のダブルワードレジスタを含める必要がありま す。4 個含める場合は、インクリメントを 2 にすることはできません A1734E : レジスタリストには、インクリメント 1 または 2 の <n> 個のダブルワードレジスタを 含める必要があります A1735E : ポストインデクスオフセットは、ロード/ストアされたバイト数(<n>)と同じにして下さい A1736E : リスト内のレジスタ数と要素数を同じにしてください A1737E : PC や SP はオフセットレジスタとして使用できません A1738E : イミディエート値の大きさが、この操作で対応している範囲を超えました A1739W : 単一の VMOV 命令により定数が生成されました。2 番目の命令は NOP です A1740E : FRAME PUSH ディレクティブや FRAME POP ディレクティブでは、0 未満のバイト数 を指定できません A1741E : 命令を条件付きにすることはできません A1742E : LSL #Imm が必要です ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-117 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1744E : レジスタのアライメントは、16 ~ 256 の範囲内の 2 の累乗にする必要があります A1745W : このレジスタの組み合わせは廃止される予定なので、アークテクチャの今後のリビジ ョンでは機能しない可能性があります この警告は、以下の条件がすべて満たされた場合に生成されます。 • 廃止予定のレジスタの組み合わせを使用している場合。以下に例を示します。 PUSH • • {r0, pc} 32 ビット Thumb 命令をサポートするターゲットアーキテクチャ、つまり ARMv6T2 以 降のターゲットアーキテクチャに対してアセンブルしている場合。 ARM コードにアセンブルしている場合。 注 • • ARM コードではなく Thumb をアセンブルしていて、ターゲットアーキテクチャが ARMv6T2 以降のときには、代わりにエラー A1477E が生成されます。 32 ビット Thumb 命令をサポートしていないアーキテクチャまたはプロセッサに対し て、つまり、ARMv6T2 以前のすべての ARM アーキテクチャに対してアセンブルを 行うときには、デフォルトで、診断は表示されません。 A1746W : この CPU では、命令ストールが正しく診断されない可能性があります アセンブラによって正確にモデル化されていないプロセッサのメッセージ A1563W を有 効にすると、この警告が表示されます。コードを改善するときに、A1563W の出力に頼る ことはできないことを示しています。 警告 A1563W も参照して下さい。 A1753E : メモリバリアのオプションを認識できません A1754E : スカラレジスタの型を変更できません A1755E : このレジスタには、既にスカラインデクスが指定されています A1756E : すべてのレジスタのデータ型を指定する必要があります A1757W : シンボル属性は角括弧内になければなりません。その他の構文は廃止されます A1758W : このディレクティブを使用した複数のシンボルのエクスポートは廃止されます A1759E : 指定されたプロセッサまたはアーキテクチャは Thumb-2EE 命令をサポートしてい ません A1760W : ビルド属性 <from> は '<attr>' です A1761W : <from> の '<diff>' とのビルド属性の差 A1762E : 分岐のオフセット 0x<val> が、16 ビットの Thumb 分岐の範囲外です。32 ビット の Thumb 分岐でエンコードできます。 この問題は、分岐命令へのオフセットが 16 ビットの分岐に収まらない大きさである場合 に、Thumb 用にアセンブルすると発生します。アセンブラに 32 ビット分岐を生成するよ うに指示するために、命令に .W 接尾文字を追加することができます。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-118 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1763W : この命令に IT ブロックが挿入されました このことは、Thumb コードの多くの条件付き命令を使用できるように、アセンブラによっ て IT ブロックが挿入されたことを示しています。以下に例を示します。 MOVEQ r0,r1 この警告はデフォルトではオフになっています。有効にするには、--diag_warning A1763 を使用します。 A1764W : <name> 命令はアーキテクチャ <arch> 以上では廃止されます A1765E : ALIGN のパディング値のサイズは 1、2、または 4 バイトである必要があります この問題は、任意に指定できる padsize 属性が ALIGN ディレクティブで使用され、そ のサイズが不適切であった場合に発生します。整列先のパラメータは参照されません。 パラメータには、2^0 から 2^31 の範囲で、2 の累乗値を指定できます。 A1766W : コードのパディング値のサイズは最低でも <size> バイト必要です。データとして 処理します A1767E : 属性の後に予期しない文字があります A1768E : '=' がありません A1769E : 不正な NEON または VFP システムレジスタ名シンボル A1771E : <exp> ビットのビットパターンが期待される場所の不正な浮動小数点ビットパターン A1772E : デスティネーションは符号付きまたは符号なしの整数型、ソースは 32 ビットまたは 64 ビットの浮動小数点型である必要があります A1773E : 浮動小数点変換は 32 ビット単精度型と 64 ビット倍精度型の間でのみ可能です A1774E : 固定小数点変換は 16 ビットまたは 32 ビットの符号付き型または符号なし型での み可能です A1775E : これらの型の間で変換することはできません A1776E : この演算は 32 ビット単精度浮動小数点型では使用できません A1777E : <n> がシンボル型の範囲外です。値は <min> と <max> の間にある必要があり ます A1778E : <n> がシンボルのバインディングの範囲外です。値は <min> と <max> の間にあ る必要があります A1779E : DCDO は READONLY シンボル '<key>' には使用できません A1780E : 不明な ATTR ディレクティブ A1781E : タグ #<id> は ATTR を使用して設定することはできません A1782E : タグ #<id> は ATTR <cmd> を使用して設定する必要があります A1783E : 属性スコープはラベルかセクションの名前である必要があります A1784W : weak 定義 '<sym>' への参照は再配置されません A1785E : マクロ '<macuse>' が見つかりませんが、'<macdef>' は存在しています ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-119 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1786W : SP を使用するこの命令は廃止される予定なので、アークテクチャの今後のリビジョ ンでは機能しない可能性があります この警告は、以下の条件がすべて満たされた場合に生成されます。 • 廃止予定の方法で SP を明示的に使用している場合。以下に例を示します。 ADD sp, r0, #100 • • 32 ビット Thumb 命令をサポートするターゲットアーキテクチャ、つまり ARMv6T2 以 降のターゲットアーキテクチャに対してアセンブルしている場合。 ARM コードにアセンブルしている場合。 ARM では、対応する Thumb 命令で使用できない ARM 命令での SP の明示的な使用 を廃止する予定です。下位互換性のためにこのような廃止予定のレジスタを ARM 命令 でまだ使用できます。また、アセンブラのコマンドラインオプション -diag_suppress=1786 を使用してこの警告を非表示にできます。ただし、アーキテク チャの今後のリビジョンでは機能しない可能性があるので、コードを変更することをお勧 めします。 サンプルに示されている廃止予定の SP の使用を以下のようなシーケンスに置き換えら れます。 ADD r1, r0, #100 MOV sp, r1 注 • • ARM コードではなく Thumb をアセンブルしていて、ターゲットアーキテクチャが ARMv6T2 以降のときには、代わりにエラー A1477E が生成されます。 32 ビット Thumb 命令をサポートしていないアーキテクチャまたはプロセッサに対し て、つまり、ARMv6T2 以前のすべての ARM アーキテクチャに対してアセンブルを 行うときには、デフォルトで、診断は表示されません。 A1787W : VFP ベクタモードの使用は ARMv7 で廃止される予定です ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-120 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1788W : この命令での PC の明示的使用は廃止される予定なので、アークテクチャの今後 のリビジョンでは機能しない可能性があります この警告は、以下の条件がすべて満たされた場合に生成されます。 • PC を廃止予定の方法で、例えば以下のように明示的に使用した場合。 CMP pc, #1 • • 32 ビット Thumb 命令をサポートするターゲットアーキテクチャ、つまり ARMv6T2 以 降のターゲットアーキテクチャに対してアセンブルしている場合。 ARM コードにアセンブルしている場合。 ARM 命令での PC の明示的な使用は、下位互換性のために現在でも使用できます が、そのほとんどの廃止が予定されています。このメッセージは、アセンブラのコマンドラ インオプション --diag_suppress=1788 を使用すると非表示にできます。ただし、ア ーキテクチャの今後のリビジョンでは機能しない可能性があるので、コードを変更するこ とをお勧めします。 注 • • ARM コードではなく Thumb をアセンブルしていて、ターゲットアーキテクチャが ARMv6T2 以降のときには、代わりにエラー A1477E が生成されます。 32 ビット Thumb 命令をサポートしていないアーキテクチャまたはプロセッサに対し て、つまり、ARMv6T2 以前のすべての ARM アーキテクチャに対してアセンブルを 行うときには、デフォルトで、診断は表示されません。 A1789W : この命令での PC の明示的使用は廃止される予定なので、アークテクチャの今後 のリビジョンでは機能しない可能性があります。ただし、デスティネーションレジスタでは例外で す。 A1790W : ベースレジスタをロードする Thumb LDM でライトバックは無視されます この問題は、ベースレジスタのライトバックを示す感嘆符を誤って追加したことによって 発生します。 以下に例を示します。 LDM r0!, {r0-r4} これは、r0 がベースレジスタであり、デスティネーションレジスタリストにも含まれているた め、正しい命令ではありません。この場合、アセンブラはライトバックを無視して、次のコ ードを生成します。 LDM r0, {r0-r4} A1791W : タグ #<id> の以前の値はオーバーライドされます A1792E : 未定義のビルド属性のタグ A1793E : 変換は 16 ビット浮動小数点と 32 ビット浮動小数点の間でのみ可能です A1794E : 変換演算には 2 つのデータ型が必要です A1795E : ソースおよびデスティネーションベクタには <n> 個の要素を含める必要があります A1796E : レジスタ型はデータ型と互換性がありません A1797E : 指定された FPU は CPU アーキテクチャと互換性がありません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-121 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1798W : 出力は WYSIWYG(<output>)ではありません A1799W : 出力の WYSIWYG プロパティはチェックされていません A1800W : 行に対する出力はありません A1801E : 命令は現在の命令セットでは予測不能です A1803E : 不正なシステム命令名 A1804E : 命令に対する不正な CP14 または CP15 レジスタ名 A1805W : レジスタは読み出し専用です A1806W : レジスタは書き込み専用です A1807W : 命令はターゲットの CPU で NOP として実行されます A1808E : 生成されたオブジェクトファイルは破損している可能性があります(<reason>) A1809W : 命令によって PC は使用前に整列されます。セクションは少なくとも 4 バイト境界 で整列されている必要があります この警告は、以下のすべての条件が満たされた場合に適用されます。これらの条件が すべて満たされた場合、かつ、この命令を含んでいるコードセクションがリンク時に 4 バ イト整列のアドレスに配置されなかった場合、命令は実行時に誤ったアドレスで演算さ れる可能性があります。これは、命令によって PC が使用前に 4 バイト整列したアドレス に整列されることが原因です。 • • • PC 相対オフセットをワード境界で整列された PC を必要とする Thumb 命令で使用 している この命令を含んでいるコードセクションに 4 バイト以下の境界整列が使用されている 命令がリンク時に再配置されなかった(アセンブラが生成する再配置が原因) 以下の例では、セクション内の整列が 2 バイトで行われているためこの警告によって診 断された Thumb 内の LDR 命令を示します。 AREA ||.text||, CODE, READONLY, ALIGN=1 THUMB LDR r0, [pc, #8] ; gives warning A1809W A1810E : ベースレジスタのライトバック値が不明確です。'[rn,#n]!' または '[rn],#n' 構文を使用してください A1811E : フィル値のサイズは 1、2、または 4 バイトであると同時に、フィルサイズの因数であ る必要があります。 A1812W : ARM 命令と Thumb 命令のそれぞれ逆の命令セットでは命令をアセンブルできま せん A1813W : 16 ビットの命令が使用された可能性のある箇所で 32 ビットの命令が使用されまし た A1814E : 出力ファイルがありません A1815E : SHT_ARM_EXIDX セクションには、リンク順序の依存関係が設定されている必要が あります A1816E : CODE16 では不明なオペコード '<name>' ですが、THUMB には存在します。 A1817W : ATTR タグ #<id> 設定は <scope> で無視されます A1818W : ATTR COMPAT フラグ <flag> とベンダ '<vendor>' の設定は、<scope> で無 視されます ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-122 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1819W : タグ #<id> と互換性のある ATTR 設定は、<scope> で無視されます A1820E : レジスタとプロセッサモードが命令に対して有効ではありません A1846E : CPSR または SPSR に無効なフィールドが指定されました: 少なくとも c、x、s、ま たは f のうちいずれかが直後に続く必要があります A1847E : 再配置を 2 つ以上必要とする式は使用できません この問題は、ARM 命令のアセンブリ時に、他の領域のデータにアクセスしようとすると、 発生することがあります。例えば、 LDR r0, [pc, #label - . - 8] またはこれと同等の LDR r0, [pc, #label-{PC}-8] で、label が別の AREA で定義されている場合です。 コードを、次のように、より単純で同等の構文を使うように変更して下さい。 LDR r0, label このようにすれば、label が同じ領域にあっても、別の領域にあっても、正しく動作しま す。 A1848W : IT ブロックの状態の変化 A1875E : レジスタ Rn はこの命令の R0 ~ R7 である必要があります 指定されたレジスタが R0 ~ R7 の範囲内になるように変更します。 A1903E : 最初のパスに行がありません。アセンブルできません 命令や指令が、アセンブラのパス 2 に表示されてパス 1 では表示されない場合に発生 します。 以下の例は、行がパス 1 に表示されない場合を示しています。 AREA x,CODE [ :DEF: foo num EQU 42 ; Assembler does not see this line during pass 1 because ; foo is not defined at this point during pass 1 ] foo DCD num END A1907W : このシンボルのテストは確認済みです。これは、第 2 パスのエラーの原因となる可 能性があります。 この診断はデフォルトでは非表示になっています。A1903E、A1908E、または A1909E エラーが発生する可能性がある状況を特定するには、これを有効にして下さい。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-123 2 アセンブラのエラーおよび警告 2.1 armasm のエラーおよび警告メッセージのリスト A1908E : ラベル '<name>' の値が一致していません: パス 1 では <val1>、パス 2 で は <val2> でした 以下の例では、パス 1 では x の値が 0x0004+r9 、パス 2 では x の値が 0x0000+r0 であるため、このエラーが生成されます。 map 0, r0 if :lnot: :def: sym map 0, r9 field 4 endif x field 4 sym LDR r0, x A1909E : 第 2 パスに行がありません。アセンブルできません 命令や指令が、アセンブラのパス 1 に表示されてパス 2 では表示されない場合に発生 します。 以下の例は、行がパス 2 に表示されない場合を示しています。 AREA x,CODE [ :LNOT: :DEF: foo MOV r1, r2 ; Assembler does not see this line during pass 2 because ; foo is already defined ] foo MOV r3, r4 END A1916E : 不明な組み込み変数 '<name>' A1993E : この演算子では <objfmt> でサポートされない再配置が必要です A1994E : このディレクティブは、<objfmt> ではサポートされていません A1995E : weak 定義は、<objfmt> ではサポートされていません A1996E : TYPE は、IMPORT の WEAK の後以外では使用できません A1997E : weak 外部シンボルの予想されるエイリアス A1998E : Comdat 関連エリアには Comdat 関連セレクション型が必要です A1999E : Comdat 関連エリアを別の Comdat 関連エリアにすることはできません ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 2-124 第3章 リンカのエラーおよび警告 リンカ (armlink)のエラーおよび警告メッセージについて説明します。 このドキュメントは、次で構成されています。 • • ARM DUI0496JJ 3.1 armlink のエラーおよび警告メッセージの非表示(3-126 ページ). 3.2 armlink のエラーおよび警告メッセージのリスト(3-127 ページ). Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-125 3 リンカのエラーおよび警告 3.1 armlink のエラーおよび警告メッセージの非表示 3.1 armlink のエラーおよび警告メッセージの非表示 コマンドラインオプションを使用して、リンカで生成される一部の診断メッセージを非表示または ダウングレードできます。 リンカのすべての警告は、コンパイラの警告の場合と同様に、--diag_suppress を使って非表 示にすることができます。以下に例を示します。 --diag_suppress 6306 一部のエラー(L6220E、L6238E、L6784E など)は、次のようにして警告に降格できます。 --diag_warning ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-126 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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 以降では、armlink は ARMCC5LIB 環境変数 を設定する必要はありません。 • エラー:armlink:L6002:ファイル errors=ver.txt を開けませんでした errors=ver.txt の前に二重ダッシュ(--)がないことが原因です。オプションに接 頭文字 -- または - を付けないと、リンカはオプションを入力ファイルとして扱い、指 定されたすべてのファイルをロードすることができなくなるので、リンク手順が失敗し ます。 リンカのマニュアルの以下のセクションを参照して下さい。 --libpath=pathlist。 『スタート ガイド』の以下のセクションを参照して下さい。 ツールチェーンの環境変数。 L6003U : ファイル <filename> に書き込むことができませんでした。 指定されたファイルを読み出すとき、開くとき、またはそのファイルに書き込むときに、フ ァイル I/O エラーが発生しました。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-127 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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 属性にオーバーアライメント値が指定 されていません。 リンカのマニュアルの以下のセクションを参照して下さい。 入力セクション記述の構文 実行領域と入力セクションのオーバーアライメント L6007U : ファイル <filename> の形式を認識できません。 リンカが認識できる形式は、オブジェクトファイルでは ELF、ライブラリファイルでは AR です。指定されたファイルは、破損しているか、リンカが認識できない形式のファイルで す。 L6008U : メンバ <mem>(<lib>)の形式を認識できません。 リンカが認識できるライブラリメンバオブジェクトのファイル形式は、ELF です。指定され たライブラリメンバは、破損しているか、リンカが認識できない形式のファイルです。 L6009U : ファイル <filename>: エンディアンが一致しません。 指定されたファイルまたはオブジェクトのエンディアンが他の入力ファイルのエンディア ンと一致しませんでした。リンカは 1 つのリンク手順内でビッグエンディアンとリトルエン ディアンのいずれのオブジェクトの入力も処理できますが、両方が混在する入力は処理 できません。 L6010U : ファイル <filename> に対して stderr を再オープンできませんでした: <reason> 指定されたファイルを読み出すとき、開くとき、またはそのファイルに書き込むときに、フ ァイル I/O エラーが発生しました。 L6011U : 無効な整数定数:<number>. この問題は、不正な整数定数を指定すると発生します。整数は、接頭文字 &、0x、また は 0X を付けて、16 進形式で入力できます。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-128 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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 は、互換性のない情報を生成する場合があるためです。 この問題を解決するには、ar を armar に置き換えて、同じコマンドライン引数を使用し ます。また、エラーから回復するために、 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>)内)に無効な オフセットが含まれています。 この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ 下さい。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-129 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6029U : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)に無効ま たは不明なシンボルが関係しています。 再配置が以下のいずれかのシンボルに関係しています。 • • 無効か、オブジェクトシンボルテーブルに存在しない 再配置で使用するのに適していない この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ 下さい。 L6030U : 領域 <regname> のオーバーアライメント <overalignment> は、4 以上で 2 の累乗である必要があります リンカのマニュアルの以下のセクションを参照して下さい。 実行領域の属性。 入力セクション記述の構文 実行領域と入力セクションのオーバーアライメント 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>)が関係しています。 マッピングシンボルに関係している再配置は使用できません。この問題は、コンパイラの エラーを示している場合があります。購入元にお問い合わせ下さい。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-130 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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 における GNU ld スクリプトのサポート L6064E : ELF 実行可能ファイル <filename> がコマンドラインで入力として指定されました 原因として、-c コンパイラオプションを指定せずに、コンパイラからオブジェクトファイル を出力として指定したことが考えられます。以下に例を示します。 armcc file.c -o file.o armlink file.o -o file.axf コンパイラのドキュメントの以下のセクションを参照して下さい。 -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 回だけ使用できるセクションです。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-131 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6195E : '<attr1>' と '<attr2>' の両方を領域 <regname> に対して指定することは できません リンカのマニュアルの以下のセクションを参照して下さい。 ロード領域の属性。 実行領域の属性。 ロード領域と実行領域のアドレス属性。 ロード領域のアドレス属性の継承規則。 実行領域のアドレス属性の継承規則。 RELOC アドレス属性の継承規則。 L6200E : シンボル <symbolname> が <object1> と <object2> によって複数回定義さ れています。 この問題の一般的な例には、以下があります。 シンボル __stdout が、retarget.o と stdio.o によって複数回定義されています。 これは、__stdout の競合する 2 つの定義が retarget.o と stdio.o にあるというこ とを意味しています。 retarget.o 内の定義は、ユーザ自身が記述したものです。 stdio.o 内の定義は、デフォルトの実装であり、誤ってリンクされた可能性があります。 stdio.o には、多くのシンボル定義と、ファイル関数(fopen、fclose、 fflush など) の実装が含まれています。 stdio.o は、いくつかの未解決の参照を解決するためにリンクされています。 stdio.o がリンクされている理由を特定するには、 --verbose リンクオプションスイッ チを使う必要があります。以下に例を示します。 armlink [... your normal options...]--verbose --list err.txt その後、err.txt を調べて、リンカが何のために何をどこからリンクしているかを詳しく 確認します。 以下の作業が必要になる場合もあります。 • • fopen、fclose、fflush などの呼び出しを削除する。 関数の _sys_xxxx ファミリを再実装する。 『ARM C および C++ ライブラリと浮動小数点サポートユーザガイド』の以下のセクション を参照して下さい。 C および C++ ライブラリでの入出力関数のカスタマイズ L6201E : オブジェクト <objname> に複数のエントリセクションが含まれています。 入力オブジェクトで、エントリポイントを複数指定しています。使用するエントリポイントを 選択するには、--entry コマンドラインオプションを使用して下さい。 リンカのマニュアルの以下のセクションを参照して下さい。 --entry=location。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-132 3 リンカのエラーおよび警告 3.2 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 コマンドラインオプションで指定した、イメージのエントリポイントは、イメージの ルート領域内の有効な命令に対応している必要があります。 リンカのマニュアルの以下のセクションを参照して下さい。 --entry=location。 L6205E : エントリポイント(<address>)は、ARM 命令用にワード境界で整列している必要が あります。 このメッセージは、 --entry コマンドラインオプションで指定したイメージのエントリポイ ントが、ワード境界で整列されていないため、表示されます。例えば、--entry=0x8000 ではなく、 --entry=0x8001 と指定した場合です。 リンカのマニュアルの以下のセクションを参照して下さい。 --entry=location。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-133 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6206E : エントリポイント(<address>)がイメージの外部にあります。 --entry コマンドラインオプションで指定したイメージのエントリポイントが、イメージの 外部にあります。例えば、次のように、エントリアドレスとして 0x8000 ではなく 0x80000 を指定した場合です。 armlink --entry=0x80000 test.o -o test.axf リンカのマニュアルの以下のセクションを参照して下さい。 --entry=location。 L6208E : --entry コマンドの無効な引数:'<arg>' リンカのマニュアルの以下のセクションを参照して下さい。 --entry=location。 L6209E : --entry に対して指定された無効なオフセット定数(<arg>) リンカのマニュアルの以下のセクションを参照して下さい。 --entry=location。 L6210E : イメージに複数のエントリポイントを含めることはできません (<address1>,<address2>) 1 つまたは複数の入力オブジェクトで、イメージのエントリポイントを複数指定していま す。使用するエントリポイントを選択するには、--entry コマンドラインオプションを使用 して下さい。 リンカのマニュアルの以下のセクションを参照して下さい。 --entry=location。 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 つしか使用できません。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-134 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6215E : --First/--Last に対するシンボルの選択があいまいです。シンボル <symbol> に複数の定義があります。 リンカのマニュアルの以下のセクションを参照して下さい。 --first=section_id。 --last=section_id。 L6216E : 連続しないセクション <secname> に対してベース/リミットシンボルを使用すること はできません コンパイラによって生成される例外処理インデクステーブルは、セクション名 が .ARM.exidx になります。詳細については、「Exception Handling ABI for the ARM Architecture」 を参照して下さい。 リンク時には、これらのテーブルは同じ実行領域に連続して配置されていなければなり ません。スキャッタファイル内で特定のセレクタパターンを使ってこれらのセクションを明 示的に連続しないように配置している場合は、このエラーメッセージが発生する可能性 が高くなります。以下に例を示します。 LOAD_ROM 0x00000000 { ER1 0x00000000 ら * (+RO) } ER2 0x01000000 { ER3 +0 { * (+RW, +ZI) } } { file1.o (+RO) ; C++ ソースか file2.o (+RO) ; C++ ソースから } 例外処理インデクステーブルが file1.o と file2.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++ ライブラリと浮動小数点サポートユーザガイド』の以下のセクション を参照して下さい。 C++ の初期化、構築、および破棄 L6217E : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)は <symbol> に関係しています。インポートされたシンボルへの R_ARM_SBREL32 再配置 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-135 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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() 関数が含まれていないこ とをレポートしています。 『移行と互換性ガイド』の以下のセクションを参照して下さい。 RVCT v2.2 と RVCT v3.0 の間での C および C++ ライブラリの変更点。 L6219E : <type> セクション <object1>(<section1>) 属性 {<attributes>} は、隣 接するセクション <object2>(<section2>) と互換性がありません。 このエラーは、リンカによって使用されているデフォルトの順序付け規則(RO、次に RW、次に ZI)の違反があった場合に発生します。一般的には、例えばスキャッタファイ ルで +FIRST または +LAST を使って、RW が RO の前になるように強制しようとした場 合に発生します。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-136 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6220E : <type> 領域 <regionname> のサイズ (<size> バイト) が、制限値 (<limit> バイト) を超えています。 例: Execution の領域 ROM_EXEC のサイズ(4208184 バイト)が制限(4194304 バイト)を超えています。 この問題は、領域がスキャッタファイルで最大長を指定されたものの(指定は任意)、領 域内のコードまたはデータのサイズが指定された制限を超えている場合に発生します。 このエラーは、--diag_suppress 6220 で非表示にすることができます。 例えば、スキャッタファイルで ALIGN ディレクティブと共に .ANYnum セレクタを使用し て、リンカにパディングを挿入させる場合に、このエラーが発生する可能性があります。 この問題を解消するには、 --any_contingency オプションを使用します。 リンカのマニュアルの以下のセクションを参照して下さい。 .ANY モジュールセレクタによる未割り当てセクションの配置。 --any_contingency。 --diag_suppress=tag[,tag,...]。 L6221E : <type1> の領域 <regionname1> (<addrtype1>、範囲 [<base1>,<limit1>)) が <type2> の領域 <regionname2> (<addrtype2>、範囲 [<base2>,<limit2>)) と重複しています。 この問題は、スキャッタファイルが正しくないことを表しています。非 ZI セクションは、一 意のロードアドレスを持っている必要があり、多くの場合は一意の実行アドレスも持って いる必要があります。このエラーの原因として、相対ベースアドレスを持つロード領域 LR2 がロード領域 LR1 の ZI 実行領域の直後に配置されていることが考えられます。 RVCT v3.1 以降、リンカによって領域が ZI 実行領域に割り当てられなくなりました。 リンカのマニュアルの以下のセクションを参照して下さい。 相対ベースアドレスのロード領域と ZI 実行領域を含んだスキャッタファイル。 L6222E : 部分的にリンクされたオブジェクトに複数の ENTRY セクション(<e_oname> (<e_sname>)および <oname>(<sname>))を含めることはできません。 複数のオブジェクトが部分的にリンクされた 1 つのオブジェクトになっている場合、全オ ブジェクトのうちの 1 つのセクションだけがエントリポイントを持つことができます。 注 この場合は、リンカオプション --entry を使ってエントリポイントの 1 つを選択すること はできません。 L6223E : <objname>(<secname>)のあいまいなセレクタが、実行領域 <region1> および <region2> で見つかりました。 この問題は、スキャッタファイルで <objname>(<secname>)を複数の実行領域に配置 するように指定した場合に発生します。ワイルドカード(*)を使用している場合に誤って 発生することもあります。この問題を解決するには、スキャッタファイルでの選択をより限 定的に行います。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-137 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6224E : <objname>(<secname>)を実行領域内に配置できませんでした。 この問題は、リンカが入力セクションをスキャッタファイルのいずれのセレクタとも一致さ せられなかった場合に発生します。スキャッタファイルを修正して、適切なセレクタを追 加する必要があります。 リンカのマニュアルの以下のセクションを参照して下さい。 リンカによるセクションの配置 L6225E : 数値 <str...> が長すぎます。 L6226E : 領域 <regname> のベースアドレスがありません。 L6227E : --split を使用せずに –reloc と --rw-base を併用することはできません。 リンカのマニュアルの以下のセクションを参照して下さい。 --reloc。 --rw_base=address。 --split。 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 にす ることはできません。 リンカのマニュアルの以下のセクションを参照して下さい。 FIRST 属性と LAST 属性を使用したセクションの配置。 入力セクション記述の構文 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-138 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6236E : セレクタと一致するセクションがありません。FIRST/LAST になるセクションがありま せん。 スキャッタファイルでは +FIRST または +LAST になるセクションが指定されていますが、 そのセクションが存在しないか、リンカがそのセクションを使われないと判断して削除しま した。どのオブジェクトがプロジェクトから削除されたかを表示するには、リンカオプション --info unused を使用して下さい。例: ROM_LOAD 0x00000000 0x4000 { +First) << ここでエラー +ZI) } } ROM_EXEC 0x00000000 { vectors.o (Vect, * (+RO) } RAM_EXEC 0x40000000 { * (+RW, 次のような対処方法があります。 • • • リンカコマンドラインで vectors.o が指定されていることを確認します。 --keep vectors.o を使ってリンクし、これをリンカが削除しないようにします。また は、--no_remove を使って、この最適化全体をオフにします。ARM ではこれを推 奨しません。 例えば、次のように ENTRY ディレクティブを vectors.s に追加して、ここがアプリケ ーションのエントリポイントであることをリンカに示すことをお勧めします。以下に例を 示します。 AREA Vect, CODE ENTRY ; これをエントリポイントとして定義 Vector_table ... 次に、--entry Vector_table を使ってリンクし、コードの実際の開始位置を定義 します。 リンカのマニュアルの以下のセクションを参照して下さい。 FIRST 属性と LAST 属性を使用したセクションの配置。 --entry=location。 --info=topic[,topic,...]。 --keep=section_id。 --remove, --no_remove。 入力セクション記述の構文 アセンブラのドキュメントの以下のセクションを参照して下さい。 ENTRY。 L6237E : <objname>(<secname>)に整列されていないデータへの再配置が含まれていま す。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-139 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6238E : <objname>(<secname>)に '<attr1>' 関数から '<attr2>' 関数 <sym> へ の無効な呼び出しが含まれています。 このリンカエラーは、オブジェクトコード内でスタックのアライメントの競合が検出された場 合に発生します。 『ARM アーキテクチャ用 ABI』では、コードがインタフェースで 8 バイト 境界のスタック整列を保持することを推奨しています。これによって、8 バイト境界で整 列されている double および long long データ型にアクセスする LDRD および STRD 命令の効率的な使用が可能になります(ARM アーキテクチャ 5TE 以降)。 ~PRES8 や REQ8 のようなシンボルは、以下のように、オブジェクトのビルド属性です。 • • • 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} ; 偶数のレジスタをプッシュ ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-140 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト • すべての命令が 8 バイト境界のスタック整列を保持する場合、アセンブラが自動的 にオブジェクトを PRES8 属性でマークするので、各アセンブラファイルの先頭に PRESERVE8 ディレクティブを追加する必要がなくなります。 従来のオブジェクトまたはライブラリが、ソースコードがなかったり、資格や認証の問 題などのために再ビルドできない場合は、そのオブジェクトを調べて、8 バイト境界の 整列が保持されるかどうかを確認する必要があります。 オブジェクトコードを逆アセンブルするには、fromelf -c を使って下さい。ADS 1.1 以降でコンパイルされた C/C++ コードは、通常、8 バイト境界の整列を保持します が、アセンブルされたコードは保持しません。 オブジェクトが確実に 8 バイト境界の整列を保持している場合は、リンカコマンドライ ンで --diag_suppress 6238 を使って、リンカエラー L6238E を非表示にすること ができます。 このエラーメッセージを利用すると、オブジェクトが PRES8 であることを確実にチェッ クできます。 リンカ警告 L6306W は、--diag_suppress 6306 で非表示にできます。 以下の FAQ を参照して下さい。 8 バイト境界のスタック整列 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 は非インターワークを意味しています。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-141 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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 オプションを使用してプロジェクト全体を 再ビルドすることを推奨します。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-142 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 以下の FAQ を参照して下さい。 Are legacy objects and libraries compatible with my project? L6243E : セレクタは削除された未使用のセクションとのみ一致します。FIRST/LAST になるセ クションがありません。 このセレクタと一致するすべてのセクションが、使用されないため、イメージから削除され ました。詳細については、--info unused を使用して下さい。 L6244E : <type> の領域 <regionname>のアドレス(<addr>)が、<align> バイト境界に 整列されていません。 L6245E : 要求された ZI セクション '<name>' を作成できませんでした。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-143 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6248E : <objname>(<secname>)(<attr1>、領域 '<r1>' 内)で、<rtype> 再配置を <symname>(<attr2>、領域 '<r2>' 内)に対して指定することはできません。 このエラーは、位置非依存(PI)コードをビルドしようとすると発生する場合があります。以 下のサンプルコードを考えてみます。 #include <stdio.h> char *str = "test"; int main(void) { ("%s",str); } printf これを以下のようにコンパイルおよびリンクしてみます。 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) { ("%s",str); } • printf 以下のようにグローバルポインタの代わりにローカルポインタを使用します。 #include <stdio.h> int main(void) { ("%s",str); } char *str = "test"; printf 注 以下のようなポインタ配列を使用する場合 char * list[] = {"zero", "one", "two"}; リンカは、配列内の各要素に対して別々のエラーを報告します。この場合、リストに対し て、以下のような、最初の次元に配列内の要素の数があり、2 番目の次元に配列内の要 素の最大サイズがある 2 次元配列を宣言することをお勧めします。 char list[3][5] = {"zero", "one", "two"}; 以下のように printf() ステートメントを変更する必要があります。 printf("%s", list[1]); コンパイラエラー番号 1359 を参照して下さい。 L6249E : エントリポイント(<address>)が複数のセクション内にあります。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-144 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6250E : オブジェクト <objname> に、特別なシンボル <symbol> の不正な定義が含まれ ています。 L6251E : オブジェクト <objname> に、特別なシンボル <symbol> への不正な参照が含ま れています。 L6252E : --xreffrom/--xrefto コマンドの無効な引数:'<arg>' L6253E : 無効な SYMDEF アドレス:<number>. L6254E : 無効な SYMDEF 型:<type>. symdefs ファイルの内容が無効です。 リンカのマニュアルの以下のセクションを参照して下さい。 symdefs ファイルの形式 L6255E : ファイル <filename> を削除できませんでした:<reason> 指定されたファイルを削除しようとしたときに、I/O エラーが発生しました。このファイルが 読み出し専用であるか、見つかりませんでした。 L6257E : <object>(<secname>)をオーバーレイされた実行領域 '<ername>' に割り当て ることができません。 このメッセージは、スキャッタファイルに問題があることを示しています。 リンカのマニュアルの以下のセクションを参照して下さい。 スキャッタファイル構文。 L6258E : エントリポイント(<address>)がオーバーレイされた実行領域内にあります。 このメッセージは、スキャッタファイルに問題があることを示しています。 リンカのマニュアルの以下のセクションを参照して下さい。 スキャッタファイル構文。 L6259E : 予約されているワード '<name>' を <type> の領域名として使用することはでき ません。 <name> は予約語なので、領域には別の名前を選択して下さい。 L6260E : 同じ名前(<regionname>)を持つ複数のロード領域を使用することはできません。 このメッセージは、スキャッタファイルに問題があることを示しています。 リンカのマニュアルの以下のセクションを参照して下さい。 スキャッタファイル構文。 L6261E : 同じ名前(<regionname>)を持つ複数の実行領域を使用することはできません。 このメッセージは、スキャッタファイルに問題があることを示しています。 リンカのマニュアルの以下のセクションを参照して下さい。 スキャッタファイル構文。 L6263E : <regionname> の <addr> アドレスを <regtabregionname> 内の <pi_or_abs> 領域テーブルから指定することはできません。 Region Table には、ZI をコピー、伸張、または作成する C ライブラリ初期化コードによっ て使用される情報が含まれています。このエラーメッセージは、Region Table で記述で きないイメージ構造がスキャッタファイルで指定されている場合に生成されます。 このエラーメッセージは、多くの場合、PI と非 PI ロード領域が同じイメージ内に混在して いるときに表示されます。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-145 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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> の名前を変更することはできません。 リンカのマニュアルの以下のセクションを参照して下さい。 RENAME ステアリングファイルコマンド。 L6281E : <sym1> と <sym2> の両方の名前を <newname> に変更することはできません。 リンカのマニュアルの以下のセクションを参照して下さい。 RENAME ステアリングファイルコマンド。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-146 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6282E : <sym> の名前を <newname> に変更することはできません。これは、その名前のグ ローバルシンボルが存在しているためです(<obj> 内で定義)。 リンカのマニュアルの以下のセクションを参照して下さい。 RENAME ステアリングファイルコマンド。 L6283E : オブジェクト <objname> に、シンボル <symbolname> への不正なローカル参照 が含まれています。 ローカルシンボルは、常にオブジェクト自体の内部で定義されるため、オブジェクトに は、ローカルシンボルへの参照を含めることはできません。 L6285E : 再配置不能なロード領域 <lr_name> に R-Type のダイナミックな再配置が含ま れています。最初の R-Type のダイナミックな再配置が、<object>(<secname>)内のオフセ ット 0x<offset>で見つかりました。 このエラーは、2 つのセグメントが実行時に離れた場所に移動される場合に、各セグメン ト間に PI 参照があると発生します。リンカが 2 つのセクションを実行時に離れた場所に 移動できると判断した場合、リンカはセクションが静的にリンクされたアドレスから移動さ れても解決できる再配置(R-Type の再配置)を生成します。しかし、PI 領域には位置に 依存してはならないという制約があり、他のセクションと関係がある再配置を持つことは できないため、リンカはこの再配置に失敗します(エラー L6285E を生成)。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-147 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6286E : 再配置 #<rel_class>:<rel_number>(<objname>(<secname>)内)に {symname|%s} が関係しています。値(<val>)が(<rtype>)の範囲(<range>)を超えていま す。 このエラーは、通常、以下の状況下で発生します。 • • 手書きのアセンブリコードで、シンボルにオフセットを保持するための命令オペコー ド内のビット数が不足している場合。 例えば、 オフセット範囲が ±ARM 状態の LDR または STR 命令で 4095 の場合。 リンカがイメージの大きなコードセクションの周りにベニアを配置することが難しい場 合。 リンカは、非常に大きなセクションの近くにベニアを配置する場合、大きなセクション の前と後のどちらにベニヤを配置するかを決める必要があります。リンカがベニアを 配置してから、さらにベニアを配置する必要がある場合は、元のベニヤとそのターゲ ット間に配置されます。これにより、ベニアとそのターゲットとの間の距離が離れま す。 リンカは自動的にベニアとそのターゲット間の距離を少し離すことができます。ただ し、元のベニヤとそのターゲット間に配置されるベニアの数が多いと、ターゲットが範 囲外に移動する可能性があります。この場合は、リンカはメッセージ L6286E を生成 します。 この問題の回避策として、リンカが多くのベニアを配置している領域から、大きなコー ドセクションの距離を離すことをお勧めします。これは、大きなセクションをそれ自体 の領域に配置するか、スキャッタロード記述ファイルの +FIRST ディレクティブを使用 して位置する領域に最初に配置することによって実行できます。 以下に例を示します。 LOAD 0x0A000000 0x1000000 { ROM1 +0x0 { *(+RO) } } ROM1 +0x0 } } { *(+RO) } これを次のように変更します。 LOAD 0x0A000000 0x1000000 { +0x0 { large.o (+RO) • ROM1A .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 DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-148 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト このエラーを解決するには、分割されている実行領域間にメモリがある場合 は、.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 の範 囲内)にコードを配置して下さい。 それ以外の場合は、最新のパッチがダウンロードからインストールされていることを確認 します。 詳細については、以下を参照して下さい。 「What does "Error: L6286E: Value out of range for relocation" mean?」 http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038-/index.html L6287E : 不正な配列制約(<align>)が <objname>(<secname>)に対して指定されていま す。 不正なアライメントが ELF オブジェクトに対して指定されました。 L6291E : 固定実行領域 <ername> のロードアドレス <addr> を割り当てられません。ロー ドアドレスは、使用できる次のロードアドレス <load_addr> 以上である必要があります。 リンカのマニュアルの以下のセクションを参照して下さい。 実行領域の属性。 L6292E : 不明な属性 '<attr>' が領域 <regname> に対して指定されていますが、無視 されます。 このエラーメッセージは、FIXED 属性を持つ実行領域に固有のものです。FIXED は、ロ ードアドレスを実行アドレスと同じにすることを意味します。リンカがこのようにできるの は、実行アドレスがロード領域内で次に使用可能なロードアドレス以上である場合だけ です。 リンカのマニュアルの以下のセクションを参照して下さい。 ルート実行領域と FIXED 属性。 実行領域の属性。 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>)より大きくなっています。 この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ 下さい。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-149 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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> にメンバが含まれていません。 リンカコマンドラインでライブラリが指定されましたが、ライブラリ内にメンバがありません でした。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-150 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6310W : ARM ライブラリが見つかりません。 この問題は、多くの場合、--libpath の引数が正しくないか、定義されている場合は、 環境変数 ARMCC5LIB が無効な値であることが原因です。 --libpath リンカオプションまたは ARMCC5LIB 環境変数のいずれかを使って、適切な パスを設定して下さい。Windows インストールのデフォルトのパスは、次のようになりま す。 install_directory\lib このパスに、以下のものが含まれていないことを確認して下さい。 • • • \armlib \cpplib 末尾の円記号(\)。これらは、リンカによって自動的に追加されます。 リンカがライブラリを探す場所を表示するには、--verbose または --info libraries を使用します。 リンカのマニュアルの以下のセクションを参照して下さい。 --info=topic[,topic,...]。 --libpath=pathlist。 --verbose。 『スタート ガイド』の以下のセクションを参照して下さい。 ツールチェーンの環境変数。 L6311W : シンボル <symbol>(<objname> から参照)が定義されていません。 L6218E を参照して下さい。 L6312W : <type> 領域の説明(領域 <region>)が空白です。 L6313W : 現在は <oldname> をセクションセレクタとして使用することはできません。代わりに <newname> を使用して下さい。 例えば、スキャッタファイルで IWV$$Code を使用することはできません。IWV$$Code を Veneer$$Code と置き換えて下さい。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-151 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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) と して指定する必要があります。 リンカのマニュアルの以下のセクションを参照して下さい。 特定アドレスへの関数とデータの配置方法。 特定のアドレスに __at セクションの配置。 L6315W : オブジェクト <objname> 内の複数のビルド属性シンボルは無視されます。 オブジェクトには、最大で 1 つの絶対的な BuildAttribute$$... シンボルを含める ことができます。オブジェクトシンボルテーブルの、このような最初のシンボルだけがリン カに認識されます。後のすべてのシンボルは、無視されます。 L6316W : セクション <sec_no> のオブジェクト <objname> 内の複数のビルド属性シンボル は無視されます オブジェクトには、特定のセクションに適用される、最大で 1 つの BuildAttribute$ $... シンボルを含めることができます。オブジェクトシンボルテーブルの、このような最 初のシンボルだけがリンカに認識されます。後のすべてのシンボルは、無視されます。 L6317W : <objname>(<secname>)は、'<attr1>' 関数 <sym> のアドレスを使用できませ ん。これは、イメージに '<attr2>' 関数が含まれているためです。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-152 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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> 属性は無視されます。 この属性は、実行領域のみに適用されます。ロード領域に対して指定された場合、リン カはこの属性を無視します。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-153 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6325W : ベースアドレスからの +offset を使用する <attr> 属性が領域 <regname> に対して指定されていますが、無視されます。 この属性は、+offset 形式のベースアドレスを使用する領域には適用されません。 +offset 形式を使用する領域に対して指定された場合、リンカはこの属性を無視しま す。 +offset 形式のベースアドレスを使用する領域は、 PI、RELOC、および OVERLAY 属性 を以下のいずれかから継承します。 • • 記述内の前の領域。 ロード領域内の最初の実行領域である場合は、親ロード領域。 リンカのマニュアルの以下のセクションを参照して下さい。 ロード領域のアドレス属性の継承規則。 実行領域のアドレス属性の継承規則。 RELOC アドレス属性の継承規則。 L6326W : 非ルート実行領域 <ername> の ZEROPAD 属性は無視されます。 ZEROPAD は、ルート実行領域のみに適用されます。ルート領域は、その実行アドレスが ロードアドレスと同じである領域です。そのため、実行時に移動やコピーが必要ありませ ん。 リンカのマニュアルの以下のセクションを参照して下さい。 実行領域の属性。 L6329W : パターン <module>(<section>)は、削除された未使用のセクションとのみ一致し ます。 このパターンと一致するすべてのセクションが、使用されないため、イメージから削除さ れました。詳細については、--info unused を使用して下さい。 リンカのマニュアルの以下のセクションを参照して下さい。 未使用セクションの削除 --info=topic[,topic,...] L6330W : シンボル <symbol>(<objname> から参照)が定義されていません。未使用のセク ションが削除されました。 これは、未使用のセクション内のベースシンボルとリミットシンボルが参照されていたこと を意味しています。詳細については、--info unused を使用して下さい。 例えば、コードとデータを RVCT 2.1 以降のバージョンで配置するためにスキャッタファ イルを使用する場合は、スキャッタファイルにリンカ生成テーブル ZISection$$Table が含まれると、リンカによって、このエラーが表示されます。RVCT 2.1 で導入された新し い領域テーブルの形式には、ZISection$$Table が含まれません。 リンカのマニュアルの以下のセクションを参照して下さい。 未使用セクションの削除 --info=topic[,topic,...]。 L6331W : パターン <pat> と一致する有効なグローバルシンボルがありません。 L6332W : シンボル <sym1>(<obj1> から参照)が定義されていません。シンボル <sym2> に解決されました。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-154 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6334W : 領域 <regname> のオーバーアライメント <overalignment> は負にできませ ん。 リンカのマニュアルの以下のセクションを参照して下さい。 実行領域と入力セクションのオーバーアライメント L6335W : <objname>(<secname>)内の ARM インターワーキングコードに、ARM 非インター ワーキングコードに対する無効な末尾の呼び出しが含まれている可能性があります。 コンパイラは、コードサイズとパフォーマンスを向上させるために、末尾呼び出しの最適 化を行うことができます。しかし、アーキテクチャ 4T コードでは、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 形式のアドレシングを使用している場合に、親ロード領域または前の実行 領域から属性を継承するときだけです。 リンカのマニュアルの以下のセクションを参照して下さい。 実行領域の属性。 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> と互換性がありません。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-155 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6370E : CPU <cpu> は FPU <fpu> と互換性がありません リンカのマニュアルの以下のセクションを参照して下さい。 --cpu=name。 --fpu=name。 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 式でのみ使用できます リンカのマニュアルの以下のセクションを参照して下さい。 ScatterAssert 関数とロードアドレスに関連する関数。 L6388E : 行 <line> で ScatterAssert 式 <expr> のエラーが発生しました リンカのマニュアルの以下のセクションを参照して下さい。 ScatterAssert 関数とロードアドレスに関連する関数。 L6389E : 行 <line> のロード領域 <name> が未完了で、領域の長さに依存する演算を使 用できません L6390E : 条件演算子 (expr) ?行 <line> の(expr):(expr)に(expr)がありません。 リンカのマニュアルの以下のセクションを参照して下さい。 スキャッタファイル内の式の評価について。 スキャッタファイル内の式の規則。 L6404W : 実行領域 <name> には、EMPTY、ZEROPAD および PADVALUE の組み合わせより も FILL 値を使用して下さい。 リンカのマニュアルの以下のセクションを参照して下さい。 実行領域の属性。 L6405W : どの .ANY セレクタもセクション <name>(<objname>)に一致しません。 リンカのマニュアルの以下のセクションを参照して下さい。 .ANY モジュールセレクタによる未割り当てセクションの配置。 L6406W : セクション <name>(<objname>)と一致する .ANY セレクタがある実行領域のスペ ースがありません。 この問題は、.ANY を含むスキャッタファイル領域に、リストされているセクションを配置す るための十分なスペースがない場合に発生します。セクションのための十分なスペース があるように、スキャッタファイルを変更する必要があります。 リンカのマニュアルの以下のセクションを参照して下さい。 .ANY モジュールセレクタによる未割り当てセクションの配置。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-156 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6407W : 集合サイズ 0x<size> バイトのセクションは .ANY セレクタに収まりません。 この警告は、どの .ANY セレクタにも配置できないイメージデータの総量を特定します。 例えば、次のように、ZI データの量に対して小さすぎる実行領域に .ANY(+ZI) が配置 される場合です。 ROM_LOAD 0x8000 { ROM_EXEC 0x8000 { RAM +0 0x{...}<<< 領域の最大長が小さすぎる { .ANY(+ZI) } } .ANY(+RO,+RW) } リンカのマニュアルの以下のセクションを参照して下さい。 .ANY モジュールセレクタによる未割り当てセクションの配置。 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 なしで使われています。 リンカのマニュアルの以下のセクションを参照して下さい。 --ropi。 --rw_base=address。 --rwpi。 L6415E : このイメージと互換性のあるライブラリの一意のセットが見つかりませんでした。-cpu オプションを使用して特定のライブラリを選択することを推奨します。 リンカのマニュアルの以下のセクションを参照して下さい。 --cpu=name。 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>)は無視されま す。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-157 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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> への参照が含まれています。 リンカでは、領域の内容が圧縮前に固定される必要があり、圧縮後は内容を変更できま せん。そのため、圧縮可能領域は圧縮処理に依存するメモリ位置を参照できません。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-158 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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 を選択することを推奨します。 リンカのマニュアルの「 --cpu=name」セクションを参照して下さい。 L6464E : --dynamic_debug、--emit-relocs、および --emit-debug-overlayrelocs のうちの 1 つだけを選択できます。 リンカのマニュアルの以下のセクションを参照して下さい。 --dynamic_debug。 --emit_debug_overlay_relocs。 --emit_relocs。 L6467W : ライブラリから注釈がレポートされています:<msg> L6468U : --base_platform とコードを含む複数のロード領域では、--pltgot=direct および --pltgot=none のみがサポートされています。 リンカのマニュアルの以下のセクションを参照して下さい。 --base_platform。 --pltgot=type。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-159 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6469E : --base_platform は、非 RELOC 実行領域を含む RELOC ロード領域をサポー トしていません。ロード領域 <lrname> の実行領域 <ername> のベースアドレスには、+0 を 使用して下さい。 リンカのマニュアルの以下のセクションを参照して下さい。 --base_platform。 RELOC アドレス属性の継承規則。 L6470E : PLT セクション <secname> をロード領域 <lrname> 外に移動できません。 L6471E : 分岐の再配置 <rel_class>:<idx>(セクション <secname>、オブジェクト <objname>)は、オブジェクト <armobjname> の ARM 絶対 <armsym> シンボルを参照しま す。Thumb アドレスとして扱う場合は、エラーを非表示にします。 L6475W : IMPORT/EXPORT コマンドは、--override_visibility が指定されていない場 合は無視されます ステアリングファイル内の EXPORT コマンドを使うか、--undefined_and_export コマ ンドラインオプションを使ってエクスポートしようとしたシンボルは、可視性が低いため、 エクスポートされませんでした。 リンカのマニュアルの以下のセクションを参照して下さい。 --override_visibility。 --undefined_and_export=symbol。 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>' のプリプロセッサ処理ができませんでした。 このメッセージは、スキャッタファイルのプリプロセッシングに問題があることを示していま す。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-160 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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> に最大サイズを指定する必要があります。 リンカのマニュアルの以下のセクションを参照して下さい。 実行領域の属性。 L6650E : オブジェクト <objname> の Group セクション <sectionidx> に無効なシンボ ルインデクス <symidx> が含まれています。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-161 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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>)内)は、負の要素を 参照しています。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-162 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6689U : 再配置 #<rel_class>:<rel_idx>(<oepname>(<spname>)内)。デスティネー ションがマルチバイト文字の中間にあります L6690U : マージセクション <spname>(オブジェクト <oepname> 内)にシンボルがありませ ん L6703W : セクション <er> は圧縮不能として暗示的にマークされています。 L6707E : 実行領域 <regionname> のパディング値は PADVALUE 属性を使用して指定さ れていません。 リンカのマニュアルの以下のセクションを参照して下さい。 実行領域の属性。 L6708E : <secname>(オブジェクト <oepname> 内)のデバッグフレームを処理できませんで した。 L6709E : <secname>(オブジェクト <oepname> 内)の fde を関連付けることができません でした。 L6713W : オフセット <offset>(<oepname>(<secname>)内)の関数にはシンボルがありま せん。 L6714W : オブジェクト <oepname> の例外インデクステーブルセクション .ARM.exidx にデ ータが含まれていません。 L6720U : イメージ内に存在する例外テーブル <spname>(オブジェクト <oepname> 内)に --noexceptions が指定されています。 リンカのマニュアルの以下のセクションを参照して下さい。 --exceptions, --no_exceptions。 L6721E : セクション #<secnum> '<secname>' (<oepname> 内)は認識されないため、総 称的に処理できません。 L6725W : ダイナミックな再配置があるため、未使用の仮想関数の削除は正しく機能しない可 能性があります L6728U : リンク順序の依存関係がセクション番号 <from> から無効なセクション番号 <to> に指定されています。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-163 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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> が関係しています。内部の整合性チェックが失敗しました ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-164 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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> コマンドが無視されました。 リンカのマニュアルの以下のセクションを参照して下さい。 --sysv。 ステアリングファイルコマンドのインポート。 L6774W : <objname>(<secname>)に長さが正しくないデバッグフレームエントリがあります。 L6775W : <objname>(<secname>)内に、このセクションにない CIE を使用する FDE があ ります。 L6776W : <objname>(<secname>)のデバッグフレーム内に実行セクションが記述されていま せん。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-165 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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 SP1 以降のツールチェーンでは、デフォルトでただの警告です。-diag_warning 6784 を使って、このエラーを非表示にできます。 L6785U : '<libname>' からのインポート用にマークされたシンボル '<symname>' は既に '<oepname>' によって定義されています。 L6786W : マッピングシンボル #<symnum> '<msym>'(<oepname> (<secnum>:<secname>)内)が、非境界整列オフセット=0x<moffset> で定義されています L6787U : エントリが <regionname> に対して必要とする領域テーブルハンドラ '<handlername>' が見つかりませんでした。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-166 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6788E : 実行範囲 <er1name> を [<base1>,<limit1>) にスキャッタローディングする と、[<base2>,<limit2>) にある実行領域 <er2name> の内容が実行時に壊れます。 この問題は、スキャッタローディングが行われ、実行領域が他の実行領域(それ自体ま たは別の領域)を部分的または全体的に上書きしてしまう場所に配置される場合に発生 します。 例えば、次のコードはこのエラーを生成します。 LOAD_ROM 0x0000 0x4000 { 0x4000 { * (+RO) } } EXEC1 0x4000 0x4000 { * (+RW,+ZI) } EXEC2 0x0000 そして、次のメッセージが表示されます。 エラー:L6788E:実行範囲 EXEC2 のスキャッタローディングを行うと、実行時に実行範囲 EXEC2 のコン テンツが壊れる可能性があります。 次のコードからはエラーは生成されません。 LOAD_ROM 0x0000 0x4000 { EXEC1 0x0000 0x4000 0x4000 { * (+RW,+ZI) } } { * (+RO) } EXEC2 0x4000 リンカのマニュアルの以下のセクションを参照して下さい。 スキャッタファイルに関する情報 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> で、ラン ディングパッド参照が必要です。 ランディングパッドは、例外が発生した後でクリーンアップを行うコードです。リンカが古 い形式の例外テーブルを検出した場合は、これが自動的に新しい形式に変換します。 このメッセージは、新しいバージョンのリンカと古いバージョンのコンパイラを使用してい ない限り、表示されません。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-167 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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 を参照して下さい。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-168 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6810E : 再配置 <rel_class>:<idx>(<objname>(<secname>)内)は、廃止された型 <rtype> です。 多くの場合、再配置のエラーと警告は、前のバージョンの ARM ツールでビルドされた オブジェクトファイルをリンクしている場合に発生します。 再配置のエラーと警告を表示するには、--strict_relocations スイッチを使用して 下さい。このオプションを使用すると、オブジェクトの ABI 準拠を確認できます。デフォ ルトではオフになっており、廃止されたり廃止予定だったりする再配置は、リンカによっ て自動的に処理されます。 リンカのマニュアルの以下のセクションを参照して下さい。 --strict_relocations, --no_strict_relocations。 L6812U : 不明なシンボルアクション型です。購入元にお問い合わせください。 L6813U : <newname> に名前変更するためのシンボル <symname> が見つかりませんでし た。 リンカのマニュアルの以下のセクションを参照して下さい。 RENAME ステアリングファイルコマンド。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-169 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6815U : メモリが不足しています。割り当てサイズ:<alloc_size>システムサイ ズ:<system_size> このエラーは、ARM コンパイラツールチェーン v4.1 以降によって報告されます。ここで は、利用可能なメモリの量と、リンク手順を実行する必要があるメモリの量についての情 報が提供されます。 このエラーが発生する原因として、リンカに、ターゲットオブジェクトにリンクするための十 分なメモリがないことが考えられます。これは一般的ではありませんが、以下のような多く の理由でトリガされる可能性があります。 • • • 非常に大きなオブジェクトやライブラリにリンクしています。 大量のデバッグ情報を生成しています。 スキャッタファイル内に定義された大領域があります。 このような場合、ワークステーションは仮想メモリ不足に陥る可能性があります。 この問題は、FIXED スキャッタロード属性を使用した場合にも起こります。 FIXED 属性 は、実行領域を固定アドレスで ROM 内のルート領域にします。ROM イメージを生成す るには、リンカは、前の実行領域の末尾と FIXED 領域の間にパディングバイトを追加す る必要があります。FIXED 領域のアドレスが実行領域の末尾から遠いときに大量のパデ ィングを追加すると、リンカはメモリ不足に陥る可能性があります。間隔を短くすると、リン ク手順は成功します。 リンカのマニュアルの以下のセクションを参照して下さい。 実行領域の属性。 ルート実行領域と FIXED 属性。 リンカはほとんどすべてのサイズのイメージを生成することができますが、リンクの実行と 終了には大量のメモリが必要になります。リンク時のパフォーマンスを向上させ、メモリ不 足エラーを回避するために、以下のソリューションを試してみて下さい。 1. リンク時に、すべての不要なアプリケーションとプロセスをシャットダウンして下さい。 例えば、Eclipse のもとで実行している場合は、コマンドラインからリンカを実行する か、ビルド間の Eclipse を終了して再起動してみて下さい。 2. 64 ビットバージョンのリンカを使用します。 64 ビットのオペレーティングシステムを使用している場合は、64 ビットバージョンの armlink を使用できます。 『スタート ガイド』の以下のセクションを参照して下さい。 64 ビットのリンカへの変更。 3. --no_debug リンカオプションを使用します。 このコマンドは、デバッグ情報を含めずにオブジェクトを作成するようにリンカに指示 します。 リンカのマニュアルの以下のセクションを参照して下さい。 --debug, --no_debug。 注 このオプションを使用すると、ソースレベルのデバッグを実行することはできません。 4. デバッグ情報を削減します。 --no_debug オプションを使用しない場合は、デバッグ情報を削減するための別の 方法があります。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-170 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト コンパイラのドキュメントの以下のセクションを参照して下さい。 オブジェクトおよびライブラリにおけるデバッグ情報を削減する方法。 fromelf ユーティリティを使用して、デバッグ情報をデバッグする必要がないオブジェ クトとライブラリから削除することもできます。 fromelf のドキュメントの以下のセクションを参照して下さい。 --strip=option[,option,...]。 5. 部分リンクを使用します。 部分リンクを使用すると、リンクステージを少数の小さな演算に分割することができま す。分割すると、最終的なリンクでメモリ内のオブジェクトファイルが重複しないように することもできます。 リンカのマニュアルの以下のセクションを参照して下さい。 --partial。 6. Windows オペレーティングシステム上でメモリのサポートを増やします。 一部の Windows オペレーティングシステムでは、仮想アドレス空間を 2GB(デフォ ルト)から 3GB に増やすことができます。 詳細については、以下の Microsoft の記事を参照してください。 メモリサポートと Windows オペレーティングシステム 7. --no_eager_load_debug リンカオプションを使用します。 このオプションは、RVCT 4.0 ビルド 697 以降で使用できます。このオプションを使用 すると、リンカはオブジェクトのロード後にメモリからデバッグセクションデータを削除 します。これにより、最終イメージを書き込む際にデバッグデータのほとんどを再度ロ ードする必要が生じるため、リンカのパフォーマンスは低下しますが、リンカのピーク 時のメモリ使用量が抑えられます。 リンカのマニュアルの以下のセクションを参照して下さい。 --eager_load_debug, --no_eager_load_debug。 まだ同じ問題が起こる場合は、サポートケースを作成して下さい。 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 がプール制限を下げられ ない場合のみ発生します。 リンカのマニュアルの以下のセクションを参照して下さい。 --veneer_inject_type=type。 L6898E : 再配置 #<rel_class>:<idx>(<objname>(<secname>)内)は <armsym> に 関係しています。<armobjname>(<armsecname>)での非 ARM/Thumb シンボルに対する ARM 分岐。 L6899E : 既存の SYMDEFS ファイル '<filename>' は、読み出し専用です。 L6900E : AND および OR 演算子の優先順位を特定するために、括弧が必要です。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-171 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6901E : シンボル名が必要です。 L6902E : ストリングが必要です。 L6903E : スクリプトの '<clause>' 節内で '<text>' を実行できません。 L6904E : 名前変更後のシンボルが、別の名前変更処理と競合します。 L6905E : 名前変更前のシンボルが、別の名前変更処理と競合します。 L6906E : (これは、名前変更の競合相手です。) L6907E : 式が必要です。 L6910E : フェーズ名が必要です。 L6912W : インデックス <idx>(<oepname>(<secname>)内)にあるシンボル <symname> に は、ABI シンボル型 <symtype> がありますが、これはマッピングシンボル型 <maptype> と 矛盾しています。 L6913E : 実行領域名が必要です。 L6914W : --<memoption> の使用時には、オプション <spurious> は無視されます。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-172 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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++ ライブラリと浮動小数点サポートユーザガイド』の以下のセクシ ョンを参照して下さい。 __user_setup_stackheap() 古い関数 Legacy function __user_initial_stackheap()。 リンカのマニュアルの以下のセクションを参照して下さい。 空き領域の予約。 • エラー:L6915E:ライブラリからエラーがレポートされています:__use_no_semihosting が要求され ていましたが、<function> が参照されました。 <function> は __user_initial_stackheap、 _sys_exit, _sys_open、 _sys_tmpnam、 _ttywrch, system、remove、 rename、 _sys_command_string、 time、または clock を表します。 このエラーは、 SVC または BKPT 命令が C ライブラリからリンクされるのを避けるため に、セミホスティング使用関数をターゲット変更した場合に表示されることがありま す。 次のコードを使用して、セミホスティング使用関数が C ライブラリからリンクされないよ うにして下さい。 #pragma import(__use_no_semihosting) 『ARM C および C++ ライブラリと浮動小数点サポートユーザガイド』の以下のセクシ ョンを参照して下さい。 非セミホスティング環境でのライブラリの使用。 セミホスティング使用関数がまだリンクされている場合は、リンカによってこのエラー が報告されます。 この問題を解決するには、これらの C ライブラリ関数の独自の実装を用意する必要 があります。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-173 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト emb_sw_dev ディレクトリには、一般的ないくつかのセミホスティング使用関数を再実 装する方法の例が保存されています。ファイル retarget.c を参照して下さい。 C ライブラリ関数を使用したセミホスティングの詳細については、以下の 『ARM 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> が malloc、free、__heapstats、または __heapvalid を表している 場合、__use_no_heap を使用すると、これらの関数と競合します。 • エラー:L6915E:ライブラリからエラーがレポートされています:__use_no_heap_region が要求され ていましたが <reason> が参照されました <reason> が malloc、free、__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>。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-174 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト 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> 『移行と互換性ガイド』の以下のセクションを参照して下さい。 RVCT v3.1 と RVCT v4.0 の間でのリンカの変更点。 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 に変更していま す。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-175 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6971E : <objname>(<secname>)の <type> 型は、er <ername> の <prevobj> (<prevname>)の <prevtype> 型と互換性がありません。 スキャッタファイルで __at セクションを配置すると、このメッセージが表示されることがあ ります。例えば、main.c の次のコードと関連のスキャッタファイルにより、このエラーが 生成されます。 int variable __attribute__((at(0x200000))); LR1 0x0000 0x20000 { 0x8000 0x2000 { { *(+RW, +ZI) ER1 0x0 0x2000 main.o } } } { *(+RO) } ER2 RAM 0x200000 (0x1FF00-0x2000) 変数の型は ZI です。リンカはこれをアドレスに配置しようとします。 0x200000 .ところ が、このアドレスはスキャッタファイルにより RW セクション用に予約されています。その ため、エラーが生成されます。 エラー: L6971E:RW 型の stdio_streams.o(.data) は er RAM の ZI 型の main.o(.ARM.__AT_0x00200000) と互換性がありません。 この問題に対処するには、ソースコードでアドレスを次のように変更します。 int variable __attribute__((at(0x210000))); リンカのマニュアルの以下のセクションを参照して下さい。 特定アドレスへの関数とデータの配置方法。 特定のアドレスに __at セクションの配置。 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 リンカオプションも指定する必要があります。 リンカのマニュアルの以下のセクションを参照して下さい。 特定のアドレスに __at セクションの配置。 --autoat, --no_autoat。 L6974E : AT セクション <name> にベースアドレスがありません。 リンカのマニュアルの以下のセクションを参照して下さい。 特定のアドレスに __at セクションの配置。 L6975E : <objname>(<secname>)は必要なベースと SHF_MERGE を持つことはできませ ん。 L6976E : <objname>(<secname>)は必要なベースと SHF_LINK_ORDER を持つことはでき ません。 L6977E : <objname>(<secname>)は複数セクションの連続ブロックになることはできません L6978W : <objname>(<secname>)にはユーザ定義セクション型と必要なベースアドレスがあ ります。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-176 3 リンカのエラーおよび警告 3.2 armlink のエラーおよび警告メッセージのリスト L6979E : 必要なベースアドレスを持つ <objname>(<secname>)を位置非依存の ER <ername> に配置できません。 L6980W : FIRST および LAST が、必要なベースアドレスを持つ <objname>(<secname>) で無視されました。 リンカのマニュアルの以下のセクションを参照して下さい。 FIRST 属性と LAST 属性を使用したセクションの配置。 L6981E : __AT は BPABI と SystemV のイメージタイプと互換性がありません リンカのマニュアルの以下のセクションを参照して下さい。 Restrictions on placing __at sections。 L6982E : ベース <base>、リミット <limit> の AT セクション <objname>(<spname>)が、 ベース <base2>、リミット <limit2> の AT セクション <obj2name>(<sp2name>)のアドレス 領域と重複しています。 リンカのマニュアルの以下のセクションを参照して下さい。 特定のアドレスに __at セクションの配置。 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) ...} リンカのマニュアルの以下のセクションを参照して下さい。 特定のアドレスに __at セクションの配置。 --autoat, --no_autoat。 L6984E : AT セクション <objname>(<spname>)が、セクションアライメント <alignment> に整列していないベースアドレス <base> を要求しました。 リンカのマニュアルの以下のセクションを参照して下さい。 特定のアドレスに __at セクションの配置。 L6985E : 必要なベースアドレス <base> を持つ AT セクション <objname>(<spname>)を 自動的に配置できません。--no_autoat オプションを使用して手動でスキャッタファイルに配 置してください。 リンカのマニュアルの以下のセクションを参照して下さい。 特定のアドレスに __at セクションの配置。 --autoat, --no_autoat。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 3-177 第4章 ELF イメージ変換ユーティリティのエラーおよび警告 ELF イメージ変換ユーティリティ (fromelf)のエラーおよび警告メッセージについて説明しま す。 このドキュメントは、次で構成されています。 • ARM DUI0496JJ 4.1 fromelf のエラーおよび警告メッセージのリスト(4-179 ページ). Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 4-178 4 ELF イメージ変換ユーティリティのエラーおよび警告 4.1 fromelf のエラーおよび警告メッセージのリスト 4.1 fromelf のエラーおよび警告メッセージのリスト fromelf で生成されるエラーおよび警告メッセージをリストします。 Q0105E : ロード領域 #<segindex> が先頭のアドレス空間の範囲を越えています。 Q0106E : メモリが不足しています。 Q0107E : 出力ファイル '<filename>' の書き込みに失敗しました:<reason> Q0108E : 出力ファイル '<filename>' を作成できませんでした:<reason> Q0119E : 出力ファイルが指定されていません。 Q0120E : 入力ファイルが指定されていません。 Q0122E : ファイル '<filename>' を開けませんでした:<reason> <reason> が無効な引数の場合、コマンドラインに無効な文字が含まれることが原因で ある可能性があります。例えば、Windows の場合、アーカイブファイルと共にフィルタを 指定するときにエスケープ文字 \ を使用した場合などです。 fromelf --elf --strip=all t.a\(test*.o\) -o filtered/ Windows の場合、以下のように指定します。 fromelf --elf --strip=all t.a(test*.o) -o filtered/ fromelf のドキュメントの以下のセクションを参照して下さい。 input_file。 Q0128E : ファイル入出力エラーです。 このエラーは、ディレクトリの末尾がパスの区切り文字ではない場合に、--output コマ ンドラインオプションでディレクトリを指定したときに発生する可能性があります(-output=my_elf_files/ など)。 fromelf のドキュメントの以下のセクションを参照して下さい。 --output=destination。 Q0129E : 32 ビット ELF ファイルではありません。 Q0130E : 64 ビット ELF ファイルではありません。 Q0131E : 無効な ELF 識別番号が見つかりました。 ELF 形式でないか破損しているファイルに対して fromelf を使おうとすると、このエラー が発生します。オブジェクト(.o)ファイルおよび実行可能(.axf)ファイルは、ELF 形式 です。 Q0132E : 無効な ELF セクションインデクス <idx> が見つかりました。 Q0133E : 無効な ELF セグメントインデクス <idx> が見つかりました。 Q0134E : 無効な ELF ストリングテーブル <idx> が見つかりました。 Q0135E : 無効な ELF セクションエントリサイズが見つかりました。 Q0136E : ELF ヘッダに無効なファイルタイプが含まれています。 Q0137E : ELF ヘッダに無効なコンピュータ名が含まれています。 Q0138E : ELF ヘッダに無効なバージョン番号が含まれています。 Q0131E を参照して下さい。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 4-179 4 ELF イメージ変換ユーティリティのエラーおよび警告 4.1 fromelf のエラーおよび警告メッセージのリスト Q0147E : ディレクトリ <dir> の作成に失敗しました:<reason> <reason> が既存のファイルである場合、既存のファイルと同じ名前を持つディレクトリ を指定したことが原因である可能性があります。例えば、filtered という名前のファイ ルが既に存在している場合、次のコマンドを実行するとこのエラーが生成されます。 fromelf --elf --strip=all t.a(test*.o) -o filtered/ パスの区切り文字 / により、fromelf は filtered がディレクトリであると判断します。 fromelf のドキュメントの以下のセクションを参照して下さい。 --output=destination。 Q0171E : ストリングテーブル <idx> への st_name インデックスが無効です。 Q0131E を参照して下さい。 Q0172E : シンボルテーブル <idx> へのインデックスが無効です。 Q0131E を参照して下さい。 Q0186E : このオプションでは、デバッグ情報が存在している必要があります --fieldoffsets オプションでは、イメージが dwarf デバッグテーブル付きでビルドさ れている必要があります。 Q0425W : ファイル内に正しい形式でない仮想関数の削除ヘッダがあります この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ 下さい。 Q0426E : ファイルからの vtable 情報の読み出し中にエラーが発生しました この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ 下さい。 Q0427E : vtable 内のシンボルのストリングを取得中にエラーが発生しました この問題は、コンパイラのエラーを示している場合があります。購入元にお問い合わせ 下さい。 Q0433E : 診断スタイル <style> は認識されません Q0440E : <secname> の再配置セクションがありません Q0447W : 不明な診断番号(<num>) Q0448W : <file> のセクション番号 <secnum> '<secname>' の展開中に、圧縮データの 末尾以降を読み出そうとしています この問題は、内部エラーを示している場合があります。購入元にお問い合わせ下さい。 Q0449W : <file> のセクション番号 <secnum> '<secname>' の展開中に、サイズ <bufsize> の展開データバッファの末尾以降に書き込もうとしています この問題は、内部エラーを示している場合があります。購入元にお問い合わせ下さい。 Q0450W : ファイル <file> のセクション番号 <secnum> '<secname>' に、ABI 配置の 以前の型と現在の型が混在しています。 Q0451W : オプション '--strip symbols' が、デバッグ情報を持つ ELF ファイルに対して '--strip debug' を指定せずに使用されました。 Q0452W : オプション '--strip filesymbols' が、デバッグ情報を持つ ELF ファイルに 対して '--strip debug' を指定せずに使用されました。 Q0453W : '<path1>' および '<path2>' からパス名を取り除くと重複したファイル名 '<filename>' になります。 Q0454E : ELF ファイル内: <details> ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 4-180 第5章 ライブラリアンのエラーおよび警告 ARM ライブラリアン (armar)のエラーおよび警告メッセージについて説明します。 このドキュメントは、次で構成されています。 • ARM DUI0496JJ 5.1 armar のエラーおよび警告メッセージのリスト(5-182 ページ). Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 5-181 5 ライブラリアンのエラーおよび警告 5.1 armar のエラーおよび警告メッセージのリスト 5.1 armar のエラーおよび警告メッセージのリスト armar で生成されるエラーおよび警告メッセージをリストします。 L6800U : メモリが不足しています L6825E : アーカイブ '<archive>' の読み出し中:<reason> L6826E : '<archive>' はアーカイブ形式になっていません L6827E : '<archive>':不正な形式のシンボルテーブル L6828E : '<archive>':不正な形式のストリングテーブル L6829E : '<archive>':不正な形式のアーカイブ(オフセット <offset>) L6830E : アーカイブ '<archive>' の書き込み中:<reason> L6831E : '<member>' がアーカイブ '<archive>' 内に存在しません L6832E : アーカイブ '<archive>' が見つかりません:<reason> L6833E : ファイル '<filename>' が存在しません L6835E : ファイル '<filename>' の読み取り中:<reason> L6836E : '<filename>' は既に存在しているため、抽出されません L6838E : アーカイブが指定されていません L6839E : いずれかのアクション -[<actions>] を指定する必要があります L6840E : 1 つのアクションオプションのみを指定できます L6841E : 位置 '<position>' が見つかりません L6842E : ファイル名 '<filename>' がファイルシステムに対して長すぎます L6843E : ファイル '<filename>' の書き込み中:<reason> L6874W : アーカイブメンバ '<member>' のマイナーバリアントにベースバリアントが含まれて いません 同じ関数のマイナーバリアントがライブラリ内に存在します。2 つの同じオブジェクトを見 つけて、一方を削除して下さい。 L6875W : ELF オブジェクトではないファイル '<filename>' をアーカイブ '<name>' に 追加中 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 5-182 第6章 その他のエラーおよび警告 ツールのいずれかによって表示されるその他のエラーおよび警告メッセージについて説明して います。 このドキュメントは、次で構成されています。 • • ARM DUI0496JJ 6.1 内部エラーとその他の予期しないエラー(6-184 ページ). 6.2 その他のエラーおよび警告メッセージのリスト(6-185 ページ). Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 6-183 6 その他のエラーおよび警告 6.1 内部エラーとその他の予期しないエラー 6.1 内部エラーとその他の予期しないエラー 内部エラーはとは、ツールが内部の整合性チェックに失敗したか、処理できない、予想外の入力 があったことを示します。ツール自体に問題がある可能性を示唆している場合もあります。 以下に例を示します。 内部エラー: [0x87ecef:5010591] これには、以下の情報が含まれています。 • • メッセージの説明(内部エラー) 発生したエラーを示す、6 桁の 16 進数のエラーコード( 0x87ecef )。 • • RVCT 2.2 以前のバージョンでは、コードは 4 桁でした。 バージョン番号(501 は ARM コンパイラ 5.01) ビルド番号(この例では 0591)。 内部エラーが表示された場合は、購入元にお問い合わせ下さい。 調査を容易にするために、エラーを発生させたソースファイルまたは関数のみを送るようにして 下さい。また、使用したコマンドラインオプションもお知らせ下さい。 ファイルの前処理が必要になる場合もあります。つまり、#include で追加されるファイルも考慮 する必要があります。その場合は、次のようにして、ファイルをプリプロセッサに通します。 armcc <options> –E sourcefile.c > PPsourcefile.c ここで、<options> は、-O2、-g、-I、-D などの通常のコンパイルスイッチです。ただし、-c は 指定しません。 前処理したファイルでもエラーが再現されることを確認して下さい。例えば、以下を使用してコン パイルします。 armcc <options> -c PPsourcefile.c その後、PPsourcefile.c ファイルと <options> を購入元に送付して下さい。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 6-184 6 その他のエラーおよび警告 6.2 その他のエラーおよび警告メッセージのリスト 6.2 その他のエラーおよび警告メッセージのリスト ARM コンパイラツールチェーンのツールによって生成されるエラーおよび警告メッセージのリス ト。 注 When the message is displayed, the X prefixing the message number is replaced by an appropriate letter relating to the tool. For example, the code X3900U is displayed as L3900U by the linker when you have specified an unrecognized option. X3900U : 認識されないオプション '<dashes><option>' です。 <option> をツールが認識できません。この問題の原因は、スペルの間違い、またはオ プションのサポートされていない省略形の使用である可能性があります。 X3901U : オプション '<option>' の引数がありません。 X3902U : 再帰的 via ファイルのインクルードの深さがファイル '<file>' 内で <limit> に達しました。 X3903U : 引数 '<argument>' は、オプション '<option>' には使用できません。 原因としては、不正な形式の整数や不明な引数などが考えられます。 X3904U : via ファイル '<file>' を開けませんでした。 X3905U : via ファイル '<file>' の読み出し中にエラーが発生しました。 X3906U : via ファイル '<file>' の形式が間違っています。 X3907U : via ファイル '<file>' コマンドはバッファには長すぎます。 X3908U : オーバーフロー:'<string>' は整数に収まりません。 X3910W : 古い構文です。'<hyphens><option><separator><parameter>' を使用して 下さい。 X3912W : オプション '<option>' は廃止される予定です。 X3913W : via ファイル '<file>' を閉じることができませんでした。 X3915W : オプション '<option>' の引数 '<argument>' は廃止される予定です X3916U : オプション '<dashes><option>' に、期待されない引数が指定されています X3917U : 連結されたオプションには引数を指定できません:-<option> <arg> X9905E : 浮動小数点ハードウェアでない場合、--apcs=/hardfp は使用できません X9906E : fpu <fpu_option> では、--apcs=/hardfp は使用できません X9907E : 浮動小数点のサポートなしは選択できません X9908E : --fpmode=none は --fpu choice をオーバーライドします ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 6-185 付録 A 『エラーおよび警告リファレンスガイド』に対するドキュメント 改訂 『エラーおよび警告リファレンスガイド』に対して、加えられた技術的変更について説明していま す。 このドキュメントは、次で構成されています。 • ARM DUI0496JJ A.1 『エラーおよび警告リファレンスガイド』に対する改訂(付録-A-187 ページ). Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 付録-A-186 A 『エラーおよび警告リファレンスガイド』に対するドキュメント改訂 A.1 『エラーおよび警告リファレンスガイド』に対する改訂 A.1 『エラーおよび警告リファレンスガイド』に対する改訂 『エラーおよび警告リファレンスガイド』に対して、以下の技術的変更が加えられました。 表 A-1 発行 I と発行 J の相違点 変更点 関連するトピック 環境変数への参照を ARMCCnINC および ARMCCnLIB から ARMCC5INC および ARMCC5LIB に変更しました。 • • 1.3 古いスタイルの armcc のエラーおよび警告メッセージのリスト(1-81 ページ) 3.2 armlink のエラーおよび警告メッセージのリスト(3-127 ページ) 表 A-2 発行 H と発行 I の相違点 変更点 関連するトピック 旧式コンパイラメッセージの変更点: 1.3 古いスタイルの armcc のエラーおよび 警告メッセージのリスト(1-81 ページ) • • C4nnn ~ C3nnn の番号の付け直しを反映するようにメッセージ ID 番 号を更新しました。 使用されていないメッセージの C3000E、C3015E、C3055U、および C3064E を削除しました。 コンパイラメッセージの変更点: • 95、1043、1083、1296、1559 の詳細を追加しました。 3.2 armlink のエラーおよび警告メッセー ジのリスト(3-127 ページ) リンカメッセージの変更点: • • L6202E, および L6330W の詳細を追加しました。 L6238E からリンク先記事を変更しました。 アセンブラメッセージの変更点: • • 1.2 armcc のエラーおよび警告メッセージ のリスト(1-12 ページ) 必要に応じて、ローカルラベルという用語を数値ローカルラベルに変 更しました。 A1746W の説明を改良しました。 2.1 armasm のエラーおよび警告メッセー ジのリスト(2-89 ページ) 表 A-3 発行 G と発行 H の相違点 変更点 関連するトピック コンパイラメッセージの変更点: 1.2 armcc のエラーおよび警告メッセー ジのリスト(1-12 ページ) • • ARM コンパイラ 5.0 における新しいエラーと警告メッセージの 2902 ~ 3040(2902 と 3040 を含む)を追加しました。 ARM コンパイラ 5.01 における新しいエラーと警告メッセージである 3049 ~ 3081(3049 と 3081 を含む)を追加しました。 リンカのエラーメッセージである L6973E の説明を改善しました。 ARM DUI0496JJ 3.2 armlink のエラーおよび警告メッセ ージのリスト(3-127 ページ) Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 付録-A-187 A 『エラーおよび警告リファレンスガイド』に対するドキュメント改訂 A.1 『エラーおよび警告リファレンスガイド』に対する改訂 表 A-4 発行 E と発行 F の相違点 変更点 関連するトピック コンパイラメッセージの変更点: • • • • 内部コンパイラエラーのバージョン番号コンポーネントを 2 桁から 3 桁に 変更しました。 メッセージ 1113 および 2523 が無効になったため、削除しました。 注釈 2813 および 2815 を追加しました。 アセンブラメッセージの変更点: • • 多数のエラーおよび警告メッセージコード内の E、W、U 接尾文字が修正 されました。 A1322E、A1477E、A1745W、A1786W、A1788W、および A1809W に詳 細を追加しました。 リンカメッセージの変更点: • • L6218E および L6932W の説明への相互参照を追加しました。 L6242E および L6248E の詳細を追加しました。 • 6.1 内部エラーとその他の予期しな いエラー(6-184 ページ) 1.2 armcc のエラーおよび警告メッ セージのリスト(1-12 ページ) 2.1 armasm のエラーおよび警告メッセ ージのリスト(2-89 ページ) 3.2 armlink のエラーおよび警告メッセ ージのリスト(3-127 ページ) ARMCCnnLIB および ARMCCnnINC 環境変数を ARMCCnLIB および ARMCCnINC に変更しました。 各トピック 適切な場合、 各トピック • • Thumb-1 を 16 ビット Thumb に変更しました。 Thumb-2 を 32 ビット Thumb に変更しました。 表 A-5 発行 D と発行 E の相違点 変更点 関連するトピック コンパイラメッセージの変更点: 1.2 armcc のエラーおよび警告メッセージのリスト (1-12 ページ) • エラー 1558 の詳細が追加されました。 アセンブラメッセージの変更点: • メッセージ A1588E、A1589E、A1597E、A1613E、A1614E、お よび A1646W には 到達できないため、削除されました。 ARM DUI0496JJ 2.1 armasm のエラーおよび警告メッセージのリス ト(2-89 ページ) Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 付録-A-188 A 『エラーおよび警告リファレンスガイド』に対するドキュメント改訂 A.1 『エラーおよび警告リファレンスガイド』に対する改訂 表 A-6 発行 C と発行 D の相違点 変更点 関連するトピック コンパイラメッセージの変更点: 1.3 古いスタイルの armcc のエラーお よび警告メッセージのリスト(1-81 ペー • • • メッセージ C3335E、C3336W、C3337E、および C3338W が追加されまし た。 --profile は廃止される予定なので、エラー C3053W が削除されまし た。 各種メッセージへの相互参照が追加されました。 アセンブラメッセージの変更点: • • メッセージ A1903E、A1907W、A1908E、および A1909E が追加されまし た。 A1450W への相互参照が追加されました。 L6064E が追加されました。 L6216E の例を修正しました。 L6815U が追加されました。 L6002U の説明を更新しました。 L6310W の説明を更新しました。 各種メッセージへの相互参照が追加されました。 4.1 fromelf のエラーおよび警告メッセ ージのリスト(4-179 ページ) fromelf メッセージの変更点: • 2.1 armasm のエラーおよび警告メッセ ージのリスト(2-89 ページ) 3.2 armlink のエラーおよび警告メッセ ージのリスト(3-127 ページ) リンカメッセージの変更点: • • • • • • ジ) 各種メッセージへの相互参照が追加されました。 表 A-7 発行 B と発行 C の相違点 変更点 関連するトピック リンカメッセージの変更点: 3.2 armlink のエラーおよび警告メッセージのリスト(3-127 ページ) • • L6058E が追加されました。 L6828E が追加されました。 表 A-8 発行 A と発行 B の相違点 変更点 関連するトピック コンパイラメッセージの変更点: 1.2 armcc のエラーおよび警告メッセージのリス ト(1-12 ページ) • 631 および 634 の詳細を追加しました。 2.1 armasm のエラーおよび警告メッセージのリ スト(2-89 ページ) アセンブラメッセージの変更点: • • A1590E を削除しました。 A1746W の詳細を追加しました。 ARM DUI0496JJ Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 付録-A-189 A 『エラーおよび警告リファレンスガイド』に対するドキュメント改訂 A.1 『エラーおよび警告リファレンスガイド』に対する改訂 表 A-8 発行 A と発行 B の相違点 (続き) 変更点 関連するトピック リンカメッセージの変更点: 3.2 armlink のエラーおよび警告メッセージのリ スト(3-127 ページ) • • • L6065E が追加されました。 L6220E、L6221E、L6384E、L6915E、および L6971E の詳細を 追加しました。 L6224E と L6469E の相互参照が追加されました。 fromelf メッセージの変更点: • エラー Q0122E、Q0128E、および Q0147E の詳細が追加されま した。 ARM DUI0496JJ 4.1 fromelf のエラーおよび警告メッセージのリ スト(4-179 ページ) Copyright © 2010-2013 ARM.All rights reserved. 非機密扱い 付録-A-190
© Copyright 2024 Paperzz