アップデートリリースをダウンロードするには、事前にARM社のコネクトサービスのアカウントを取得し、ログインしておく必要があります。アカウントの取得は以下のURL から無償で行う事ができます:
https://login.arm.com/register.php
ARM Compiler toolchain v5.06 update3 (build 300)
1.イントロダクション
ARM Compiler 5.06は、ARM Compiler 5の最終リリースのシリーズであり、ARM Compiler 6へ継承されます。
次のアップデートリリースであるARM Compiler 5.06 update 3が、通常のARM Compiler 5.06メンテナンス期間で最終リリースとなる予定です。それ以降のサポートとメンテナンスはARM Compiler 拡張保守(Extended Maintenance)を通して利用可能です。ARM Compiler 5.06の拡張保守(Extended Maintenance)リリースは、ARM Compiler Qualification Kitによってサポートされます。
詳細な情報は、以下のリンクをご参照ください。
ARM Compiler 5.06 update 3 (build 300)は、ARM Compiler 5.06のアップデートリリースであり、以下の使用を意図しています。
- DS-5 Professional Edition あるいは DS-5 Ultimate Editionと共に使用
- Keil MDK-Standard あるいは Keil-MDK Professionalと共に使用
- スタンドアロンでのツールインストレーション
ライセンスについてのご質問は購入元あるいは license.support@arm.comへのメールで行ってください。
フローティングライセンスをご使用の場合は、armlmdおよびlmgrdをversion 11.12.1.0以降にアップデートする必要があります。
2015年11月に、Flexera社は FlexNet Publisherのベンダデーモンコンポーネントとlmgrdで発見されたセキュリティの脆弱性を発表しました。Flexera社は脆弱性が利用されたと信じるに足る根拠はないものの、FlexNet Publisher version 11.13.1.2でセキュリティアップデートを提供しました。このため、ライセンスサーバを少なくともこのバージョンへアップグレードすることをお勧めします。FlexNet Publisher 11.13.1.2 のライセンスサーバソフトウェアは、https://silver.arm.com/browse/BX002 からダウンロード可能です。(登録およびログインが必要です)
2.インストール方法
ARM Compiler 5.06 update 3 が、ツールキット(DS-5あるいはKeik MDK)の一部として含まれている場合、ツールキットのインストーラがインストレーションプロセスを処理します。ツールキットのインストレーション指示を参照してください。
その他のケースの場合、ARM Compiler 5.06 update 3をどのように使用するかに依存して適切なインストレーションの場所を選択する必要があります。
- DS-5 5.20 以降に統合する
- Keil MDK 5.12 以降に統合する
- スタンドアロン製品として使用
2.1. DS-5 5.20 以降への統合
ARM Compiler 5.06 update 3 は、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 Update3 を使用することをおすすめします。これら環境の外でツールチェーンを使用するとき、以下の環境変数の構成が必要となります。
- DS-5インストレーション内の sw/mappings ディレクトリへのパスをARM_PRODUCT_PATHにセットします
- DS-5 Ultimate Editionを使用する場合、ARM_TOOL_VARIANT=ultをセットします
2.2. Keil MDK 5.12 以降への統合
ARM Compiler 5.06 update 3は、Keil MDKインストレーションのARMサブディレクトリの下にインストールする必要があります。たとえば、Keil MDKインストレーションが C:Keil_v5ならば、C:Keil_v5ARMARM_Compiler_5.06u3にインストールすることをおすすめします。
インストール後、http://www.keil.com/appnotes/docs/apnt_267.aspで利用可能なアプリケーションノートの指示に従って、MDKプロジェクトへツールチェーンを統合することができます。
2.3. スタンドアロン製品としての使用
ARM Compiler 5.06 update 3は、DS-5製品およびKeil MDK製品のそれぞれのインストレーションの外であるなら、デフォルトの場所を含み、任意の場所にインストールすることができます。
ライセンスファイルあるいはライセンスサーバの場所を指定するARMLMD_LICENSE_FILE環境変数をセットしてください。Windows上ではダブルクォーテーションをこのパス内に含めないでください。パス内の空白はクォートで囲まなくても動作します。
2.4. Linux環境へのインストレーション
ARM Compiler 5.06 update 3は、以下のサポートされるプラットフォームでテストされています。
RedHat Enterprise Linux 6 Workstation option Ubuntu Desktop Edition 14.04 LTS (64-bit only)
Installer/setup.shを実行し、画面の指示に従ってください。
インストールされたいくつかのツールが32bitシステムライブラリに依存します。
ARM Compiler 5.06 update 3 を64-bit Linuxホストプラットフォームで使用するとき、32-bit互換のライブラリがインストールされていることを確認してください。 32-bit互換ライブラリがインストールされていない場合、ARM Compiler 5.06 update 3 ツールは、ライブラリが見つからず実行が失敗するあるいはエラーをレポートします。インストールに必要なライブラリは、ご使用のプラットフォームで管理者権限で適切なコマンドを実行して確認してください。
Red Hat
yum install glibc.i686
Ubuntu
apt-get install lib32stdc++6
2.5. Windows環境へのインストレーション
ARM Compiler 5.06 update 3は、以下のサポートされるプラットフォームでテストされています。
Windows Server 2012,64-bit only Windows 7 Enterprise SP1 Windows 7 Professional SP1 Windows 8.1,64-bit only
Installersetup.exeを実行し、画面の指示に従ってください。
32-bitのインストーラのみ提供されます。ツールパッケージは、64-bitホストプラットフォーム向けに、個別に64-bit版のarmlinkを含むバイナリセットを含みます。詳細は、ドキュメンテーションをご参照ください。
3. アンインストール方法
Linuxの場合、ARM Compiler 5.06 update 3をインストールディレクトリから削除してください
Windowsの場合、コントロールパネルのプログラムの追加と削除からARM Compiler 5.06 update 3を選択し、アンインストールボタンを押下してください
4. ドキュメンテーション
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.
これ以上の情報は、ARM InfocenterのARM Compiler 5 documentationをご参照ください。
5. フィードバックとサポートについて
お客様からのフィードバックは我々にとって重要です。製品のあらゆる局面において、欠陥報告と改善に関する提案を歓迎します。フィードバックあるいはサポートについて、お客様の製品の購入元あるいは、support-sw@arm.comへメールでご連絡ください。必要に応じて、ツールからの--vsnの出力、問題を再現するのに必要なソースコードおよびその他のファイルとコマンドラインを提供してください。ARM Compiler 5.06 update 2の総合的なビルド番号は、このドキュメントの最初に見出すことができます。当社へのお問い合わせは、こちら。
6. リリース履歴と変更点について
以下に、ARM Compiler 5.06 シリーズのリリース日付を示します。
- 5.06 update 3 (2016年5月にリリースされました)
- 5.06 update 2 (2016年1月にリリースされました)
- 5.06 update 1 (2015年9月にリリースされました)
- 5.06 (2015年7月にリリースされました)
ARM Compiler v5.06 update 3 での変更点について
ARM Compiler v5.06 update 3 での一般的な変更
- [SDCOMP-45000] 以下のプロセッサのサポートは廃止されました:
- 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
- --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
- [SDCOMP-45022] Cortex-R8をサポートしました。Cortex-R8をターゲットとするには以下のオプションを利用してください:
- --cpu=Cortex-R8
- [SDCOMP-22192] ツールのABI準拠が32-bit Application Binary Interface for the ARM Architecture のrelease 2.10 にアップデートされました。
ARM Compiler v5.06 update 3 で修正された不具合
Compiler(armcc)
- [SDCOMP-45004] 特定の状況下において--vectorizeオプションを使用すると、繰り返し処理が必要とされる式の処理を誤って生成することがありました。
- [SDCOMP-44793] 特定の状況下において-O3 -Otimeの組み合わせあるいは--vectorizeオプションを使用すると、反復変数におけるループ伝搬依存性を無視するような誤ったループコードを生成することがありました。
- [SDCOMP-44774] 特定の状況下において-O3 -Otimeオプションを使用すると、ネストしたループ内において変更されるグローバル変数の更新に失敗するような不正なコードを生成することがありました。
- [SDCOMP-44765] 特定のまれな状況下においてThumb-2テクノロジをサポートするターゲット向けにThumb状態のコードをコンパイルするとき、他のフラグ設定を行う命令の前に不正なCMP命令があらわれるようなコードシーケンスを生成することがありました。
- [SDCOMP-44757] 特定の状況下において-O1以上の最適化レベルで-biまたは --bigendオプションを使用すると、構造体のビットフィールドメンバを含む式での符号拡張において不正な結果をもたらすことがありました。
- [SDCOMP-44753] ビットバンディングをサポートしていないターゲット用にコンパイルを行う際、--bitbandオプションを不正に受け付けることがありました。コンパイラは次のエラーを返すようになりました:Error: C4368W: Selected target does not support bit-banding
- [SDCOMP-44696] まれな状況下で-O3 -Otimeの組み合わせあるいは--vectorizeオプションを使用すると、ループ本体へのエントリに失敗するような不正なコードを生成することがありました。
- [SDCOMP-44676] まれな状況下で-O3 -Otimeの組み合わせあるいは--vectorizeオプションを使用すると、ネストしたループ処理で不正なコードを生成することがありました。
- [SDCOMP-44669] デリゲートされたコンストラクタを使用するC++11の基底クラスに対して不正なコードを生成することがありました。
- [SDCOMP-44621] まれな状況下で-O1以上の最適化レベルを指定時、ポインタによってエイリアスされた関数の引数にアクセスするコードを不正に生成することがありました。
- [SDCOMP-44618] まれな状況下でライトバックを伴うLDRDまたはSTRD命令を生成した後に不正なコード生成を行う事がありました。
- [SDCOMP-44601] まれな状況下でThumb状態のコードをコンパイルするときにインクリメントまたはデクリメント演算子を伴う関係式に対し不正なコードを生成することがありました。
- [SDCOMP-44594] まれな状況下で-O2以上の最適化レベルを指定時、32ビットよりも小さなビットフィールドを1つ以上含む値によって構造体を渡される関数に対し、不正なコードを生成することがありました。
- [SDCOMP-44583] 特定の状況下で-O3 -Otime使用時、変数に対する値を条件付き代入をしなければならない箇所で無条件に代入を行うコードを不正に生成することがありました。
- [SDCOMP-44581] 特定の状況下で-O3 -Otimeの組み合わせあるいは--vectorizeオプションを使用すると、if文の制御式に含まれる関数呼び出しの引数を評価する際に不正なコードを生成することがありました。
- [SDCOMP-44559] まれな状況下でThumb状態のコードをコンパイルするときに同一の条件を伴う2つの条件式を含む関数に対して不正なコードを生成することがありました。
- [SDCOMP-44523] まれな状況下で-O3 -Otimeの組み合わせあるいは--vectorizeオプションを使用すると、オーバーフローを発生させる可能性があり、且つ異なった型またはサイズの整数を含む乗算において不正なコードを生成することがありました。
- [SDCOMP-44469] まれな状況下で-O1以上の最適化レベルを指定時、CPSRにアクセスする関数において不正なコードを生成することがありました。
- [SDCOMP-30951] 特定の状況下で-O1以上の最適化レベルを指定時、memset()を使用して負の値を構造体に書き込み、その構造体にアクセスを行うプログラムにおいて不正なコードを生成することがありました。
- [SDCOMP-30950] まれな状況下で-O1以上の最適化レベルを指定時、スタックポインタより下を指すようなポインタ引数を伴うmemcpy()へのテイルコールを不正に生成することがありました。
- [SDCOMP-30854] まれな状況下で-O3 -Otimeの組み合わせあるいは--vectorizeオプションを使用すると、符号なし整数型のイタレーション変数を持つループにおいて不正なコードを生成することがありました。
- [SDCOMP-30847] 特定の状況下で-O3 -Otimeの組み合わせあるいは--vectorizeオプションを使用すると、構造体のvolatileメンバにアクセスするループにおいて不正なコードを生成することがありました。
- [SDCOMP-30818] 特定の状況下でThumb-2テクノロジをサポートしないターゲット向けにThumb状態のコードをコンパイルするとき、alloca()関数を使用するとコンパイラがInternal fault: [0xcbb629:<ver>]をレポートすることがありました。
- [SDCOMP-29863] 特定の状況下で--multifileオプション使用時、同一の変数が不葛生のトランスレーションユニット内で定義されており、全てではないものの少なくとも1つ以上で__attribute__((at(address)))が使用されている場合不正に次のエラーをレポートすることがありました:Error: #3167: attribute "at" is missing in another translation unit
- [SDCOMP-29651] 特定の状況下で組込み関数の呼び出しにノンタイプテンプレートパラメータを使用する関数がC++コードに含まれていると正しいパラメータの値に対して誤って次のエラーをレポートすることがありました:Error: #2529: expression must be an integral constant in range
to - [SDCOMP-29350] イタレーション変数がループのボディ内で使用されない範囲ベースのforループを含むC++11コードコンパイル時、コンパイラがInternal fault: [0x6bca8b:<ver>]をレポートすることがありました。
- [SDCOMP-25441] 特定の状況下で英語以外の言語且つソースのロケールがUTF-8にセットされていない場合、コンパイラは不正なエラーメッセージを表示することがありました。
- [SDCOMP-11935] NEONをサポートするARMv7-Aターゲット向けに--fpu=vfpv2または--fpu=softvfp+vfpv2オプション使用時、VFPv3またはそれ以降の命令を不正に生成することがありました。
Assembler (armasm)
- [SDCOMP-44881] ハードウェア浮動小数点ユニットをサポートするARMv7E-Mターゲット向けにVMRSまたはVMSR命令をアセンブルする際、FPSCR以外のシステムレジスタを誤って受け付けることがありました。アセンブラは次のエラーを返すようになりました:A1477E: This register combination results in UNPREDICTABLE behaviour
- [SDCOMP-22681] NEONをサポートするARMv7-Aターゲット向けに--fpu=vfpv2または--fpu=softvfp+vfpv2オプションを使用するとソースコード中のVFPv3またはそれ以降の命令の使用に対するエラーのレポートに失敗することがありました。アセンブラは次のエラーを返すようになりました:Error: A1797E: Specified FPU is not compatible with CPU architecture
Linker (armlink)
- [SDCOMP-30022] Windows上でスキャッタファイルのプリプロセス処理を行う場合、選択されたプリプロセッサを実行する前に#!行で%
% の書式を使用して定義された環境変数の展開に失敗することがありました。
Libraries
- [SDCOMP-32959] まれな状況下でmicrolib実装のprintf()を使用してlong doubleの値を表示する際、無限ループを引き起こしてしまうことがありました。
- [SDCOMP-30944] 長さを0とした場合でもmicrolib実装のsnprintf() およびvsnprintf()関数は出力ポインタに対して不正に書き込みを行おうとすることがありました。
- [SDCOMP-30381] まれな状況下でstandardlib および microlib 実装のexpm1f()関数が不正な結果を返すことがありました。
- [SDCOMP-23349] #pragma import (__use_full_stdio)によって選択されるmicrolib実装のfclose()関数がfopen()によってメモリアロケートされたFILE構造体の開放に失敗することがあり、メモリリークを発生させる可能性がありました。