Arm Compiler 5.06 update 6 (build 750) のリリースノート
1. 紹介
Arm Compiler 5.06は、Arm Compiler 5の最終リリースのシリーズであり、Arm Compiler 6へ継承されます。
安全認証の必要なプロジェクトの場合、認証用の特定のリリースはARM Compiler 5.06 update3 から利用できます。
Arm Compiler 5.06 update 6は、通常メンテナンス期間で最終リリースとなる予定です。 それ以降のサポートとメンテナンスはArm Compiler 拡張保守(Extended Maintenance)を通して、少なくとも2020年夏まで継続して利用可能です。Arm Compiler 5.06の認証版とArm Compiler 5.06の拡張保守(Extended Maintenance)リリースは、Arm Compiler Qualification Kitによってサポートされます。
詳細な情報は、以下のリンクをご参照ください:
- https://developer.arm.com/products/software-development-tools/compilers/arm-compiler
- https://developer.arm.com/products/software-development-tools/compilers/safety
Arm Compiler 5.06 update 6 (build 750)は、ARM Compiler 5.06のアップデートリリースであり、以下の使用を意図しています:
- DS-5 Professional Edition あるいは DS-5 Ultimate Editionと共に使用
- Keil MDK-Standard あるいは Keil-MDK Professionalと共に使用
- スタンドアロンでのツールインストレーション
これらのいずれかのライセンスと共に使用しなければなりません。 ライセンスの購入については、 https://developer.arm.com/products/buy-arm-products までご相談ください。
フローティングライセンスをご使用の場合は、armlmdおよびlmgrdをversion 11.14.1.0以降にアップデートする必要があります。 Armは、常に、お客様が、https://developer.arm.com/products/software-development-tools/license-management/downloadsから利用できる最新版のライセンスサーバソフトウェアを使用することをお勧めします。
2. インストール方法
Arm Compiler 5.06 update 6 が、ツールキット(DS-5あるいはKeik MDK)の一部として含まれている場合、ツールキットのインストーラがインストレーションプロセスを処理します。ツールキットのインストール方法を参照してください。
その他のケースの場合、Arm Compiler 5.06 update 6をどのように使用するかに依存して適切なインストレーションの場所を選択する必要があります:
- DS-5 5.20 以降に統合する
- Keil MDK 5.12 以降に統合する
- スタンドアロン製品として使用
2.1. DS-5 5.20 以降への統合
Arm Compiler 5.06 update 6 は、DS-5製品のインストレーションの外であるなら、デフォルトの場所を含み、任意の場所にインストールすることができます。
インストール後、 https://developer.arm.com/products/software-development-tools/ds-5-development-studio/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 update 6 を使用することをおすすめします。これら環境の外でツールチェーンを使用するとき、以下の環境変数の構成が必要となります:
- 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 6 は、Keil MDKインストレーションのARMサブディレクトリの下にインストールする必要があります。たとえば、Keil MDKインストレーションが C:Keil_v5ならば、C:Keil_v5ARMARM_Compiler_5.06u6にインストールすることをおすすめします。
インストール後、 http://www.keil.com/support/man/docs/uv4/uv4_armcompilers.htm で利用可能なアプリケーションノートの指示に従って、MDKプロジェクトへツールチェーンを統合することができます。
2.3. スタンドアロン製品としての使用
Arm Compiler 5.06 update 6は、DS-5製品およびKeil MDK製品のそれぞれのインストレーションの外であるなら、デフォルトの場所を含み、任意の場所にインストールすることができます。
ライセンスファイルあるいはライセンスサーバの場所を指定するARMLMD_LICENSE_FILE環境変数をセットしてください。Windows上ではダブルクォーテーションをこのパス内に含めないでください。パス内の空白はクォートで囲まなくても動作します。
2.4. Linux環境へのインストール
Arm Compiler 5.06 update 6 は、以下のサポートされるプラットフォームでテストされています:
- Red Hat Enterprise Linux 6 Workstation.
- Red Hat Enterprise Linux 7 Workstation.
- Ubuntu Desktop Edition 14.04 LTS, 64-bit only.
- Ubuntu Desktop Edition 16.04 LTS, 64-bit only.
Installer/setup.shを実行し、画面の指示に従ってください。
32-bitインストーラのみ提供されます。ツールパッケージは、64-bitホストプラットフォーム向けに、個別に64-bit版のarmlinkを含むバイナリセットを含みます。詳細は、ドキュメンテーションをご参照ください。
インストールされたいくつかのツールが32-bitシステムライブラリに依存します。 Arm Compiler 5.06 update 6 を64-bit Linuxホストプラットフォームで使用するとき、32-bit互換のライブラリがインストールされていることを確認してください。 32-bit互換ライブラリがインストールされていない場合、 Arm Compiler 5.06 update 6 ツールは、ライブラリが見つからず実行が失敗するあるいはエラーをレポートします。インストールに必要なライブラリは、ご使用のプラットフォームで管理者権限で適切なコマンドを実行して確認してください:
- Red Hat
- yum install glibc.i686
- Ubuntu
- apt-get install lib32stdc++6
Ubuntu 16.04 LTSシステムでは、特定の32-bit glibcが使用されていない場合、32-bitツールのいくつかに致命的な障害が発生する可能性があります。必要なライブラリのインストールは、以下のコマンドを管理者権限で実行してください:
- apt-get install libc6:i386
2.5. Windows環境へのインストール
Arm Compiler 5.06 update 6 は、以下のサポートされるプラットフォームでテストされています:
- Windows Server 2012, 64-bit only.
- Windows 7 Enterprise SP1.
- Windows 7 Professional SP1.
- Windows 8.1, 64-bit only.
- Windows 10, 64-bit only.
Cygwinとの統合のサポートとCygwinパスの変換は、各リリース時に利用可能なCygwinディストリビューションに対して検証されます。
Installersetup.exe を実行し、画面の指示に従ってください。
32-bitのインストーラのみ提供されます。ツールパッケージは、64-bitホストプラットフォーム向けに、個別に64-bit版のarmlinkを含むバイナリセットを含みます。詳細は、ドキュメンテーションをご参照ください。
3. アンインストール
Linuxでは、Arm Compiler 5.06 update 6のインストレーションディレクトリを削除してください。
Windowsの場合、コントロールパネルの プログラムの追加と削除からARM Compiler 5.06 update 6を選択し、アンインストールボタンを押下してください。
4. ドキュメンテーション
Arm Compiler 5.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.
これ以上の情報は、 developer.arm.com上のArm Compiler 5 documentationをご参照ください。
5. フィードバックとサポート
お客様からのフィードバックは我々にとって重要です。製品のあらゆる局面において、欠陥報告と改善に関する提案を歓迎します。フィードバックあるいはサポートについて、お客様の製品の購入元あるいは、https://developer.arm.com/support へご連絡ください。 support-sw@arm.comへメールでご連絡ください。必要に応じて、ツールからの --vsn の出力、問題を再現するのに必要なソースコードおよびその他のファイルとコマンドラインを提供してください。
6. リリース履歴と変更点
以下に、Arm Compiler 5.06 シリーズのリリース日付を示します:
- 5.06 update 6 (2017年9月にリリースされました)
- 5.06 update 5 (2017年2月にリリースされました)
- 5.06 update 4 (2016年9月にリリースされました)
- 5.06 update 3 (2016年5月にリリースされました)
- 5.06 update 2 (2016年1月にリリースされました)
- 5.06 update 1 (2015年9月にリリースされました)
- 5.06 (2015年7月にリリースされました)
以下に、新しい機能と修正された不具合を含むそれぞれのリリースで変更された概要を示します。特に指定がない限り、一つ前のリリースからの変更点を示します。それぞれの項目別に分類され、ユニークな識別子SDCOMP-
Arm Compiler 5.06 update 6 での変更点
Arm Compiler 5.06 update 6で修正された不具合
コンパイラ (armcc)
-
[SDCOMP-48383] 特定の状況において、-O3 -Otimeまたは--vectorizeでコンパイルするとき、コンパイラは、unsigned型のオペランドを持つ後置デクリメント演算子を含む制御式を使用して do whileループの誤ったコードを生成する可能性があります。この不具合は修正されました。
-
[SDCOMP-48226] まれに、--vectorizeを使用してコンパイルすると、ビット単位のAND演算の結果に応じて値を条件付きでネゲートするforループまたはwhileループに対して、コンパイラが誤ったコードを生成する可能性があります。 これは修正されました。
-
[SDCOMP-48050] 一時オブジェクトの集約初期化を含むC++11コードをコンパイルするとき、オブジェクトに非自明(non-trivial)なデストラクタが含まれていると、コンパイラはInternal fault: [0x87ecef:
] またはWindowsのAPPCRASHエラーを報告します。この不具合は修正されました。 -
[SDCOMP-47432] 特定の状況において、Armv6T2、Armv7-A、Armv7-R、またはArmv7-Mターゲットのコンパイル時に、コンパイラがstructのsigned long long ビットフィールドメンバへのアクセスで誤ったコードを生成する可能性があります。この不具合は修正されました。
-
[SDCOMP-47401] まれに-O3 -Otimeまたは--vectorizeで --cpp11を指定してコンパイルすると、コンパイラはInternal fault: [0x50bce4:
] を報告します。この不具合は修正されました。 -
[SDCOMP-47393] まれに、-O3 -Otimeまたは--vectorizeでコンパイルすると、コンパイラは、ループインデックスをエイリアスするポインタを逆参照するforループの誤ったコードを生成する可能性があります。これにより、ループインデックスが間接参照されたときの動作が正しくない可能性があります。この不具合は修正されました。
-
[SDCOMP-47388] まれに、-O3 -Otimeまたは--vectorizeでコンパイルすると、ifブロックとelseブロックの両方の先頭に1つ以上の以下のサブステートメントが含まれているif文を含むループに対して、コンパイラが誤ったコードを生成する可能性があります:
- ビット単位シフト複合代入演算子, >>=.
- 除算複合代入演算子, /=.
この不具合は修正されました。
-
[SDCOMP-47142] まれに、 -O1以上でコンパイルするとき、コンパイラは、同じ場所からより大きい整数型へ8-bitあるいは16-bit値を2回ロードする関数の誤ったコードを生成する可能性があります。ロードされた値を1つのロードでは符号付きとして扱い、他のロードでは符号なしとして扱います。この不具合は修正されました。
-
[SDCOMP-46962] 特定の状況で、-O2以上でコンパイルすると、コンパイラはCPSIDまたは CPSIE命令だけを含むインラインアセンブリステートメントのコード生成に誤って失敗する可能性があります。この不具合は修正されました。
-
[SDCOMP-29406] 特定の状況において、マクロの展開ポイントで診断を報告するとき、コンパイラは、マクロ名の最初の文字ではなく、改行文字を間違って表示する可能性があります。この不具合は修正されました。
リンカ (armlink)
-
[SDCOMP-48776] まれに、A32とT32の両方の関数を含むプログラムをリンクすると、小さなT32関数をインライン展開するときに、A32分岐命令をA32ステートのUNPREDICTABLE命令に誤って置き換える可能性があります。この不具合は修正されました。
-
[SDCOMP-47276] 特定の状況において、リンカ未使用セクション除去メカニズムは、リンカ-定義の入力セクションシンボルを使用して参照されるセクションのみを誤って削除する可能性があります。この不具合は修正されました。
-
[SDCOMP-47224] 特定の状況において、プログラムに__atセクションが含まれていると、リンカはシンボルへの参照を誤って解決する可能性があります。 これにより、影響を受けるプログラムが誤ったメモリ位置にアクセスしたり、予期しないアドレスでコードを実行したりする可能性があります。この不具合は修正されました。
-
[SDCOMP-29653] --editとHIDE __scatterload_rt_thumb_onlyコマンドを含むステアリングをリンクすると、リンカは誤ってシンボル__scatterload_rt_thumb_onlyを非表示することに失敗しました。この不具合は修正されました。
-
[SDCOMP-22630] 特定の状況において、リード-ライトデータを含む2つ以上の__atセクションが、少なくとも1つのリード-オンリーセクションを含む実行領域内に配置されている場合、リンカはInternal fault: [0xc0fbf2:
] または、Internal fault: [0xd6a969:] を報告することがあります。この不具合は修正されました。
ライブラリ
-
[SDCOMP-45990] 特定の状況において、定数書式列とともにArm Cライブラリ関数vsscanf()を使用すると、Arm Cライブラリの不具合によりリンカがError: L6218E: Undefined symbol __0vsscanfを報告する可能性があります。この不具合は修正されました。
Fromelf
-
[SDCOMP-48404] -c -eまたは--text -c -eを使用して実行可能イメージの例外テーブル情報をデコードすると、fromelfユーティリティは、ARM_EXIDXテーブルを含むELFセクションとは異なるELFセクションのシンボルを参照するARM_EXIDXテーブルエントリの不正なシンボル名とアドレス情報をレポートします。この不具合は修正されました。
-
[SDCOMP-48381] -c, --emit=code、または--text -cを使用して逆アセンブリを生成すると、fromelfユーティリティは、PC-相対ロードまたはリロケーションを持つストア命令の不正なロード値を報告します。この不具合は修正されました。
その他の不具合
-
[SDCOMP-49019] 特定の状況において、アセンブラ、コンパイラ、またはリンカプロセスが別のツールをサブ-プロセスとして起動したときに、すべての適切なライセンスが既に使用されていた場合、プロセスがデッドロックする可能性があります。この不具合は修正されました。
-
[SDCOMP-48808] 特定の状況において、Linuxホストプラットホームで32-bitバイナリを使用し、64-bit iノードが有効なファイルシステムを使用している場合、ツールが誤って、Unable to determine the current toolkit. Check that ARM_TOOL_VARIANT is set correctly. ARM Compiler could not determine the product installation it is part of. を報告することがあります。この不具合は修正されました。