ARM Compiler 6.7 のリリースノート
目次
1.イントロダクション
1.1. ARM Compiler 6の構成
1.2. ARM Compiler 6.7でのサポート
2. インストール方法
2.1. DS-5 5.20以降への統合
2.2. MDK-ARM 5.22以降への統合
2.3. スタンドアロン製品としての使用
2.4. Linux環境へのインストレーション
2.5. Windows環境へのインストレーション
3.アンインストール方法
4.ドキュメンテーション
5.フィードバックとサポートについて
6.リリース履歴と変更点について
1.イントロダクション
ARM Compiler 6.7は、以下のように使用されることを意図しています。
- DS-5 Professional Edition あるいは DS-5 Ultimate Editionと共に、サポートされたアーキテクチャ用にビルドし、実行可能コードをデバッグする
- MDK-ARMに統合して使用する
- スタンドアロンでのツールインストレーション
これら製品から少なくとも1つの適切なライセンスが利用可能である必要があります。ライセンスの購入については info-arm@dts-insight.co.jpへご連絡ください。
フローティングライセンスをご使用の場合は、armlmdおよびlmgrdをversion 11.14.1.0以降にアップデートする必要があります。ARMでは、常にhttps://developer.arm.com/products/software-development-tools/license-management/downloadsから入手できる最新バージョンのライセンスサーバーソフトウェアを使用することをお勧めします。
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.7でのサポート
アーキテクチャとプロセッサ | サポートレベル |
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.7 が、ツールキット(例:DS-5)の一部として含まれている場合、ツールキットのインストーラがインストレーションプロセスを処理します。ツールキットのインストレーション方法を参照してください。
その他のケースの場合、ARM Compiler 6.7 をどのように使用するかに依存して適切なインストレーションの場所を選択する必要があります。
- DS-5 5.20 以降に統合する
- MDK-ARM 5.22 以降に統合する
- スタンドアロン製品として使用
2.1. DS-5 5.20 以降への統合
ARM Compiler 6.7 は、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.7 を使用することをおすすめします。これら環境の外でツールチェーンを使用するとき、以下の環境変数の構成が必要となります。
- DS-5インストレーション内の sw/mappings ディレクトリへのパスをARM_PRODUCT_PATHにセットします
- DS-5 Ultimate Editionを使用する場合、ARM_TOOL_VARIANT=ultをセットします
2.2. MDK-ARM 5.22 以降への統合
ARM Compiler 6.7 は、Keil MDKインストレーションのARMサブディレクトリ以下にインストールする必要があります。たとえば、Keil MDKインストレーションがC:Keil_v5の場合、C:Keil_v5ARMARMCompiler6.7へインストールすることをおすすめします
インストール後、http://www.keil.com/support/man/docs/uv4/uv4_armcompilers.htmのチュートリアルで示す方法に従って、MDKのプロジェクトへツールチェーンの統合が可能です。
2.3. スタンドアロン製品としての使用
ARM Compiler 6.7 は、DS-5製品のそれぞれのインストレーションの外であるなら、デフォルトの場所を含み、任意の場所にインストールすることができます。
ライセンスファイルあるいはライセンスサーバの場所を指定するARMLMD_LICENSE_FILE環境変数をセットしてください。Windows上ではダブルクォーテーションをこのパス内に含めないでください。パス内の空白はクォーツなしで、動作します。
2.4. Linux環境へのインストレーション
ARM Compiler 6.7 は、以下のサポートされるプラットフォームでテストされています。
- 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.7 は、古いプロットフォームでは動作しません。
ARM Compiler 6.7をインストールするには、 install_x86_64.shを実行(soourceではありません)し、画面の指示に従ってください。インストーラは、ARM Compiler 6.7 をお客様が指定したディレクトリに解凍します。
armclangバイナリは、お客様の指定したディレクトリ内にARM Compiler 6.7 の一部としてインストールされたlibstdc++のコピーへ動的にリンクされています。
インストールされたいくつかのツールが32bitシステムライブラリに依存します。
ARM Compiler 6.7 を64-bit Linuxホストプラットフォームで使用するとき、32-bit互換のライブラリがインストールされていることを確認してください。 32-bit互換ライブラリがインストールされていない場合、ARM Compiler 6.7 ツールは、ライブラリが見つからず実行が失敗するあるいはエラーをレポートします。インストールに必要なライブラリは、ご使用のプラットフォームで管理者権限で適切なコマンドを実行して確認してください。
Red Hat
yum install glibc.i686
Ubuntu
apt-get install lib32stdc++6
2.5. Windows環境へのインストレーション
ARM Compiler 6.7 は、以下のサポートされるプラットフォームでテストされています。
- 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.7 をインストールするために、win-x86_64setup.exeを実行し、画面の指示に従ってください。Windows 32-bitホストプラットフォーム上でARM Compiler 6.7をインストールするために、win-x86_32setup.exeを実行し、画面の指示に従ってください。以前のバージョンのARM Compiler 6 がすでにインストールされており、アップグレードしたい場合は、以前のバージョンを一旦アンインストールしてから新しいバージョンのARM Compiler 6 をインストールいただくことを推奨します。
ARM Compiler 6は、Microsoft Visual Studio 2015のランタイムライブラリがインストールされることを必要とします。プロダクトインストーラを使用するか、あるいはこのツールチェンがDS-5の一部としてインストールされるなら、ランタイムライブラリは製品と共にインストールされます。後からコピーあるいは別のPCへインストレーションを移動される場合、ランタイムライブラリがホスト上で利用可能であることを保証する必要があります。
3. アンインストール方法
Linuxの場合、ARM Compiler 6.7 をインストールディレクトリから削除してください
Windowsの場合、コントロールパネルのプログラムの追加と削除からARM Compiler 6.7 を選択し、アンインストールボタンを押下してください
4. ドキュメンテーション
ARM Compiler 6.7 の以下ドキュメントが利用可能です。
- User Guide
- 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.
- Migration and Compatibility Guide.
- Software Development Guide.
- Errors and Warnings Reference Guide.
- Scalable Vector Extension User Guide.
これ以上の情報は、developer.arm.comのARM Compiler 6 documentationをご参照ください。
5. フィードバックとサポートについて
お客様からのフィードバックは我々にとって重要です。製品のあらゆる局面において、欠陥報告と改善に関する提案を歓迎します。フィードバックあるいはサポートについて、お客様の製品の購入元あるいは、support-sw@arm.comへメールでご連絡ください。必要に応じて、ツールからの--vsnの出力、問題を再現するのに必要なソースコードおよびその他のファイルとコマンドラインを提供してください。当社へのお問い合わせは、こちら。
6. リリース履歴と変更点について
以下に、ARM Compiler 6.7 シリーズのリリース日付を示します。
- 6.7 (2017年3月にリリースされました)
以下に、新しい機能と修正された不具合を含むそれぞれのリリースで変更された概要を示します。特に指定がない限り、一つ前のリリースからの変更点を示します。それぞれの項目別に分類され、ユニークな識別子SDCOMP-<NNNNN&agt;を伴います。もしARMへこのリリースノート内の特定の問題について連絡が必要な場合、適切な識別子を通知してください。
ARM Compiler 6.7 での変更点について
以下に以前のリリースであるARM Compiler 6.6 からの変更点を示します。
ARM Compiler 6.7 での一般的な変更点
-
[SDCOMP-47776]DS-5 Professionalのライセンスで、ARMv8-Mターゲットをサポートするようになりました
-
[SDCOMP-46101] ARM Compiler 6.7は、FlexNet Publisher 11.14.1.0クライアントライブラリを含みます。このバージョンのライセンスクライアントは、以前のバージョンのFlexNet Publisherライセンスサーバソフトウェアと互換性がありません。11.14.1.0よりも古いバージョンの armlmd および lmgrd がライセンスサーバとして動作しているとき、ARM Compiler 6.7は、以下のように報告します:
- Failed to check out a license.Bad message command.
- Failed to check out a license.Version of vendor daemon is too old.
- Flex error code: -83.
- Flex error code: -140.
armlmd および lmgrd を実行するライセンスサーバ バージョン 11.14.1.0(またはそれ以降)は、ARM Compiler 6.7および以前のリリースのARMツールと互換性があります。
ARM社は、https://developer.arm.com/products/software-development-tools/license-management/downloadsから使用可能な、ライセンスサーバソフトウェアの最新版を使用することをおすすめします。
-
[SDCOMP-22268] 以前は、execute-onlyセクションを生成するとき、ツールはELFセクションヘッダフラグへSHF_ARM_NOREADを設定していました。 間もなく発行されるApplication Binary Interface (ABI) for the ARM Architectureの変更に準拠するため、この振る舞いは変更されました。execute-onlyセクションは、ツールはELFセクションヘッダフラグへ SHF_ARM_PURECODEを設定します。
ARM Compiler 6.7 での拡張
コンパイラと統合されたアセンブラ (armclang)
-
[SDCOMP-47906] 浮動小数点標準準拠のレベルを指定するために使用可能な-ffp-mode=model オプションのサポートが追加されました。:
- -ffp-mode=std は、デフォルトのコンパイラの振る舞いを選択します。
- -ffp-mode=fast は、-ffast-mathと同等です
- -ffp-mode=full は、-fno-fast-mathと同等です
ARMは、-ffast-math あるいは -fno-fast-mathよりも、-ffp-modeの使用を推奨します。
このオプションに関する更なる情報は、armclang Reference Guideをご参照ください。
-
[SDCOMP-46994] ARM Compiler v5の機能との互換性を向上させるために、__attribute__((value_in_regs)) 関数属性のサポートが拡張されました。
更なる情報については、armclang Reference Guide内、__attribute__((value_in_regs)) function attribute 章をご参照ください。
-
[SDCOMP-45510] T32ステート用にアセンブルするとき、暗黙の IT ブロックを生成するためのサポートが追加されました。 IT ブロック外に条件付き命令がある場合、インラインアセンブラと統合アセンブラの動作を指定するには、次のオプションを使用します:
- -mimplicit-it=name
このオプションに関する更なる情報は、armclang Reference Guideをご参照ください。
-
[SDCOMP-32841] これまで、-Osでコンパイルすると、コンパイラはベクトル化中に生成されたリテラルプールを128ビットの境界にオーバーライドしていました。この振る舞いは変更されました。コンパイラは過剰なパディングの追加を避けるようになりました。
リンカ (armlink)
-
[SDCOMP-45933] .bss.ARM.__at_<address>という__at セクションのサポートが追加されました。リンカは、関連付けられたZI データを指定されたアドレスに配置します。
ARM Compiler 6.7 で修正された不具合
コンパイラと統合されたアセンブラ (armclang)
-
[SDCOMP-47603] インラインアセンブラおよび統合アセンブラは、MSR 命令の無効な特殊レジスタマスクを誤って受け取り、マスクビットをすべて設定した命令を生成します。これは修正されました。インラインアセンブラと統合アセンブラで、error: invalid operand for instructionが報告されるようになりました。
-
[SDCOMP-47531] T32ステート用にアセンブルするとき、インラインアセンブラおよび統合アセンブラは、誤って、ITブロック内のPCに書き込む命令の診断に失敗し、IT ブロック内の最後の命令はUNPREDICTABLEではありませんでした。これは修正されました。インサインアセンブラおよび統合アセンブラは、error: instruction must be outside of IT block or the last instruction in an IT blockを報告します。
-
[SDCOMP-47098] __attribute__((value_in_regs)) で注釈され、戻り値の型が不完全な関数をコンパイルすると、コンパイラは誤ってSegmentation fault (core dumped)を報告することがあります。これは修正されました。コンパイラは、error: cannot qualify incomplete type <type> for 'value_in_regs' calling conventionを報告します。
-
[SDCOMP-47039] M-プロファイルターゲット用にコンパイルするとき、コンパイラは、xPSR以外のシステムレジスタにアクセスする__arm_wsr組み込み関数用にUNDEFINEDな命令を誤って生成します。これは修正されました。
-
[SDCOMP-47031] 特定の状況で、-O0以外の最適化レベルでコンパイルすると、コンパイラは、__builtin_arm_get_fpscr 組み込み関数を少なくとも2回呼び出す関数に対して不正なコードを生成する可能性があります。これは修正されました。
-
[SDCOMP-46934] T32ステートでアセンブルするとき、インラインアセンブラおよび統合アセンブラは、フラグ設定バリアントとしてのみ使用可能な命令のフラグ保存バリアントを含むソースに対してerror: invalid instruction を報告します。これは修正されました。インラインアセンブラおよび統合アセンブラは、今、 error: no flag-preserving variant of this instruction availableを報告します
-
[SDCOMP-46899] 特定の状況で、T32ステート用にコンパイルするときに、コンパイラが条件付きコプロセッサ命令のA32エンコーディングを誤って生成する可能性があります。これは修正されました。
-
[SDCOMP-46865] まれに、<expression1> あるいは <expression2>にビットシフト操作が含まれる、<condition> ? <expression1> : <expression2>という形式の式に対して誤ったコードを生成する可能性があります。これは修正されました。
-
[SDCOMP-46731] T32ステート用にアセンブルするとき、インラインアセンブラおよび統合アセンブラは、PCを変更する16-bit LDR命令に誤ってerror: instruction requires: arm-modeを報告します。 これは修正されました。
-
[SDCOMP-46697] まれに、-O2以上あるいは-Osでコンパイルすると、コンパイル時に評価可能なインデックスを使用するデータアクセスに対して、コンパイラが誤ったコードを生成する可能性があります。これは修正されました。
-
[SDCOMP-46600] まれに、ARMv6-Mターゲットまたはメイン拡張なしのARMv8-Mターゲット用に-O0でコンパイルすると、コンパイラが一連の算術演算の誤ったコードを生成する可能性があります。これは修正されました。
-
[SDCOMP-46445] まれに、定数式をコンパイルするときに、コンパイラがfatal error: error in backend: expected relocatable expressionというエラーを誤って報告します。これは修正されました。
-
[SDCOMP-46415] まれに、ARMv6-Mターゲットあるいはメイン拡張なしのARMv8-Mターゲット用に-O0でコンパイルすると、コンパイラが誤ったコードを生成し、大きな関数から戻ったときにスタックポインタが壊れてしまう可能性があります。これは修正されました。
-
[SDCOMP-46399] -march=armv8.3-a+nofpを指定してアセンブルすると、インラインアセンブラおよび統合アセンブラは、誤ってFJCVTZS命令を許していました。これは修正されました。インラインアセンブラおよび統合アセンブラは、今、error: instruction requires: fp-armv8と報告します。
-
[SDCOMP-46397] ARMv8.3-Aターゲット用にAArch64ステートでアセンブルするとき、 インラインアセンブラおよび統合アセンブラは、ポインタ符号キーレジスタに書き込むMSR命令を誤って拒否します。これは修正されました。
-
[SDCOMP-45722] -march=armv8-m.main+dspでアセンブルするとき、インラインアセンブラおよび統合アセンブラは、UXTB16 および SXTB16命令に対して、誤ってerror: instruction requires: arm-modeを報告します。これは修正されました。
-
[SDCOMP-45626] ARMコンパイラで提供されているlibc++ライブラリとシンボル__use_no_semihostingを定義するオブジェクトをリンクすると、セミホスティングなしの__sys_open()を再実装しているにもかかわらず、リンカは誤ってError: L6915E: Library reports error: __use_no_semihosting_swi was requested, but _sys_open was referenced を報告します。これは修正されました。
-
[SDCOMP-32908] 特定の状況で、#0の即時シフトを持ち、ITブロックに含まれているLSL命令をアセンブルするとき、インラインアセンブラと統合アセンブラは、予測不可能な動作のMOV命令を誤って生成する可能性があります。これは修正されました。
-
[SDCOMP-30185] 特定の状況で、C++例外を使用してビルドされたオブジェクトをリンクするとき、リンカーは、非アラインなアクセスを許可するライブラリコードを選択することがありました。非アラインなデータアクセスが無効になっているか、ターゲットが非アラインなデータアクセスをサポートしていない場合、データアボートが発生する可能性があります。これは修正されました。
-
[SDCOMP-29396] コンパイル時に評価することができない.equディレクティブを含む別のアセンブリファイルを含むファイルをアセンブルする場合、統合アセンブラは<unknown>:0: error: expression could not be evaluatedのみ報告します。これは修正されました。統合アセンブラは、関連するファイル名、行番号、およびソース行も報告するようになりました。
古いアセンブラ (armasm)
-
[SDCOMP-47141] アセンブラは、1.79769313486231571e+308より大きく1.0e+309より小さい浮動小数点リテラルを誤って受け取り、浮動小数点値-0.0としてそれらを表現します。これは修正されました。アセンブラは、今、Error: A1407E: Overlarge floating point valueを報告します。
-
[SDCOMP-46908] 特定の状況で、.32, .I32, .S32, あるいは .U32サフィックスを持つVMOV命令をアセンブルするとき、アセンブラは誤ってError: A1887E: Specified source data type not allowed; must be one of: F32を報告します。これは修正されました。
-
[SDCOMP-46661] 特定の状況で、--cpu=8-M.Main.dspを使用してアセンブルする場合、アセンブラは、リンカが最適なライブラリを選択しないビルド属性を含むオブジェクトを生成する可能性があります。これは修正されました。
リンカ (armlink)
-
[SDCOMP-47040] まれに、少なくとも1つのC++オブジェクトを含むコードを静的記憶域期間でリンクすると、リンカーは __cpp_initialize__aeabi_()ライブラリ関数を含むことを誤って失敗することがありました。これにより、静的なC++オブジェクトが正しく初期化されなくなります。これは修正されました。
-
[SDCOMP-46703] 特定の状況で、AArch32でAArch64に--pagedあるいはリンクし、ZI セクションのアラインメント要件が同じ実行領域内のRWセクションよりも大きいスキャッタファイルを使用する場合、リンカは出力セクションを重複するイメージを誤って生成することがありました。これにより、データが誤った値に初期化されました。これは修正されました。
-
[SDCOMP-46598] 特定の状況で、プログラムに__at セクションが含まれていると、リンカはシンボルへの参照を誤って解決する可能性があります。これにより、影響を受けるプログラムが誤ったメモリ位置にアクセスしたり、予期しないアドレスでコードを実行したりする可能性があります。これは修正されました。
-
[SDCOMP-46588] 例えば--cpu=Cortex-M4.no_fp, --cpu=Cortex-M7.no_fp, あるいは --cpu=Cortex-R5.no_vfpのような、浮動小数点サポートのない--cpu=nameでリンクするとき、リンカは誤って浮動小数点命令を含むオブジェクトがリンクされるのを許していました。これは修正されました。
-
[SDCOMP-22630] 特定の状況で、読み出し/書き込みデータを含む2つ以上の__at セクションが、少なくとも1つのリードオンリー専用セクションを含む実行領域内に配置されている場合、リンカーは Internal fault: [0xc0fbf2:<ver>]を報告しました。これは修正されました。
ライブラリおよびシステムヘッダ
-
[SDCOMP-47541] expf() のARMコンパイラライブラリの実装では、入力引数が-0x1p-24 ~ -0x1p-25のとき、最終桁単位(ULP)で不正確な結果が返されました。これは修正されました。現在、結果の値は、正確な値に近い値となります。
-
[SDCOMP-47475] microlibライブラリには、HLT命令を使用するセミホスト機能の変形が含まれていませんでした。したがって、シンボル __use_full_stdio を定義する入力オブジェクトをmicrolibとリンクするとき、リンカはSVC命令を含むセミホスティングされたライブラリ関数を選択します。これにより、生成されたイメージは、SVCではなくHLTをサポートするターゲット上でアボートする可能性があります。これは修正されました。
-
[SDCOMP-47275] 特定の状況で、副作用を持つ式でassert() マクロを呼び出すコードをコンパイルすると、コンパイラは誤って、warning: the argument to '__builtin_assume' has side effects that will be discarded [-Wassume]を報告する可能性があります。これは修正されました。
-
[SDCOMP-47150] 特定の状況で、入力文字列が範囲 (1.79769313486231571e+308, 1.0e+309) にある数を表すときに、strtod() および wcstod() のARMコンパイラライブラリ実装がinfの代わりに-0.0 を誤って返すことがありました。これは修正されました。
-
[SDCOMP-47048] まれに、expm1f()のARMコンパイラライブラリの実装では、入力引数が0.8110728 ~ 0.8231074のときに、最終桁単位((ULP))で不正確な結果が返されることがありました。これは修正されました。
-
[SDCOMP-46050] 特定の状況下で、プログラムが完全なIEEE 754浮動小数点標準に準拠するように構築されている場合、以下の文字列を浮動小数点へ変換する関数のARMコンパイラライブラリの実装は正しく動作しません:
- atof().
- strtod().
- strtof().
- strtold().
- 浮動小数点変換指定子を使用する場合のscanf()ファミリ関数
影響を受ける機能:
- IEEE不正確、オーバーフロー、またはアンダーフロー例外フラグの設定に誤って失敗します
- 結果を-0, 0, -inf, or infへ誤って丸めます
- ERANGEが予想されるとき、errnoへ0が設定されます
これは修正されました。
-
[SDCOMP-45329] まれに、microlibの printf()ファミリ関数の実装で、フォーマット変換指定%%を処理するときに%の代わりに%%を間違って記述することがありました。これは修正されました。
-
[SDCOMP-30369] 入力文字列によって表される数値がfloatではなくdoubleの範囲内にある場合、 strtof()のARMコンパイラライブラリの実装でerrnoが誤ってERANGEに設定されていました。これは修正されました。
-
[SDCOMP-29945] setlocale() のARMコンパイラライブラリの実装では、* 文字で始まり無効な形式のロケール文字列を誤って受け取り、無効なポインタを含むようにCライブラリの内部ロケールの状態を更新します。これにより予期しない動作が発生する可能性があります。これは修正されました。
その他の不具合
-
[SDCOMP-29403] 特定の状況で、Linuxホストプラットフォームで、64bit iノードが有効になっているファイルシステムを使用する場合、ツールは次のいずれかを報告することがあります:
- Error: #5: cannot open <entity> input file "<filename>": Value too large for defined data type.
- Error: #2918: cannot open <entity> file "<entity>": not a regular file.
これは修正されました。
ARM Compiler 6.7 の既知の不具合
-
[SDCOMP-47864] Scalable Vector Extension(SVE)をサポートするターゲットに対して、-march=name+sve を指定してコンパイルするとき、リンク時間の最適化(LTO)はサポートされません。LTOの使用を避けるには:
- -fltoオプションを使用してコンパイルしないおよび--ltoを使用してリンクしない
- -Omaxでコンパイルするときは、-fno-ltoでコンパイルし、--no_ltoでリンクします。
-
[SDCOMP-47620] 特定の状況で、ハードウェア浮動小数点リンケージを持つターゲットに対して -mexecute-onlyを指定してコンパイルすると、コンパイラはexecute-onlyコード内でリテラルプールを誤って生成する可能性があります。この結果リンカは、 Error: L6837E: Illegal data mapping symbol found in execute-only section <object>(<section>) at offset <offset>をレポートします。この問題の回避策は、-mfloat-abi=softでコンパイルすることです。
-
[SDCOMP-28016] AArch64では、long double をサポートしていません。
-
[SDCOMP-26080] 複素数はサポートされません。
-
[SDCOMP-25308] --cpu=cortex-a32, --cpu=cortex-a35, --cpu=cortex-a53, --cpu=cortex-a57, --cpu=cortex-a72, or --cpu=cortex-a73のいずれかを使用してリンクすると、リンカは誤ってFatal error: L3903U: Argument '<feature_name>' not permitted for option 'cpu'を報告することがあります。この問題の回避方法は、--cpu オプションなしでリンクすることです。