このアップデートリリースをダウンロードするには、事前にARM社のコネクトサービスのアカウントを取得し、ログインしておく必要があります。アカウントの取得は以下のURL から無償で行う事ができます:
https://login.arm.com/register.php
ARM Compiler toolchain v5.06(build 20)
ARM Compiler 5.06は、ARM Compiler 5の最終リリースであり、ARM Compiler 6へ継承されます。通常のARM Compiler 5.06のメンテナンス期間が終了した後、それ以上のサポートとメンテナンスはARM Compiler 拡張保守(Extended Maintenance)を通して利用可能です。ARM Compiler 5.06の拡張保守(Extended Maintenance)リリースは、ARM Compiler Qualification Kitによってサポートされます。
詳細な情報は、以下のリンクをご参照ください。
ARM Compiler 5.06 (build 20)は、以下の使用を意図しています。
- DS-5 Professional Edition あるいは DS-5 Ultimate Editionと共に使用
- Keil MDK Standard Edition あるいは Keil MDK Professional Editionと共に使用
- スタンドアロンでのツールインストレーション
ライセンスについてのご質問は購入元あるいは license.support@arm.comへのメールで行ってください。
フローティングライセンスをご使用の場合は、armlmdおよびlmgrdをversion 11.12.1.0以降にアップデートする必要があります。
これらのバージョンは、https://silver.arm.com/browse/BX002 からダウンロード可能です。(登録およびログインが必要です)
インストレーション指示
ARM Compiler 5.06が、ツールキット(DS-5あるいはKeik MDK)の一部として含まれている場合、ツールキットのインストーラがインストレーションプロセスを処理します。ツールキットのインストレーション指示を参照してください。
その他のケースの場合、ARM Compiler 5.06をどのように使用するかに依存して適切なインストレーションの場所を選択する必要があります。
- DS-5 5.20 以降に統合する
- Keil MDK 5.12 以降に統合する
- スタンドアロン製品として使用
DS-5 5.20 以降に統合する場合
ARM Compiler 5.06は、DS-5製品のインストレーションの外であるなら、デフォルトの場所を含み、任意の場所にインストールすることができます。
インストール後、http://ds.arm.com/developer-resources/tutorials/adding-new-compiler-toolchains-to-ds-5/のチュートリアルで示す方法に従って、DS-5 5.20以降のツールチェーンに統合することができます。
DS-5 Eclipse IDE あるいは DS-5 Command PromptからARM Compiler 5.06を使用することをおすすめします。これら環境の外でツールチェーンを使用するとき、以下の環境変数の構成が必要となります。
- DS-5インストレーション内の sw/mappings ディレクトリへのパスをARM_PRODUCT_PATHにセットします
- DS-5 Ultimate Editionを使用する場合、ARM_TOOL_VARIANT=ultをセットします
Keil MDK 5.12 以降に統合する場合
ARM Compiler 5.06は、Keil MDKインストレーションのARMサブディレクトリの下にインストールする必要があります。たとえば、Keil MDKインストレーションが C:Keil_v5ならば、C:Keil_v5ARMARM_Compiler_5.06にインストールすることをおすすめします。
インストール後、 http://www.keil.com/appnotes/docs/apnt_267.aspで利用可能なアプリケーションノートの指示に従って、MDKプロジェクトへツールチェーンを統合することができます。
スタンドアロン製品としての使用についてARM Compiler 5.06は、DS-5製品およびKeil MDK製品のそれぞれのインストレーションの外であるなら、デフォルトの場所を含み、任意の場所にインストールすることができます。
ライセンスファイルへを指定するARMLMD_LICENSE_FILE環境変数をセットしてください。Windows上ではダブルクォーテーションをこのパス内に含めないでください。パス内の空白なクォーツなしで、動作します。
DS-5のアップデートリリースの入手について
DS-5のアップデートリリースは、ARM社のWebサイトよりダウンロード可能です。
https://silver.arm.com/browse/DS500
このアップデートは、最新のコンパイラおよび、リンカ、アセンブラ、 fromelf、およびarmarの実行可能形式と、インクルードファイルおよびC / C++ ライブラリから構成されています。
サポートされるOSプラットフォーム
Windows XP Professional SP3 (32-bit only)(非推奨) Windows Server 2012 (64-bit only) Windows Server 2008 R2 (非推奨) Windows 7 Enterprise Edition SP1 Windows 7 Professional Edition SP1 Windows 8.1 (64-bit) RedHat Enterprise Linux 6 Desktop and Workstation option, Standard RedHat Enterprise Linux 5 Desktop and Workstation option, Standard (非推奨) Ubuntu Desktop Edition 14.04 LTS (64-bit only) Ubuntu Desktop Edition 12.04 LTS (非推奨)
Linux の場合
Installer/setup.shを実行し、画面の指示に従ってください。
インストールされたいくつかのツールが32bitシステムライブラリに依存します。
ARM Compiler 5.06 を64-bit Linuxホストプラットフォームで使用するとき、32-bit互換のライブラリがインストールされていることを確認してください。 32-bit互換ライブラリがインストールされていない場合、ARM Compiler 5.06ツールは、ライブラリが見つからず実行が失敗するあるいはエラーをレポートします。インストールに必要なライブラリは、ご使用のプラットフォームで管理者権限で適切なコマンドを実行して確認してください。
Red Hat
yum install glibc.i686
Ubuntu
apt-get install lib32stdc++6
Windows の場合
Installersetup.exeを実行し、画面の指示に従ってください。
ドキュメンテーションについて
ARM Compiler v5.06の以下ドキュメントが利用可能です。
- armar User Guide
- armasm User Guide.
- armcc User Guide.
- armlink User Guide.
- fromelf User Guide.
- ARM C and C++ Libraries and Floating-Point Support User Guide.
- Errors and Warnings Reference Guide.
- Getting Stated Guide.
- Migration and Compatibility Guide.
- Software Development Guide.
v5.06での全般的な変更
- [SDCOMP-22253]ホストプラットフォームのサポートが変更されました。
- Windows 8(64bitのみ)→ Windows 8.1 (64bitのみ)
- 以下のホストプラットフォームは非推奨となりました
Windows XP Professional SP3
Windows Server 2008 R2
Ubuntu Desktop Edition 12.04 LTS
RedHat Enterprise Linux 5 Desktop and Workstation option, Standard
ARM Compiler 5.06 update 2では、非推奨のホストプラットフォームのサポートは行われません。
Cygwin (32-bit Windowsプラットフォームのみ) → Cygwin version 2.0.4
- [SDCOMP-29393] 以前は、インストーラはARM Compiler 5の異なるインストレーションの共存をサポートしていませんでした。既存のインストレーションは自動的に削除されるか、デスティネーションフォルダにかかわらずアップグレードされていました。この振る舞いは、インストーラが自動的に削除しないかあるいは既存のインストレーションをアップグレードするよう変更されました。
- 共存インストレーションを実施するために、既存のインストレーションを含まないデスティネーションをフォルダを選択します
- 既存のインストレーションを置き換えあるいはアップグレードするために、先に既存のバージョンをアンインストールします。
- [SDCOMP-24529] ARM Compiler 5.06は、以下のプロセッサのサポートを非推奨とします。
- 88FR101
- 88FR101.hw_divide
- 88FR111
- 88FR111.no_hw_divide
- 88FR121
- 88FR121.hw_divide
- 88FR131
- 88FR131.hw_divide
- 88FR301
- 88FR301.hw_divide
- 88FR321
- 88FR321.hw_divide
- 88FR331
- 88FR331.hw_divide
- ARM710T
- ARM740T
- ARM7TDM
- ARM7TM
- ARM7TM-S
- ARM810
- ARM940T
- ARM968E-S
- ARM9EJ-S
- ARM1022E
- ARM1026EJ-S
- ARM1156T2F-S
- SA-110
- SA-1100 将来のARM Compiler 5.06の更新では、非推奨のプロセッサはサポートされません。
- ・--cpu=ARM810, --cpu=SA-110, --cpu=SA-1100 → --cpu=4
- ・--cpu=ARM710T, --cpu=ARM740T, --cpu=ARM7TDM, --cpu=ARM7TM, --cpu=ARM7TM-S → --cpu=ARM7TDMI
- ・--cpu=ARM940T → --cpu=ARM9TDMI
- ・--cpu=88FR101, --cpu=88FR101.hw_divide, --cpu=88FR111, --cpu=88FR111.no_hw_divide, --cpu=88FR121, --cpu=88FR121.hw_divide, --cpu=88FR131, --cpu=88FR131.hw_divide, --cpu=88FR301, --cpu=88FR301.hw_divide, --cpu=88FR321, --cpu=88FR321.hw_divide, --cpu=88FR331, --cpu=88FR331.hw_divide, --cpu=ARM968E-S → --cpu=5TE
- ・--cpu=ARM9EJ-S → --cpu=5TEJ
- ・--cpu=ARM1022E , --cpu=ARM1026EJ-S → --cpu=ARM1020E
- ・--cpu=ARM1156T2F-S → --cpu=ARM1156T2-S --fpu=VFPv2
--cpu=nameオプションは、以下のように影響を受け置き換えられます。
- [SDCOMP-29208] ライセンス管理のワーニングへの制御が改善されました
- --diag_remarkと--diag_suppressオプションを使用して、全てのライセンス管理ワーニングをダウングレードおよび抑制することができます。
- --diag_error=warning オプションは、ライセンス管理ワーニングを除いて、全てのワーニングをエラーへアップグレードすることができます。
- コンパイラは、以下のメモリバリア命令の組み込み関数を完全にサポートします。
- __isb()
- __dsb()
- __dmb() 追加の最適化バリア組み込み関数をサポートします。
- __force_loads() これら組み込み関数に関する記載は、ARM Compilerユーザガイドを参照してください。
- [SDCOMP-25014] __declspec(noreturn) と __attribute__(noreturn) の振る舞いが変わりました。修飾された関数が、拡張して暗黙的あるいは明示的にリターンするなら、 コンパイラは、"__attribute__((noreturn))" あるいは"__declspec(noreturn)"を無視し、 "Warning: #1461-D: function declared with "noreturn"をレポートします。
- [SDCOMP-29571] 特定の条件において、C++11キーワード deleteを使用して削除されるよう宣言された関数をコンパイルするとき、コンパイラはWarning #177-D:
was declared but never referenced をレポートします。この振る舞いは変更されました。これらのケースでは警告をレポートしなくなりました。
- [SDCOMP-25883] ARM Compiler 5.05で、[maroon]--gnuモード[/maroon]は、オーバーロード解決における右辺値参照にマッチするものとして許可されるよう、const volatile引数への左辺値の参照を許していませんでした。これは、C++ Standardに厳密に準拠しています。特定の条件において、 ARM Compilerの以前のリリースではコンパイル成功していたC++ソースが、ARM Compiler 5.05ではエラーをレポートする現象を引き起こします。 --gnuモードのみの場合、この振る舞いは以前のものに戻されました。
- [SDCOMP-25881] ARM Compiler 5.05で、--gnuモードは、最適化外の特定の呼び出しであったとしても、コピーコンストラクタが呼び出し可能であることおよび正常にインスタンスが生成されることができるかを常にチェックするよう振る舞っていました。これは、C++ Standardに厳密に準拠しています。特定の条件において、例えば不完全な型を使用するコピーコンストラクタが完全な型宣言を利用できずインスタンス生成をする場合、ARM Compilerの以前のリリースではコンパイル成功していたC++ソースが、ARM Compiler 5.05ではエラーをレポートする現象を引き起こします。 --gnuモードのみの場合、この振る舞いは以前のものに戻されました。
- [SDCOMP-29787] コンパイラは以前は、インライン関数のアウトオブラインコピーでは #pragma arm section [section_type_list] を無視していました。この振る舞いは変更され、pragmaはインライン関数のアウトオブラインコピーへ影響を及ぼします。以前の振る舞いを復元するには、以下のオプションを使用してください。
- --no_ool_section_name
- [SDCOMP-29788]以前は、--partialを使用してリンクされるとき、リンカは、 ファイルスコープビルド属性を含むSHT_ARM_ATTRIBUTESを生成し、Tag_nodefaultsを設定していました。全てのビルド属性タグはSHF_ALLOCセクションごとに記述されます。この振る舞いは変更されました。リンカはSHT_ALLOCセクションの最も制限のある互換性必要条件が記述されたファイルスコープビルド属性を生成します。
v5.06で修正された不具合
Compiler(armcc)
- [SDCOMP-29640] 特定の条件において、ハードウェア浮動小数点ユニットがFPv5アーキテクチャの単精度バリアントに従ってコンパイルされ、浮動小数点の値あるいは変数に条件付きオペレータ ?を使う式を処理するとき、コンパイラはInternal faultをレポートすることがありました。
- [SDCOMP-29533] -Otime --vectorizeと-O2以上を指定しているとき、コンパイラは配列に書き込むループをベクタライジングするとき、正しくないコードをまれに生成することがありました。
- [SDCOMP-29526] -O3 -Otimeを使用する特定の条件で、#pragma pack(4)以下で宣言された構造体のメンバへのアクセスでコンパイラは正しくないコードを生成することがありました
- [SDCOMP-29363] ARMステートでコンパイルされるとき、コンパイラはロードおよびストアのアドレス算出において正しくないコードをまれに生成することがありました。これは結果として正しくない振る舞いをしていました。
- [SDCOMP-29354] -O2以上で、コンパイラは正確にバランスされたPUSHとPOP命令を持たない実行パスを含んでいるコードをまれに生成することがありました。これは、スタックを破壊し、結果として正しくない振る舞いをしていました。
- [SDCOMP-29254] -O3 -Otimeで、まれな条件で、最適化の組み合わせが正しく変換されず、コンパイラのInternal faultを引き起こすことがありました。
- [SDCOMP-29200] -O3とともにThumbステートでコンパイルされるとき、多くの式を含むまれな条件で、コンパイラがInternal faultをレポートすることがありました。
- [SDCOMP-29199] -O2以上とともにThumbステートでコンパイルされるとき、コンパイラはまれな条件で、フラグをセットしないNUL命令ではなく正しくないフラグをセットするMULS命令を含むコードシーケンスを生成することがありました。
- [SDCOMP-29166] -O2以上とともにARMステートでコンパイルするとき、コンパイラは条件式を含むまれな条件で、Internal faultをレポートすることがありました。
- [SDCOMP-28976] -O3 -Otimeで、AとB両方がinteger型であってコンパイル時にそれぞれの値が既知の場合、まれな条件で、コンパイラは”A 関係演算子 B"の式の正しくないコードを生成することがありました。
- [SDCOMP-28907] 特定の条件において、コンパイラは、一度も評価されていないzが結果として右辺値となる、構造体もしくはクラスに割り当てられチェーン化された正しくない式 x = y = z を生成することがありました。
- [SDCOMP-28856] -O2以上のとき、まれな条件で、使用されない値が割り当てられたとき、ネストされた条件を含む式の割り当てにおいて稀な条件でコンパイラは正しくないコードを生成することがありました。この割り当ては誤った変数への書き込みを行い、結果として正しくない振る舞いをしていました。
- [SDCOMP-28763] -O3 -Otimeで、まれな条件で、for()ループの繰り返し変数 X(Xが符号付のinteger型)でコンパイル時に初期値が知られていない場合、この型の値の範囲をオーバーフローあるいはアンダーフローするかもしれないXの予想された全ての初期値をループ体へ入力し失敗する正しくないコードを生成することがありました。
- [SDCOMP-28759] -O3 -Otimeで、まれな条件で、コンパイラは、制御された式の値が、副作用を除いてコンパイル時に評価できるifステートメントのコード生成に失敗することがありました。
- [SDCOMP-28755] -O3 -Otimeで、まれな条件で、for()ループの繰り返し変数 Xが ループの終了条件に到達するためにオーバーフローあるいはアンダーフローする必要があり、Xが符号的のcharあるいは符号付のshort型であるとき、コンパイラはループ体へ入力し失敗する正しくないコードを生成することがありました。
- [SDCOMP-28753] 特定の条件において、-O3 -Otime使用時のループアンローリングでコンパイラは正しくないコードを生成することがありました。
- [SDCOMP-28750] -O3 -Otimeを使用するまれな条件において、コンパイラはmain()関数をインライン化するとき、関数のインライン化によって誤ってグローバル変数への書き込み削除することがありました。
- [SDCOMP-28746] -O3 -Otimeを使用するまれな条件において、文字列の配列への参照を引数として取る関数に文字列リテラルを渡すコードをコンパイルするとき、コンパイラはその文字列の最初の文字へ文字列リテラルを取り除くことがありました。
- [SDCOMP-28720] 特定の条件で、--debugあるいは-gを指定してコンパイルしているとき、コンパイラはメモリよりもレジスタに割り当てられるデータについて不完全なデバッグ情報を生成することがありました。
- [SDCOMP-28708] --cpp11 -gあるいは--cpp11 --debugを使用してコンパイルしているとき、std::nullptr_t型の使用で、コンパイラがInternal faultを起こすことがありました。
- [SDCOMP-28707] --cpp11を使用してコンパイルしているとき、std::nullptr_t型の右辺値参照への割り当てを含む式が、コンパイラのInternal faultを引き起こすことがありました。
- [SDCOMP-28702] コンパイラは、__attribute__((section("name")))あるいは異なる__attribute__((at(address)))によって__attribute__((at(address))) がオーバーライトされたとき、コンパイラはワーニングを発行しませんでした。コンパイラは、今、Warning: #3730-D: section name conflicts with previous declaration .ARM.__AT_をレポートするようになりました。
- [SDCOMP-28700] --gnu --gnu_version=30400使用時に左辺値のキャストを含むコードをコンパイルするとき、コンパイラはInternal faultをレポートすることがありました。
- [SDCOMP-28699] 仮想メソッドとメソッドのオーバーライドの両方に対して、 __attribute__((const)) あるいは __attribute__((noreturn))が指定されるとき、コンパイラは誤って、 Error: #1510: function "__attribute__((__
__))" present on overridden virtual function をレポートすることがありました。must be present on overridding function - [SDCOMP-28666] aがvolatile変数である、(void)a あるいは static_cast
(a) のような形態の式を含むC++11コードをコンパイルするとき、コンパイラは誤ってaからの読み込みを生成することがありました。 - [SDCOMP-28420] 特定の条件で、--cpp11を使用してコンパイルされたとき、コンパイラは Error: #28: expression must have a constant value あるいは Error: #3673: function call must have a constant value in a constant expressionをレポートする一つ以上のconstexpr指定子を無視することがありました。
- [SDCOMP-28391] 例外指定を持つ仮想デストラクタを--cpp11 --exceptionsでコンパイルされたとき、コンパイラは誤ってError: #766-D: exception specification for virtual
is incompatible with that of overridden をレポートすることがありました。 - [SDCOMP-28378] 非PODクラスあるいは構造体の仮インスタンスの配列メンバへのアクセスを行うコードをコンパイルするとき、コンパイラはInternal faultをレポートすることがありましtあ。
- [SDCOMP-28328] --cpp11 --omf_browse=filename.crfが指定されコンパイルされたとき、 enum classあるいは enum structで宣言されたscoped enumがコンパイラのInternal faultを引き起こすことがありました。
- [SDCOMP-28317]アサインメントの左側がvolatile変数であり、そして右側がvolatile変数に(あるいはから)アサインメントを伴わないもう一つのアサインメント式であるなら、コンパイラはつながった構造体のアサインメントについて正しくないコードを生成することがありました。
- [SDCOMP-28288]特定の条件において、--cpp11 -O3 -Otimeを使用してコンパイルされるとき、コンパイラはInternal faultをレポートすることがありました。
- [SDCOMP-28264]-O2以上が指定されたとき、特定の条件において、同じ2進数表現を持つ整数の定数が2つの異なる式で使用され、これらの式の最初が排他的論理和を含むとき、コンパイラは正しくないコードを生成することがありました。
- [SDCOMP-28248] -O2以上が指定されたとき、まれな条件において、フラグをセットしないバリアントではなく正しくないフラグをセットする命令のバリアントを含むコードのシーケンスを生成することがありました。これは、次の分岐命令が正しくない振る舞いを起こす結果となりました。
- [SDCOMP-26556] ARM Compiler 5.05 (build 41) と 5.05 update 1 (build 106) は、プリプロセッサマクロを含むコードをコンパイルする際に著しくARM Compiler 5の以前のリリースより長くかかることがありました。
- [SDCOMP-26543] -Otime --vectorizeと-O2以上が指定されてコンパイルするとき、 アドレスオーダーを減少させるような一連の構造のコピーが、コンパイラによって、アドレスオーダーを増加させるように誤って変換されることがありました。これは、ソースとディスティネーションのメモリ領域をオーバーラップすることがあり、正しくない振る舞いを引き起こすことがあります。
- [SDCOMP-26522] クラスあるいは構造体メンバ内のメンバ関数のアドレスをストアするC++コードをコンパイルするとき、コンパイラはリードオンリーデータセクションの代わりにリードライトデータセクションへメンバ関数のアドレスを置き換えることがありました。
- [SDCOMP-26226] --diag_warning=errorを使用して、エラーメッセージを警告へダウングレードするとき、コンパイラは終了コード:0を返すにも関わらず、オブジェクトファイルの生成に失敗することがありました。
- [SDCOMP-26133] volatileクラス型フィールドを間接的に含むクラス型を含んでいる共用体をコンパイルするとき、コンパイラは誤ってError: #294: invalid union member --
has a disallowed member function. をレポートすることがありました。 - [SDCOMP-26043] __declspec(noreturn) void 宣言されたmain()関数をコンパイルするとき、コンパイラは誤って Warning: #951-D: return type of function "main" must be "int". をサポートすることがありました。
- [SDCOMP-26015] --cpu=SC300オプションを指定し、__attribute__((bitband))を含むコードをコンパイルするとき、コンパイラは誤ってError: #1114: this feature not supported on target architecture/processor をレポートすることがありました。
- [SDCOMP-26001] #pragma pack(n)後に続く#pragma popが、コンパイラによって誤って無視されることがありました。
- [SDCOMP-25994] 特定の条件で、NEON組み込み関数を含むコードをコンパイルするとき、コンパイラはInternal faultをレポートすることがありました。
- [SDCOMP-25901] -O3 -Otime指定時、実行されず空あるいはbreak/continueステートメントのみの一つのifステートメントを含むループがある場合、コンパイラは誤ったコードを生成することがありました。
- [SDCOMP-25878] コンパイラは、ビットフィールドコンテナが、その型より小さく1バイトより大きい構造体のvolatile ビットフィールドメンバへのアクセスで正しくないコードを生成することがありました。
- [SDCOMP-25834] -O1以上を指定時、__attribute__((packed))/ #pragma pack(n)/__packed修飾子を使用したパックドで宣言された構造体から、long longあるいはunsigned long long型のビットフィールドへの読み込みを行うとき、コンパイラは非整列なアクセスを行わないことがありました。コンパイラは構造体の終わりを超えてメモリからのデータの読み出しを行うことがありました。
- [SDCOMP-25818] コンパイラは非volatileとvolatileビットフィールドを含む構造体の割り当てをコピーするコードで、誤ったコードを生成することがありました。
- [SDCOMP-25817]ポインタ引数が整数型ポインタ、あるいはポインタのポインタの型でなく、 __ldrex /__strex組み込み関数をコンパイルするとき、コンパイラは誤ってError: #31: expression must have integral typelをレポートすることがありました。
- [SDCOMP-25774] 通常のASCⅡ文字列がマルチバイト文字の連続したバイトとして見えるようなマルチバイトエンコーディングを使用するソースファイルのプリプロセスのとき、コンパイラは誤って#オペレータを含むマクロを拡張することがありました。
- [SDCOMP-25496] まれな条件で、--cpp11 -O3 -Otimeを指定してコンパイルするとき、コンパイラはInternal faultをレポートすることがありました。
- [SDCOMP-24118] --debugあるいは-gを指定してコンパイルするとき、コンパイラはレジスタに保持された関数パラメータのための不完全な.debug_locセクション情報を生成することがありました。
- [SDCOMP-23712] 特定の条件で、CPSRへアクセスするコードをコンパイルするとき、コンパイラはInternal faultを生成することがありました。
- [SDCOMP-22697] -O3 -Otimeを指定したとき、コンパイラは1つ以上のエンプティなステートメントを含むループへ特定の最適化を適用するのをまれに失敗することがありました。
- [SDCOMP-11575] まれな条件で、C++の派生クラスのコンストラクタと、オブジェクトとサブオブジェクトの完全なコンストラクタが結合しないコードをコンパイルするとき、 Itanium C++ ABI に従わないコードを生成することがありました。異なるC++コンパイラを使用してビルドされたコードをリンクするとき、ランタイムエラーを引き起こすことがありました。この不具合は修正されましたが、以前のバージョンのARM Compilerによって生成されたコードとの互換性には影響を与えません。
Assembler (armasm)
- [SDCOMP-25833] ARMv7-MプロセッサのMSR命令をアセンブルするとき、アセンブラは、IAPSR,EAPSRおよびXPSRレジスタのための_
修飾子を認識しませんでした。 - [SDCOMP-23084] まれな条件において、アセンブラは--listオプションで正しくない結果を生成することがありました。
Linker (armlink)
- [SDCOMP-29055] 特定の条件において、--cpp_compatを使用してリンクするとき、無名名前空間を正しく処理できない結果として、リンカは、Error: L6173E: Unmangled symbol name
does not have a unique mangled name をレポートすることがありました。 - [SDCOMP-28957] 特定の条件において、空の実行リージョンのImage$$region_name$$Lengthシンボルを解決するとき、リンカは、 Error: L6286E: ARM Linker: Execution interrupted due to an illegal storage access あるいは、 Segmentation faultをレポートすることがありました。
- [SDCOMP-28757] リンカ生成のLoad$$シンボルへの再配置を解決するとき、一つ以上前のリードライトデータの実行リージョンが圧縮されているなら、リンカはシンボルの値を誤って算出することがありました。
- [SDCOMP-28370] まれな条件で、--veneer_inject_type=poolオプションを使用するプログラムをリンクするとき、リンカはInternal faultを生成することがありました。
- [SDCOMP-24767] べニアを生成時に、STT_FUNC型のシンボルを含むデータセクショに遭遇すると、リンカは、 ARM Linker: Execution interrupted due to an illegal storage accessをレポートすることがありました。リンカは、今、Warning: L6171W: Code symbol
defined in non executable section とError: L6169E: Relocation #REL:in をレポートするようになりました。with respect to . Branch to code symbol defined in non executable section . - [SDCOMP-17870] --list=filenameオプションを使用したプログラムをリンクするとき、filenameが書き込み用にオープンできないとき、リンカは Segmentation faultをレポートすることがありました。
- [SDCOMP-12939] 特定の条件で、Error: L6286E: Relocation #
: の代わりにError: L6286E: ARM Linker: Execution interrupted due to an illegal storage accessをレポートすることがありました。in ( ) with respect to . Value( ) out of range( ) for ( ).
Libraries
- [SDCOMP-29198] deque と deque.ccで実装されていたstd::deque::operator++()と std::deque::operator+=()メソッドは、dequeに割り当てられたメモリを超えてロードデータをロードするエラーを含んでいました。これは、データアボートを引き起こす結果となるかもしれません。
- [SDCOMP-29183] vector.ccで実装されたいた std::vector::operator=()メソッドは、デスティネーションのベクタサイズがソースベクタサイズよりも大きいとき、誤った振る舞いを引き起こすエラーは含んでいました。
- [SDCOMP-28709] ターミナルデバイスへstdoutをアタッチするとき、_fisatty() ARM Cライブラリ関数が1の代わりに誤って0を返します。
- [SDCOMP-25803] -1から1の間で、厳密に実数の複雑な逆三角関数を計算するとき、 casin(), casinf(), およびcasinl()ライブラリ関数が0の代わりにNaNを結果として虚数部へ誤って返すことがありました。
その他の不具合
- [SDCOMP-29641] 特定の条件で、./../dir/input_fileといった形態の相対パスがError結果に与えられたとき、ツールが入力ファイルの発見に失敗することがありました。
- [SDCOMP-28701] スキャッタファイルのプリプロセスを通すとき、リンクステップは、同時に2つのコンパイラライセンスを必要としていました。
- [SDCOMP-24626] まれな条件で、--cpu=listオプションがサポートされたプロセッサとアーキテクチャをリストするために誤って失敗することがありました。