アップデートリリースをダウンロードするには、事前にARM社のコネクトサービスのアカウントを取得し、ログインしておく必要があります。アカウントの取得は以下のURL から無償で行う事ができます:
https://login.arm.com/register.php
ARM Compiler 6.4 のリリースノート
1.イントロダクション
1.1. ARM Compiler 6の構成
1.2. ARM Compiler 6.4でのサポート
2. インストール方法
2.1. DS-5 5.20以降への統合
2.2. スタンドアロン製品としての使用
2.3. Linux環境へのインストレーション
2.4. Windows環境へのインストレーション
3.アンインストール方法
4.簡単なプログラムのビルド
5.ドキュメンテーション
6.フィードバックとサポートについて
7.リリース履歴と変更点について
1.イントロダクション
このリリースノートは、リリース時点で最初に提供されたものです。リリースノートの最新版は、ARM Infocenter内の ARM Compiler 6 documentation sectionをご覧ください。
ARM Compiler 6.4は、以下を追加しました:
- ARMv8-RおよびARMv7-Rアーキテクチャプロファイルのフルサポート
- Cortex-A32とCortex-R8をサポート
- v7-M および v8-Mのexecute-onlyメモリをサポート
このコンパイラは、以前のリリースの生成コードを超えて良い性能をもたらす、多くの最適化も含んでいます。
ARM Compiler 6.4は、以下のように使用されることを意図しています。
- DS-5 Professional Edition あるいは DS-5 Ultimate Editionと共に、サポートされたアーキテクチャ用にビルドし、実行可能コードをデバッグする
- スタンドアロンでのツールインストレーション
これら製品から少なくとも1つの適切なライセンスが利用可能である必要があります。ライセンスについてのご質問は購入元あるいは 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 からダウンロード可能です。(登録およびログインが必要です)
1.1. ARM Compiler 6の構成
ARM Compiler 6は、ARM Compiler 5の後継であり、以下にリストされたコンポーネントを含みます。以前のプロジェクトからプロジェクトを移行するための情報は、製品ドキュメンテーション内のMigration and Compatibility Guideをご覧ください。
-
armclang
- armclangはarmccの後継で、LLVMテクノロジをベースとしている
-
armlink、armasm、fromelf、armasm
- armlink、armasm、fromelfおよびamarはARMv8をサポートするために拡張され、ARM Compiler5と同様に振る舞います
-
組込みシステム向けのARM C/C++ライブラリ
- 標準のARMコンパイラ組込みライブラリはARMv8をサポートするために拡張され、機能的には完全に一致していない可能性がありますが、ARM Compiler 5で見出されるものと同様に振る舞います
- ARM Compiler 6は、C++標準テンプレートライブラリとして、libc++を含みます
アセンブラに関する注意事項
- GNUとARM Compilerツールチェン間の移植性を向上させるために、ARM Compiler 6はデフォルトで、GNUアセンブラシンタックスにより近いとされるLLVMに統合されたアセンブラを採用しています。LLVMに統合されたアセンブラはデフォルトでarmclangによって呼び出されます。副作用として、ARM Compiler 6はレガシーなarmccのインラインおよび組込みアセンブラを含むC/C++ソースファイルをコンパイルできません
- armasmはデフォルトでは呼び出されませんが、レガシーなarmasmシンタクスで書かれたアセンブラファイルをアセンブルするために、armasmがARM Compiler 6内に含まれます
1.2. ARM Compiler 6.4でのサポート
アーキテクチャとプロセッサ | サポートレベル |
ARMv8.2-Aと準拠するプロセッサ | アルファサポート-将来のリリースでサポート |
ARMv8.1-A、ARMV8-AおよびARMv7-A と準拠するプロセッサ | サポート済み |
ARMv8-RおよびARMv7-R と準拠するプロセッサ | サポート済み |
ARMv8-M、ARMv7-M、ARMv6-M および準拠するプロセッサ |
サポート済み |
ARMv6-M 以前のアーキテクチャ | 未サポート ARM Compiler 5 をご使用ください |
ARM 以外のアーキテクチャ | 未サポート |
サポートレベル | 詳細 |
サポート済み | 製品品質を保ち、一番高位のサポート優先度 |
ベータ | 実装は完了済みだが、テストは部分的。お客様の試用とフィードバックを歓迎 |
アルファ | 実装は未完了でテストは部分的 お客様の試用とフィードバックを歓迎 |
コミュニティ | オープンソーステクノロジで利用可能な追加の機能がARM Compiler 6に構築 お客様の試用とフィードバックを歓迎 |
未サポート | 機能がツールチェインに含まれていないか非推奨になっており、テストは未実施 使用する場合は完全な自己責任 |
2.インストール方法
ARM Compiler 6.4 が、ツールキット(例:DS-5)の一部として含まれている場合、ツールキットのインストーラがインストレーションプロセスを処理します。ツールキットのインストレーション指示を参照してください。
その他のケースの場合、ARM Compiler 6.4 をどのように使用するかに依存して適切なインストレーションの場所を選択する必要があります。
- DS-5 5.20 以降に統合する
- スタンドアロン製品として使用
2.1. DS-5 5.20 以降への統合
ARM Compiler 6.4 は、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 6.4 を使用することをおすすめします。これら環境の外でツールチェーンを使用するとき、以下の環境変数の構成が必要となります。
- DS-5インストレーション内の sw/mappings ディレクトリへのパスをARM_PRODUCT_PATHにセットします
- DS-5 Ultimate Editionを使用する場合、ARM_TOOL_VARIANT=ultをセットします
2.2. スタンドアロン製品としての使用
ARM Compiler 6.4 は、DS-5製品のそれぞれのインストレーションの外であるなら、デフォルトの場所を含み、任意の場所にインストールすることができます。
ライセンスファイルあるいはライセンスサーバの場所を指定するARMLMD_LICENSE_FILE環境変数をセットしてください。Windows上ではダブルクォーテーションをこのパス内に含めないでください。パス内の空白はクォーツなしで、動作します。
2.3. Linux環境へのインストレーション
ARM Compiler 6.4 は、以下のサポートされるプラットフォームでテストされています。
- RedHat Enterprise Linux 6 Workstation, 64-bit only
- RedHat Enterprise Linux 7 Workstation, 64-bit only
- Ubuntu Desktop Edition 14.04 LTS ,64-bit only
ARM Compiler 6.4をインストールするには、 install_x86_64.shを実行(soourceではありません)し、画面の指示に従ってください。インストーラは、ARM Compiler 6.4 をお客様が指定したディレクトリに解凍します。
armclangバイナリは、お客様の指定したディレクトリ内にARM Compiler 6.4 の一部としてインストールされたlibstdc++のコピーへ動的にリンクされています。
インストールされたいくつかのツールが32bitシステムライブラリに依存します。
ARM Compiler 5.06 update 2 を64-bit Linuxホストプラットフォームで使用するとき、32-bit互換のライブラリがインストールされていることを確認してください。 32-bit互換ライブラリがインストールされていない場合、ARM Compiler 5.06 update 2 ツールは、ライブラリが見つからず実行が失敗するあるいはエラーをレポートします。インストールに必要なライブラリは、ご使用のプラットフォームで管理者権限で適切なコマンドを実行して確認してください。
Red Hat
yum install glibc.i686
Ubuntu
apt-get install lib32stdc++6
2.4. Windows環境へのインストレーション
ARM Compiler 6.4 は、以下のサポートされるプラットフォームでテストされています。
- 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
Windows 64-bitホストプラットフォーム上でARM Compiler 6.4 をインストールするために、win-x86_64setup.exeを実行し、画面の指示に従ってください。Windows 32-bitホストプラットフォーム上でARM Compiler 6.4をインストールするために、win-x86_32setup.exeを実行し、画面の指示に従ってください。以前のバージョンのARM Compiler 6 がすでにインストールされており、アップグレードしたい場合は、以前のバージョンを一旦アンインストールしてから新しいバージョンのARM Compiler 6 をインストールいただくことを推奨します。
ARM Compiler 6は、Microsoft Visual Studio 2013のランタイムライブラリがインストールされることを必要とします。プロダクトインストーラを使用するか、あるいはこのツールチェンがDS-5の一部としてインストールされるなら、ランタイムライブラリは製品と共にインストールされます。後からコピーあるいは別のPCへインストレーションを移動される場合、ランタイムライブラリがホスト上で利用可能であることを保証する必要があります。
3. アンインストール方法
Linuxの場合、ARM Compiler 6.4 をインストールディレクトリから削除してください
Windowsの場合、コントロールパネルのプログラムの追加と削除からARM Compiler 6.4 を選択し、アンインストールボタンを押下してください
4. 簡単なプログラムのビルド
ベアメタルAArch64 システム用の非常に単純なプログラムをコンパイルするには:
(Linux) echo "int main() {}" simple.c (Windows) echo int main() {} simple.c (両システム) armclang --target=aarch64-arm-none-eabi simple.c -o simple
armclang --helpで、基本的なコマンドライオプションのヘルプを確認することができます。より詳細についてはarmclang Reference Guide をご参照ください。旧バージョンのARM Compiler からの移行に関する情報は、製品ドキュメントに含まれるMigration and Compatibility Guideをご参照ください。
5. ドキュメンテーション
ARM Compiler 6.4 の以下ドキュメントが利用可能です。
- armar User Guide
- armasm User Guide.
- armclang Reference 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をご参照ください。
6. フィードバックとサポートについて
お客様からのフィードバックは我々にとって重要です。製品のあらゆる局面において、欠陥報告と改善に関する提案を歓迎します。フィードバックあるいはサポートについて、お客様の製品の購入元あるいは、support-sw@arm.comへメールでご連絡ください。必要に応じて、ツールからの--vsnの出力、問題を再現するのに必要なソースコードおよびその他のファイルとコマンドラインを提供してください。ARM Compiler 5.06 update 2の総合的なビルド番号は、このドキュメントの最初に見出すことができます。当社へのお問い合わせは、こちら。
7. リリース履歴と変更点について
以下に、ARM Compiler 6.4 シリーズのリリース日付を示します。
- 6.4 (2016年2月にリリースされました)
以下に、新しい機能と修正された不具合を含むそれぞれのリリースで変更された概要を示します。特に指定がない限り、一つ前のリリースからの変更点を示します。それぞれの項目別に分類され、ユニークな識別子SDCOMP-<NNNNN>を伴います。もしARMへこのリリースノート内の特定の問題について連絡が必要な場合、適切な識別子を通知してください。
ARM Compiler 6.4 での変更点について
以下に以前のリリースであるARM Compiler 6.3 からの変更点を示します。
ARM Compiler 6.4 での一般的な変更点
- [SDCOMP-32922] Cortex-A32プロセッサに対するサポートが追加されました。Cortex-A32をターゲットとする場合、以下のオプションから選択してください。
armclang:
- --target=arm-arm-none-eabi -mcpu=cortex-a32
- --cpu=8-A.32
- [SDCOMP-29819] ARMv8-Rアーキテクチャに対するサポートが追加されました。ARMv8-Rアーキテクチャプロファイルをターゲットとする場合、以下のオプションから選択してください。
armclang:
- --target=arm-arm-none-eabi -march=armv8-r
- --cpu=8-R
- [SDCOMP-26229] ARMv7-Rアーキテクチャに対するサポートが追加されました。ARMv7-Rアーキテクチャプロファイルをターゲットとする場合、以下のオプションから選択してください。
armclang:
- --target=arm-arm-none-eabi -march=armv7-r (ARMv7-Rアーキテクチャプロファイル)
- --target=arm-arm-none-eabi -mcpu=cortex-r4 (Cortex-R4プロセッサ)
- --target=arm-arm-none-eabi -mcpu=cortex-r5 (Cortex-R5プロセッサ)
- --target=arm-arm-none-eabi -mcpu=cortex-r7 (Cortex-R7プロセッサ)
- --target=arm-arm-none-eabi -mcpu=cortex-r8 (Cortex-R8プロセッサ)
- --cpu=7-R (ARMv7-Rアーキテクチャプロファイル)
- --cpu=Cortex-R4 (Cortex-R4プロセッサ)
- --cpu=Cortex-R5 (Cortex-R5プロセッサ)
- --cpu=Cortex-R7 (Cortex-R7プロセッサ)
- --cpu=Cortex-R8 (Cortex-R8プロセッサ)
- [SDCOMP-32923] Cortex-R8プロセッサに対するサポートが追加されました。Cortex-R8をターゲットとする場合、以下のオプションから選択してください。
armclang:
- --target=arm-arm-none-eabi -mcpu=cortex-r8
- --cpu=Cortex-R8
- [SDCOMP-32879] ARMv8-Mのセキュリティ拡張を使用したセキュアアプリケーションのビルドをサポートしました。ARMv8-Mのセキュアアプリケーションは、以下のオプションと共にビルドできます。
armclang:
- ARMv8-Mセキュリティ拡張のセキュアステート用のコード生成を有効にする-mcmse
- 既存のインポートライブラリを読み込み、インポートライブラリ内に与えられるのと同じアドレスでを持つゲートウェイべニアを生成する--import_cmse_lib_in=filename
- 指定された位置へセキュアコードインポートライブラリを出力する--import_cmse_lib_out=filename
- [SDCOMP-30462] ARMv8-Mセキュリティ拡張を伴うセキュア関数内で浮動小数点コードを使用するためのサポートが追加されました。以下のコンパイラオプションから選択してください。
- -mfloat-abi=soft
- -mfloat-abi=softfp
-mfloat-abi=hardを使用してコンパイルする場合、セキュア関数内での浮動小数点コードの仕様はサポートされません。 - [SDCOMP-28606] ARMv7-MあるいはARMv8-Mターゲットのためのイメージを生成で、execute-onlyメモリ(XOM)領域のサポートしました。以下のオプションを選択してください。
armclang:
- execute-onlyコードを生成するための-mexecute-only
- スキャッタファイルを使用してexecute-onlyコードを配置するための--scatter と+X0セレクタ
- execute-onlyの実行領域のベースアドレスを指定するための--xo_base
- [SDCOMP-30310] ARM Compiler 6.3のSDCOMP-29034によって示されたように、Rogue Wave C++ライブラリは削除され、libc++によって置き換えられました。以下のオプションのサポートを終了しました。
armclang:
- -stdlib=legacy_cpplib
- --stdlib=legacy_cpplib
libc++を使用してコンパイルされたオブジェクトは、 Rogue Waveを使用してコンパイルされたオブジェクトと互換性を持ちません。 - [SDCOMP-30642] 以下のarmasm,armlinkおよびfromelfのオプションのサポートを終了しました。
- --cpu=8.2-A.32.v8_vfpneon
- --cpu=8.2-A.32.crypto.v8_vfpneon
- --cpu=8.2-A.64.v8_vfpneon
- --cpu=8.2-A.64.crypto.v8_vfpneon
- --cpu=8.2-A.32.v8_vfpneon の代わりに --cpu=8.2-A.32 --fpu=FP-ARMv8を使用してください。
- --cpu=8.2-A.32.crypto.v8_vfpneon の代わりに --cpu=8.2-A.32.crypto --fpu=FP-ARMv8を使用してください。
- --cpu=8.2-A.64.v8_vfpneon の代わりに --cpu=8.2-A.64 --fpu=FP-ARMv8を使用してください。
- --cpu=8.2-A.64.crypto.v8_vfpneon の代わりに --cpu=8.2-A.64.crypto --fpu=FP-ARMv8を使用してください。
- [SDCOMP-44509] 以下のリンカオプションは非推奨となりました。将来のリリースで削除されます。
- --exceptions_tables
代わりに、C++例外テーブルの生成をコントロールするために以下のコンパイラオプションから選択してください:
- C++例外テーブルの生成を有効とするための-fexceptions
- C++例外テーブルの生成を無効とするための-fno-exceptions
コンパイラのデフォルトの振る舞いは以下の通りです:
- C++の場合は-fexceptions
- Cの場合は-fno-exceptions
- [SDCOMP-44348] 以下のリンカオプションは非推奨となりました。将来のリリースで削除されます。
- --no_thumb2_library
- [SDCOMP-30815] ベアメタルの位置独立実行可能イメージ(Position Independent Executable (PIE))のサポートは非推奨となりました。以下のオプションは非推奨です。
armclang:
- -fbare-metal-pie
- --bare_metal_pie
armclang:
- ROPIコードの生成を有効にする-fropi
- RWPIコードの生成を有効にする-frwpi
- 位置独立なRO出力セクションを含むロードおよび実行領域を作るための--ropi
- 位置独立なRWおよびZI出力セクションを含むロードおよび実行領域を作るための--rwpi
これらオプションについてのより詳細な情報は、 armclang Reference Guideとarmlink User Guideをご参照ください。
- [SDCOMP-44363] サポートされるプラットフォームが以下のように変更されました。
追加されたプラットフォーム:
- Windows 10, 64-bit only
- Red Hat Enterprise Linux 5
- Ubuntu Desktop Edition 12.04 LTS
ARM Compiler 6.4 での拡張
コンパイラと統合されたアセンブラ (armclang)
- [SDCOMP-30941] #pragma clang diagnostic をサポートしました。より詳細な情報は、armclang Reference Guideをご参照ください。
- [SDCOMP-30148] -munaligned-access と -mno-unaligned-access のサポートを追加しました。これらはデータへ非アラインアクセスの制限を制御するオプションです。デフォルトは:
- 選択されたターゲットでデータへの非アラインなアクセスをサポートする-munaligned-access
- 選択されたターゲットでデータへの非アラインなアクセスをサポートしない-mno-unaligned-access
これらオプションについてのより詳細な情報は、armclang Reference Guideをご参照ください。
リンカ (armlink)
- [SDCOMP-30794] --no_unaligned_access のサポートを追加しました。このオプションはリンカが非アラインなアクセスを許可するARM Cライブラリからオブジェクトの選択することを止めます。入力オブジェクトが非アラインアクセスを許す場合、リンカは一つ以上の以下のダウングレード可能なエラーを報告します。:
- Error: L6366E: <object> attributes<att> are not compatible with the provided cpu and fpu attributes.
- Error: L6367E: <object>(<section>) attributes<attr> are not compatible with the provided cpu and fpu attributes.
- Error: L6368E: <symbol> defined in <object>(<section>) attributes<attr> are not compatible with the provided cpu and fpu attributes.
ARM Compiler 6.4 で修正された不具合
コンパイラと統合されたアセンブラ (armclang)
- [SDCOMP-44605] .archアセンブラディレクティブを含むソースをアセンブルするとき、統合されたアセンブラは、特定の条件で、error: target does not support Thumb mode.を誤って報告することがありました。この不具合は修正されました。
- [SDCOMP-30723] MAINおよびセキュリティ拡張なARMv8-Mターゲットで、しかし、浮動小数点拡張がない場合、VLLDMおよびVLSTM命令をアセンブルするとき、統合されたアセンブラは誤ってerror: instruction requires: FPARMv8. を出力することがありました。この不具合は修正されました。
- [SDCOMP-30611]シフトが省略されたとき、統合されたアセンブラは誤ってPKHTB命令をアセンブルします。。この不具合は修正されました。
- [SDCOMP-30194]AArch64ステートで -mbig-endian でコンパイルされたとき、コンパイラは誤ってリトルエンディアンフォーマットでエンコードされたデバッグ情報を生成することがありました。この不具合は修正されました。
- [SDCOMP-30073]ARMv6-Mターゲットでコンパイルするとき、コンパイラは、連続したvolatile位置からのloadあるいはそれへのstoreを、LMDあるいはSTM命令へ結合することがありました。この不具合は修正されました。
- [SDCOMP-29784]展開することができないプリプロセッサトークンを含むコードをアセンブルするとき、統合されたアセンブラは、ファイルあるいは行情報を含まない clang -cc1as: fatal error: error in backend: expected relocatable expression を報告することがありました。この問題は修正されました。統合化されたアセンブラは、 <file>:<line>:<column>: error: expected relocatable expression. を報告します。
- [SDCOMP-28848] __rev16l および __rev16ll 組込み関数向けにコンパイラは誤ったコードを生成することがありました。この不具合は修正されました。 __rev16l および __rev16ll 組込み関数は、ARM C Language Extensions (ACLE)で定義されました。
- [SDCOMP-25743] -g あるいは -gdwarf-4 と共にコードをアセンブルするとき、統合化されたアセンブラは、ソースレベルデバッグを阻止する誤ったデバッグ情報を生成することがありました。この不具合は修正されました。
古いアセンブラ (armasm)
- [SDCOMP-44526] MAINおよびセキュリティ拡張なARMv8-Mターゲットで、しかし、浮動小数点拡張がない場合、VLLDMおよびVLSTM命令をアセンブルするとき、アセンブラは誤って Error: A1854E: Unknown opcode 'vlldm', maybe wrong target CPU? あるいは Error: A1854E: Unknown opcode 'vlstm', maybe wrong target CPU? を出力することがありました。この不具合は修正されました。
- [SDCOMP-29630]AArch64ステート向けにALIGNディレクティブを含むコードセクションをアセンブルする特定の環境で、一つ以上のNOP命令の代わりに値0を含むバイトシーケンスを誤って生成することがありました。これは実行時に同期命令アボートを引き起こします。この不具合は修正されました。
リンカ (armlink)
- [SDCOMP-29584]AArch64オブジェクトを--callgraphオプションと共にリンクする特定の条件で、リンカは誤ったスタック情報あるいは Internal fault: [0x8fd35d:<ver>]を報告することがありました。この不具合は、以前は識別子SDCOMP-30415で既知の不具合として示されていました。
- [SDCOMP-28734]AArch64オブジェクトを--info=stackオプションあるいは--info=summarystackオプションと共にリンクする特定の条件で、リンカは誤ったスタック情報あるいは Internal fault: [0x8fd35d:<ver>]を報告することがありました。この不具合は、以前は識別子SDCOMP-30415で既知の不具合として示されていました。
- [SDCOMP-24039]特定の条件で、リンカはメッセージフォームError: L6788E: Scatter-loading of execution region <er1name> to [<base1>,<limit1>) will cause the contents of execution region <er2name> at [<base2>,<limit2>) to be corrupted at run-time.内に誤ったロードアドレスを報告することがありました。 この不具合は修正されました。
ライブラリおよびシステムヘッダ
- [SDCOMP-44512]標準ヘッダ stdint.h はCマクロUINTPTR_MAXについて、AArch32の場合は(2^32)-1の代わりに (2^31)-1を、 AArch64の場合は(2^64)-1の代わりに(2^63)-1を誤って定義していました。この不具合は修正されました。
- [SDCOMP-30831]printf()ファミリ関数のARM Cライブラリ実装において、%a あるいは %Aを使用した16進形式で浮動小数点数をフォーマットする際に、#フラグは指定されますが16進小数点の後の値が0のとき、フォーマット出力から誤って16進小数点文字を省略することがありました。 この不具合は修正されました。
- [SDCOMP-29760]strtod() と scanf()ファミリ関数のARM Cライブラリ実装が、C99の16進浮動小数点シンタクスの文字列を構文処理するとき、16進小数点の前のすべての桁と16進小数点の後に続く少なくとも1つの桁が0、例えば"0x0.00E"であるとき、誤った結果を返すことがありました。この不具合は修正されました。
Fromelf
- [SDCOMP-25804]armclangコンパイラを使用して生成されたオブジェクトに、--fieldoffsets --expandarraysオプションを使用すると、fromelfは誤って、それぞれの配列の全要素の代わりに配列の最初の要素のみ情報を提供していました。この不具合は修正されました。この不具合は、以前は識別子SDCOMP-25966で既知の不具合として示されていました。
ARM Compiler 6.4 の既知の不具合
- [SDCOMP-30540]AArch64ターゲット用にコンパイルされたC++オブジェクトをリンクする特定の条件で、リンカは誤ってWarning: L6806W: Relocation #RELA:<index> in <object1>(<section1>) with respect to [Anonymous Symbol]. Branch to untyped symbol in <object1>(<section2>), ABI requires external code symbols to be of type STT_FUNC.を報告することがあります。<section2>が <section1>からBL命令の範囲内なら、この警告を無視することができます。
- [SDCOMP-28016]AArch64では、long doubleはサポートされていません。
- [SDCOMP-27650] ARM Compier 6は、以下のARM Compier 5の組込み関数をサポートしません。
-
- __disable_irq
- __enable_irq
- __schedule_barrier
__disable_irq および __enable_irq の代わりに、インラインアセンブラを使用することができます。たとえば:
-
- asm("CPSID i"); /* Disable IRQs for ARMv7-A/R and ARMv8-A AArch32 */
- asm("msr DAIFClr, #2"); /* Enable IRQs for ARMv8-A AArch64 */
ARMv6-M、ARMv7-MおよびARMv8-Mをターゲットとする場合、CMSIS-COREレジスタアクセス関数の使用を推奨します。
__schedule_barrier の代わりに、ARM C Language Extensions (ACLE)で定義されている __dsb 、 __dmb あるいは __isb 組込み関数を使用することができます。 <></></>
- [SDCOMP-26080]複素数はサポートされません。
- [SDCOMP-25308] --cpu=cortex-a32 、 --cpu=cortex-a35 、 --cpu=cortex-a53 、 --cpu=cortex-a57 、 --cpu=cortex-a72 のいずれかを使用してリンクすると、リンカは誤って Fatal error: L3903U: Argument '<feature_name>' not permitted for option 'cpu'.を報告することがあります。この問題の回避方法は、 --cpu オプションなしでリンクすることです。
- [SDCOMP-25307] リンク時に --cpu=cortex-a5 オプションが使用されるとき、リンカは Error: L6366E: <object> attributes are not compatible with the provided cpu and fpu attributes を報告することがあります。コンパイル時に --target=armv7-arm-none-eabi -mcpu=cortex-a5 オプションを指定されて生成されたオブジェクトは、VFPv4とNEONが有効なことを前提としていますが、 リンカオプション --cpu=cortex-a5 は、VFPとNEONが無効なことを意図しています。この問題を回避するには、リンク時に --cpu=cortex-a5.neon オプションを使用してください。