Arm Compiler for Embedded 6.17 のリリースノート
目次
紹介
Arm Compiler for Embedded 6.17 コンフィギュレーション
Arm Compiler for Embedded 6.17 でサポートされたこと
インストール方法とIDEへの統合
フィードバックとサポート
リリース履歴と変更
Arm Compiler for Embedded 6.17 での変更点
1. 紹介
Arm Compiler for Embedded 6.17 は、ベアメタルソフトウェア、ファームウェア、およびリアルタイムオペレーティングシステム(RTOS) アプリケーションを開発するための、Arm の最新の組み込みC/C++コンパイルツールチェインです。
Arm Compiler for Embedded は、Arm アーキテクチャの最新のアーキテクチャ機能と拡張のために、最も早く、最も完全で、正確なサポートを提供します。開発中のものも含め、すべての最新のArm プロセッサをサポートします。
強力な最適化手法と最適化されたライブラリを通して、Arm Compiler for Embedded は組み込みシステム開発者が挑戦的なパフォーマンス目標とメモリ制約を満たすことを可能にします。
Arm Compiler for Embedded は、自動車、家電、産業、医療、ネットワーク、鉄道、ストレージ、通信など、さまざまな業界のリーディングカンパニーで使用されています。
プロジェクトに長期保守要件または機能安全要件(EN 50128、IEC 61508、IEC 62304、およびISO 26262など)がある場合、Armは、本リリースの代わりに、
LTSおよび機能安全認証版
のArm Compiler for Embedded FuSa を検討することを強く推奨します。
Arm Compiler for Embedded 6.17 は2021年10月現在の最新リリースであり、それ以前のリリースの置き換えとなります。
Arm Compiler for Embedded 6.17 のキーとなる機能は以下の通りです:
最近リリースされたプロセッサ:
Cortex-X2, Cortex-A710 およびCortex-A510 のサポート
Armv9-A:
Armv9.3-A のアセンブリに対するアルファサポート
Armv9.2-A のサポート
Armv9.1-A のサポート
Armv9-A のサポート
Armv8-A:
Armv8.8-A のアセンブリに対するアルファサポート
Armv8-M:
VLLDM instruction Security Vulnerability (CVE-2021-35465)
に対する緩和のためのサポート
Armv8.1-M PACBTI-M 拡張のベータサポート
A-profile およびR-profile ターゲットのダイナミックリンクのサポート
Thread-Local Storage (TLS) のサポート
1.1 Arm Compiler for Embedded 6.17 コンフィギュレーション
Arm Compiler for Embedded 6.17 は以下を含みます:
ツールチェインコンポーネント:
armclang:
LLVMとClangテクノロジをベースとしたコンパイラおよび統合アセンブラ
armar:
ELFオブジェクトファイル群をまとめるアーカイバ
armlink:
オブジェクトやライブラリをまとめ、実行可能形式を生成するリンカ
fromlef:
イメージ変換ユーティリティ兼逆アセンブラ
armasm:
armasm-syntaxアセンブリコード用のアセンブラ。新しいアセンブリファイルではarmclang統合アセンブラの使用を推奨
Arm C libraries:
組込みシステム向けのランタイムサポートライブラリ
Arm C++ libraries:
LLVM libc++プロジェクトベースのライブラリ
User documentation:
User Guide:
ツールチェインの使用を助けるサンプルとガイドを提供します
Reference Guide:
ツールチェインの設定に役立つ情報を提供します
Arm C and C++ Libraries and Floating-Point Support User Guide:
非認証のArm libraryと浮動小数点サポートに関する情報を提供します
Errors and Warnings Reference Guide:
Arm Compiler for Embedded に含まれるツールがレポートするエラーやワーニングのリストを提供します
Migration and Compatibility Guide:
Arm Compiler 5 からArm Compiler for Embedded への移行を支援する情報を提供します
Release notes: 最新のリリースノートは
Arm Compiler 6 ダウンロードページ
で確認できます。
ツールチェインは以下で使用できます:
Arm Development Studio ツールキットとともに使用
Keil MDK ツールキットとともに使用(Windows 64-bit host platform上でWindows 32-bit ツールチェインを使用する必要があります)
スタンドアローンなインストレーションとして使用
これらの商品については、
代理店
にお問い合わせください。
ライセンス管理や、トラブルシューティングの為のリソースは
https://developer.arm.com/support/licensing
よりアクセスできます。
1.2 Arm Compiler for Embedded 6.17 でサポートされたこと
ライセンス条件に従い、Arm Compiler for Embedded 6.17 を使用して、以下のArm アーキテクチャおよびプロセッサ用のビルドが行えます:
Architecture
Cortex
Neoverse
Other
Standard
Automotive Enhanced
Armv9.3-A [ALPHA]
Armv9.2-AまでのArmv9-A [ALPHA]
X2
A710, A510
Armv8.8-A [ALPHA]
Armv8.7-AまでのArmv8-A
X1
A78C, A78, A77, A76, A75, A73, A72
A65
A57, A55, A53
A35, A34, A32
A78AE, A76AE
A65AE
V1
N2, N1
E1
Armv7-A
A17, A15, A12
A9, A8, A7, A5
Armv8-R AArch64 [BETA]
R82 [BETA]
Armv8-R
R52+, R52
Armv7-R
R8, R7, R5, R4F, R4
Armv8.1-MまでのArmv8-M
M55
M35P, M33
M23
Star
Armv7-M
M7, M4, M3
SecurCore SC300
Armv6-M
M1, M0, M0+
SecurCore SC000
アーキテクチャとプロセッサのサポートレベルの詳細については、関連するIDE のドキュメントを参照してください。
将来のアーキテクチャテクノロジおよび特定のプロセッサのサポートは、Arm DS Platinum Editionの一部としてのみ利用できます。Arm DS Platinum Editionは、最新のIPを開発するArmパートナー向けにデバイスがリリースされる前の開発用にのみ提供されています。Arm DS Gold Editionのすべての機能が含まれ、さらにArmから発表された最新のIPをサポートしています。詳細については、弊社
info-arm@dts-insight.co.jp
までお問い合わせください。
2. インストール方法とIDEへの統合
Arm Compiler for Embedded 6.17 は以下の64-bit x86プラットフォームをサポートします:
ホストOS
ダウンロードするツールチェインパッケージ
サポートされる使用方法
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 8
Ubuntu Desktop Edition 18.04 LTS
Ubuntu Desktop Edition 20.04 LTS
Linux 64-bit
スタンドアロン製品として使用
Arm Development Studio へ統合
Windows Server 2012
Windows Server 2016
Windows Server 2019
Windows 8.1
Windows 10
Windows 64-bit
スタンドアロン製品として使用
Arm Development Studio へ統合
Windows 32-bit
Keil MDKへ統合
注意:
ツールキット、例えばArm Development Studio の一部としてArm Compiler for Embedded 6.17 を受け取った場合、ツールキットのインストーラはインストールプロセスを実行します。
この場合、ツールキットのインストール手順に従ってください。
それ以外の場合、Arm Compiler for Embedded 6.17 の使用方法に応じて適切なインストール場所を選択する必要があります:
Arm Development Studio Bronze/Silver/Gold Edition 2021.2 以降またはPlatinum Edition 2021.c 以降に統合
Keil MDK-Professional 5.36 以降に統合
スタンドアロン製品として使用
関連する手順については以下を参照してください:
3. フィードバックとサポート
お客様からのフィードバックは我々にとって重要です。
製品のいかなる側面についても、障害報告と改善に関する提案を歓迎します。
不具合修正と機能拡張は、Arm Compiler for Embedded maintenance に従って将来のリリースに対して検討されます。
プロジェクトに長期保守要件または機能安全要件がある場合、
LTSおよび機能安全認証版
のArm Compiler for Embedded FuSa の使用を検討してください。
フィードバックあるいはサポートが必要な問題について、お仕事あるいはアカデミックなE-mailアドレスを使用してお客様の製品の購入元にご連絡をいただくか、可能であれば
https://support.developer.arm.com
でcaseをオープンしてください。
必要に応じて、ツールからの
--vsn
の出力、ツールが生成するエラーメッセージの完全な内容および問題を再現するのに必要なソースコードやその他のファイルとコマンドラインを提供してください。
当社へのお問い合わせは、
こちら
。
4. リリース履歴と変更
以下に、Arm Compiler for Embedded 6.17 シリーズのリリース日付を示します:
6.17 (2021年10月にリリースされました)
以下に、Arm Compiler for Embedded 6.17 での新しい機能と修正された不具合の概要を示します。
Arm Compiler for Embedded 6.17 は長期メンテナンスリリースではありません。Arm Compiler for Embedded maintenance ポリシーに従って、今後のリリースにおいてさらなる不具合修正と機能拡張が検討されます。
以下の情報には、技術的な不正確さや誤植が含まれる場合があります。
それぞれの変更点には、ユニークな識別子SDCOMP-
が割り振られています。
もしArmへこのリリースノート内の特定の問題について連絡が必要な場合、適切な識別子を通知してください
Arm Compiler for Embedded 6.17 での変更点
以下に直前のリリースであるArm Compiler 6.16 からの変更点を示します。
Arm Compiler for Embedded 6.17 での一般的な変更
[SDCOMP-59356] Armv9.3-A アーキテクチャに対するアセンブリのアルファサポートが追加されました。Armv9.3-A をターゲットとするには以下のarmclangオプションを使用してください:
状態
オプション
AArch64
--target=aarch64-arm-none-eabi -march=armv9.3-a
AArch32
--target=arm-arm-none-eabi -march=armv9.3-a
[SDCOMP-59355] Armv9.2-A アーキテクチャのサポートが追加されました。Armv9.2-A をターゲットとするには以下のarmclangオプションを使用してください:
状態
オプション
AArch64
--target=aarch64-arm-none-eabi -march=armv9.2-a
AArch32
--target=arm-arm-none-eabi -march=armv9.2-a
[SDCOMP-59354] Armv9.1-A アーキテクチャのサポートが追加されました。Armv9.1-A をターゲットとするには以下のarmclangオプションを使用してください:
状態
オプション
AArch64
--target=aarch64-arm-none-eabi -march=armv9.1-a
AArch32
--target=arm-arm-none-eabi -march=armv9.1-a
[SDCOMP-59266] Armv8.8-A アーキテクチャに対するアセンブリのアルファサポートが追加されました。Armv8.8-A をターゲットとするには以下のarmclangオプションを使用してください:
状態
オプション
AArch64
--target=aarch64-arm-none-eabi -march=armv8.8-a
AArch32
--target=arm-arm-none-eabi -march=armv8.8-a
[SDCOMP-59211] Armv9-A アーキテクチャのサポートが追加されました。Armv9-A をターゲットとするには以下のarmclangオプションを使用してください:
状態
オプション
AArch64
--target=aarch64-arm-none-eabi -march=armv9-a
AArch32
--target=arm-arm-none-eabi -march=armv9-a
[SDCOMP-58753] Armv8-M VLLDM instruction Security Vulnerability (CVE-2021-35465) の緩和サポートが追加されました。コンパイラのデフォルトの動作は以下のようになりました:
ターゲット
デフォルト
Armv8-M with the Main Extension
緩和無効
Armv8.1-M with the Main Extension
緩和無効
Cortex-M33
緩和有効
Cortex-M35P
緩和有効
Cortex-M55
緩和有効
Star
緩和有効
デフォルトで無効化されている緩和を有効にするには
-mfix-cmse-cve-2021-35465
オプションを使用してコンパイルしてください。
デフォルトで有効化されている緩和を無効にするには
-mno-fix-cmse-cve-2021-35465
オプションを使用してコンパイルしてください。
より詳細については、
https://developer.arm.com/support/arm-security-updates/vlldm-instruction-security-vulnerability
を参照してください。
[SDCOMP-58674] Armv9-A に対するオプションのScalable Matrix Extension (SME) のアルファサポートが追加されました。SME をターゲットとするには以下の
-march
または
-mcpu
オプションから選択してください:
SME
SME with the 16-bit integer variant (I16I64)
SME with the double-precision variant (F64F64)
-march または-mcpu オプションの選択
含まれる
含まれる
含まれる
+sme-i64+sme-f64
含まれる
含まれる
含まれない
+sme-i64
含まれる
含まれない
含まれる
+sme-f64
含まれる
含まれない
含まれない
+sme
より詳細については、Reference Guide内の
-march
または
-mcpu
の章を参照してください。
[SDCOMP-58672] Armv9-A に対するオプションのRealm Management Extension (RME) のアルファサポートが追加されました。armclang ではRME はすべてのArmv9-A ターゲットでデフォルトで有効です。
[SDCOMP-58333] Cortex-X2 プロセッサのサポートが追加されました。Cortex-X2 をターゲットとするには以下のarmclangオプションを使用してください:
暗号化拡張
オプション
含まれる
--target=aarch64-arm-none-eabi -mcpu=cortex-x2+crypto
含まれない
--target=aarch64-arm-none-eabi -mcpu=cortex-x
[SDCOMP-58331] Cortex-710 プロセッサのサポートが追加されました。Cortex-710 をターゲットとするには以下のarmclangオプションを使用してください:
状態
暗号化拡張
オプション
AArch64
含まれる
--target=aarch64-arm-none-eabi -mcpu=cortex-a710+crypto
AArch64
含まれない
--target=aarch64-arm-none-eabi -mcpu=cortex-a710
AArch32
含まれる
--target=arm-arm-none-eabi -mcpu=cortex-a710 -mfpu=crypto-neon-fp-armv8
AArch32
含まれない
--target=arm-arm-none-eabi -mcpu=cortex-a710
[SDCOMP-58333] Cortex-A510 プロセッサのサポートが追加されました。Cortex-A510 をターゲットとするには以下のarmclangオプションを使用してください:
暗号化拡張
オプション
含まれる
--target=aarch64-arm-none-eabi -mcpu=cortex-a510+crypto
含まれない
--target=aarch64-arm-none-eabi -mcpu=cortex-a510
[SDCOMP-58132] AArch64 状態でリンクをする際、Thread Local Storage (TLS) のサポートが追加されました。より詳細についてはReference Guide内の以下の章を参照してください:
Thread local storage in the bare metal and DLL-like linking models
Thread local storage in the SysV linking model
__attribute__((tls-model("model"))) variable attribute
-ftls-model
-mtls-size
-mtp
[SDCOMP-57125]
--sysv
オプションを使用してリンクする際、スキャッタファイルの使用をサポートしました。より詳細については、Reference Guide内
Requirements and restrictions for using scatter files with SysV linking model
および
--bare_metal_sysv
の章を参照してください。
[SDCOMP-55918] AArch64 状態とAArch32 状態の両方で、Bare-metal Position Independent Executable (PIE) イメージをサポートしました。より詳細についてはReference Guide内の-fbare-metal-pie および--bare_metal_pie の章を参照してください。
[SDCOMP-55122] PACBTI-M 拡張を含むArmv8.1-M ターゲットに対する分岐保護機能のベータサポートが追加されました。分岐保護機能は、以下のオプションを使用して有効化できます:
armclang:
分岐保護のレベルまたは種類を指定するには
-mbranch-protection=protection
を指定
armlink:
分岐保護用ライブラリの選択を制御するには
--library_security=protection
を指定
分岐保護命令を含むコードをアセンブルするには、
-march=name
または
-cpu=name
オプションとともに
+pacbti
を使用します。
本オプションの詳細については、User Guide内の
-march
、
-mbranch-protection
、
-mcpu
および
--library_security=protection
の章と、User Guide内の
PACBTI-M extension mitigations against ROP and JOP style attacks section
の章を参照してください。
[SDCOMP-54450] Star プロセッサのサポートがarmasm、armlink およびfromelf に追加されました。Star をターゲットとするには以下のオプションを使用してください:
DSP
浮動小数点
armclang
armasm、armlink およびfromelf
含まれる
含まれる
--target=arm-arm-none-eabi -mcpu=star
--cpu=Star
含まれる
含まれない
--target=arm-arm-none-eabi -mcpu=star -mfloat-abi=soft
--cpu=Star.no_fp
含まれない
含まれる
--target=arm-arm-none-eabi -mcpu=star+nodsp
--cpu=Star.no_dsp
含まれない
含まれない
--target=arm-arm-none-eabi -mcpu=star+nodsp -mfloat-abi=soft
--cpu=Star.no_dsp.no_fp
[SDCOMP-28503] Link-Time Optimization (LTO) を有効にしてコンパイルされたオブジェクトを含むスタティックライブラリの生成およびリンクをサポートしました。
Arm Compiler for Embedded 6.17 での機能改善
armclang
[SDCOMP-59383] コンパイラが特定の最適化を選択するために使用するヒューリスティクスが改善されました。これにより、以前のリリースとは異なる最適化が実行される可能性があります。特に
-O1
オプションを使用してコンパイルする場合の関数のインライン化において影響があります。
プロジェクトで関数のインライン展開を無効にする必要がある場合は、関数属性とコマンドラインオプションを使用して無効にできます。関数のインライン展開を無効にする方法の詳細は、Reference Guideの
__attribute__((noinline)) function attribute
および
-fno-inline-functions
の章を参照してください。
[SDCOMP-59132] 以前はwide-character 定数に複数のマルチバイト文字が含まれていた場合、コンパイラは最後のマルチバイト文字を除くすべてのマルチバイト文字を無視していました。この動作は変更され、コンパイラは次のエラーを報告するようになりました:
wide character literals may not contain multiple characters
[SDCOMP-55605] Armv8-A およびArmv8-R Cryptographic Extension 命令に対し、次のArm C Language Extensions (ACLE) 機能のテストマクロのサポートが追加されました:
__ARM_FEATURE_AES
__ARM_FEATURE_SHA2
__ARM_FEATURE_SHA3
__ARM_FEATURE_SHA512
__ARM_FEATURE_SM3
__ARM_FEATURE_SM4
[SDCOMP-51769] Run-Time Type Information (RTTI) 機能の使用時に要求されるコードの生成を無効化する
-fno-rtti
オプションのサポートが追加されました。詳細については、Reference Guide内、
-frtti
、
-fno-rtti
の章を参照してください。
armlink
[SDCOMP-57906] リンカとはバージョンが異なるコンパイラから生成されたLTO bitcode を含む入力オブジェクトを検出するためのサポートが追加されました。
入力オブジェクトが異なるバージョンのコンパイラを使用してLTO を有効にして生成されている場合、リンカは次のいずれかのエラーをレポートするようになりました:
L6123E: linking module flags 'armcompiler-version': IDs have conflicting values in '<object1>' and '<object2>'
L6123E: LTO bitcode in '<object>' was generated by an incompatible version of armclang
[SDCOMP-54447]
--info=summarysizes
の出力を標準エラーストリームstderr にリダイレクトするかどうかを制御できるよう、
--summary_stderr
および
--no_summary_stderr
オプションのサポートが追加されました。
詳細についてはReference Guide の
--summary_stderr
、
--no_summary_stderr
の章を参照してください。
ライブラリとシステムヘッダ
[SDCOMP-58167] 以前、Arm C++ library header <complex> をプログラムに含めると、C++ library I/O stream の初期化コードが常に最終イメージに含まれていました。初期化コードは必要な場合にのみ含まれるようになり、これにより特定のC++ プログラムのコードサイズが大幅に改善されます。
Arm Compiler for Embedded 6.17 で修正された不具合
armclang
[SDCOMP-59074] AArch64 状態に対し
-O0
を使用した場合、 常に
true
と評価される比較演算に対して誤ったコードを生成する可能性がありました。
[SDCOMP-59055] Armv8-M をターゲットとして
-mcmse
と
-mfloat-abi=soft
を使用した場合、
__attribute__((cmse_nonsecure_call))
でアノテーションが付けられた関数の呼び出しにおいてSecure Floating-point レジスタをクリアしないコードを誤って生成する可能性がありました。
[SDCOMP-58773] Accelerator Support Extension があるターゲットに対して
-O0
以外の任意の最適化レベルを指定した場合、コンパイラは、single-copy atomic 64-byte load 命令またはstore 命令を含むインラインアセンブリ式を含む関数に対して不正なコードを生成することがありました。
[SDCOMP-58738]
-O3
、
-Ofast
、
-Omax
の例外レベル、または
-fvectorize
を指定して、SIMD 命令をサポートするターゲット用にコンパイルすると、相互に重複するポインタを介して配列へのアクセスが含まれるループに対して誤ったコードを生成する可能性がありました。
[SDCOMP-58325] M-profile Vector Extension (MVE) を含むArmv8.1-M ターゲット用にコンパイルするとき、次のいずれかのエラーを誤ってレポートすることがありました:
clang frontend command failed due to signal
clang frontend command failed with exit code 139
[SDCOMP-58048] AArch32 状態に対し
-Oz
および
-mno-outline
なしでコンパイルする場合、無効なオフセットを持つ
LDRD
または
STRD
命令を誤って生成する可能性がありました。
[SDCOMP-58031]
-O0
以外の任意の最適化レベルを指定して、C++ ソース言語モードでコンパイルすると、コンパイラは関数を使用して初期化され、
__attribute__((section("name"))
でアノテーションが付けられた
const
変数に対して不正なコードを生成する可能性がありました。
[SDCOMP-58021] インラインアセンブラおよび統合アセンブラは、シンボル定義の後に指定された
.type
ディレクティブを持つ
T32
関数シンボルの最下位ビットとして0 を持つアドレスを誤って生成する可能性がありました。
[SDCOMP-58015] AArch64 状態に対し
-fpic
を使用してコンパイルする場合、コンパイラはFPIC ビルド属性の生成に失敗することがありました。この後、リンカはArm Compiler ライブラリのFPIC バリアントを選択しません。この問題は修正され、FPIC ビルド属性を正しく生成するようになりました。
[SDCOMP-57963] コンパイラは、
__attribute__((used))
でアノテーションが付けられている関数や変数を非グローバルからグローバルに誤って変更する可能性がありました。
[SDCOMP-57935] AArch32 状態に対し
-mfloat-abi=hard
オプションを指定してコンパイルした場合、オーバーアラインなメンバを含むHomogeneous Floating-point Aggregate (HFA)のパラメータを持つ関数に対して、誤ったコードを生成する可能性がありました。
[SDCOMP-57845] オプションの半精度融合乗算長命令をサポートするArmv8.2-A 以降をターゲットとしてコンパイルした場合、コンパイラは機能マクロ
__ARM_FEATURE_FP16_FML
ではなく
__ARM_FEATURE_FP16FML
を誤って定義していました。加えて、
arm_neon.h
システムヘッダは
__ARM_FEATURE_FP16_FML
ではなく
__ARM_FEATURE_FP16FML
を誤って使用していました。
[SDCOMP-57658] C++ 例外を有効化してC++ ソース言語モードでコンパイルする場合、コンパイラは、負の配列長を指定する
new
の式に対する
std::bad_array_new_length
例外の発生に失敗したり、配列長よりも多いイニシャライザを指定したコードを生成することがありました。
[SDCOMP-57526]
-Os
オプション指定時、
-g
または
-gdwarf-version
を使用してMain Extension のArmv8.1-M をターゲットとしてコンパイルすると、次のいずれかのエラーを誤って報告することがありました:
clang frontend command failed due to signal
clang frontend command failed with exit code 139
[SDCOMP-57463] AArch32 状態のArmv8-R をターゲットとして、以下のいずれかのオプションを使用してコンパイルする場合:
+crypto
機能を含む
-march=name
+crypto
機能を含む
-mcpu=name
-mfpu=crypto-neon-fp-armv8
コンパイラおよび統合アセンブラは、次の警告を誤ってレポートしていました:
ignoring extension 'crypto' because the 'armv8-r' architecture does not support it
[SDCOMP-57276] M-profile Vector Extension (MVE) を持つビッグエンディアンArmv8.1-M ターゲット用にコンパイルする場合、コンパイラは
vcreateq_*()
コンパイラ組み込み関数の呼び出しに誤ったコードを生成する可能性がありました。
[SDCOMP-57242] T32 状態に対し
-fno-ldm-stm
オプションを使用してコンパイルすると、誤ってLDM またはSTM 命令を生成する可能性がありました。
[SDCOMP-57207] インラインアセンブラと統合アセンブラは、正しい定数オペランドを持つ
CPY
、
DUP
、または
MOV
のSVE 命令に対し次のエラーを誤ってレポートすることがありました:
immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
[SDCOMP-57204] コンパイラは、セクションと同じ名前を持つ関数または変数に対して、次のエラーのいずれかを誤ってレポートする可能性がありました:
fatal error: error in backend: '
' label emitted multiple times to assembly file
<unknown>:0: error:
changed binding to STB_GLOBAL
<unknown>:0: error: invalid symbol redefinition
この問題は修正され、以下のエラーをレポートするようになりました:
error: <symbol> changed binding to STB_GLOBAL
error: symbol '<symbol>' is already defined
[SDCOMP-56906] AArch32 状態のCryptographic Extension がないターゲット用にコンパイルすると、インラインアセンブラと統合アセンブラがCryptographic Extension 命令のエラーレポートに失敗することがありました。この問題は修正され、インラインアセンブラと統合アセンブラは次のいずれかのエラーをレポートするようになりました:
instruction requires: aes
instruction requires: sha2
[SDCOMP-56828]
-O0
オプション指定時、<stdatomic.h> Arm C ライブラリヘッダファイルまたは<atomic> Arm C++ ライブラリヘッダファイルで定義されている関数の呼び出しに対して誤ったコードを生成することがありました。
[SDCOMP-54724]
-ffixed-r6
オプション指定時、コンパイラはスタックアライメント要件を満たさないコードを生成する可能性がありました。
[SDCOMP-53699] AArch64 状態に対し、コンパイラはオーバーアラインなメンバを含むHomogeneous Floating-point Aggregate (HFA)のパラメータを持つ関数に対して、誤ったコードを生成する可能性がありました。
[SDCOMP-50029] AArch32 状態でAdvanced SIMD Extension を含むターゲット用にコンパイルする場合、
__attribute__((aligned(N))
でアノテートされた変数
V
において
N
が
V
の自然境界よりも低い値の場合、コンパイラが警告のレポートに失敗する可能性がありました。この問題は修正され、コンパイラは次の警告を報告するようになりました:
passing <N>-byte aligned argument to <M>-byte aligned parameter '<parameter>' of '<function>' may result in an unaligned pointer access
[SDCOMP-49035]
-march=name
オプションと
-mcpu=name
オプションの両方を使用してビルドすると、コンパイラと統合アセンブラは警告のレポートに失敗することがありました。この問題は修正され、コンパイラと統合アセンブラは次の警告をレポートするようになりました:
Avoid specifying both the architecture (-march) and the processor (-mcpu) because specifying both has the potential to cause a conflict. The compiler infers the correct architecture from the processor.
armlink
[SDCOMP-57983] 使用するとマークされているELFセクションを含む入力オブジェクトをリンクする際、長い時間がかかる場合がありました。
[SDCOMP-57947]
--legacyalign
オプションなしでリンクした場合、入力オブジェクトにアラインメントが4 バイト未満のセクションが含まれているとリンカは、対応する出力セクションのアドレスが正しくないリンカ定義シンボルを生成する可能性がありました。
[SDCOMP-57871] Load Region を記述するELF プログラムヘッダの
p_memsz
フィールドの値を誤って小さすぎる値に計算する可能性がありました。
[SDCOMP-57336] LTO を有効にしてコンパイルされたオブジェクトをリンクする場合、異なるタイプのデータセクションを1 つのELF セクションに誤ってマージする可能性がありした。
fromelf
[SDCOMP-57372] DWARF 4 デバッグ情報を含むELF 形式の入力ファイルを
--interleave=source
オプションを使用して処理する場合、不正なインターリーブコメントが生成されることがありました。
[SDCOMP-57351]
--interleave=source
または
--interleave=source_only
オプションを使用してELF 形式の入力ファイルを処理する場合、fromelf ユーティリティが次のいずれかのエラーを誤ってレポートすることがありました:
Internal fault: [0x389329:<ver>]
Internal fault: [0x910ecd:<ver>]
Internal fault: [0xa052e4:<ver>]
[SDCOMP-57158] fromelfユーティリティは特定のA64
HINT
命令を
BTI
命令または
MSR
命令として誤ってディスアセンブルする可能性がありました。
ライブラリとシステムヘッダ
[SDCOMP-58588]
mbsrtowcs()
および
wcsrtombs()
関数のArm C ライブラリ実装で、デスティネーションポインタがNULL ポインタの場合、ソースポインタが指すポインタオブジェクトが誤って更新されることがありました。
[SDCOMP-58561]、
snprintf()
、
swprintf()
、
vsnprintf()
、および
vswprintf()
関数のArm C ライブラリ実装で、バッファに空の文字列が誤って書き込まれる可能性がありましたが、負ではない結果が返されていました。
[SDCOMP-58560] AArch64 状態の
scalblnf()
関数のArm C ライブラリ実装で、不正な結果を返す可能性がありました。
[SDCOMP-58559]
fdim()
、
fdimf()
、および
fdiml()
関数のArm C ライブラリ実装で、NaN であるパラメータを指定して呼び出されたときに、誤ってNaN を返すことができないことがありました。
[SDCOMP-58304]
fgets()
および
fgetws()
関数のArm C ライブラリ実装で、誤ってNULL ポインタが返され、また、読み取りバッファの終端にNULL 文字'\0' を設定できないことがありました。
[SDCOMP-58240] AArch64 状態のArm C ライブラリのFPIC バリアントにおいて、リンカがライブラリの初期化コード内に
UDF
命令を間違って含む可能性がありました。
[SDCOMP-58044]
stdio.h
で定義されている関数のArm C ライブラリ実装システムヘッダが、マルチスレッド環境でスレッド間のデッドロックを誤って発生させる可能性がありました。
[SDCOMP-57789] Arm C++ ライブラリのシングルスレッドバリアントが不適切に:
std::chrono::steady_clock
を定義し、
std::chrono::high_resolution_clock
を
std::chrono::system_cloc
ではなく
std::chrono::steady_clock
として定義していました。
[SDCOMP-57369] AArch64 状態の
scalbln()
ファミリ関数のArm C ライブラリ実装が誤った結果を返す可能性がありました。
[SDCOMP-57368] AArch64 状態の
fma()
および
fmaf()
関数のArm C ライブラリ実装が不正な結果を返す可能性がありました。
[SDCOMP-56623]
std::is_unsigned<T>::value
のArm C++ ライブラリ実装において、
T
が
enum
型の場合、常に
false
を返すことに失敗していました。
[SDCOMP-49898] C++98 またはC++03 ソース言語モードでコンパイルすると、コンパイラが次のエラーを誤ってレポートすることがありました:
no viable conversion from returned value of type 'const std::basic_ios<type>' to function return type 'void *'
[SDCOMP-49869] 以下の文字列から浮動小数点への変換関数のARM C++ ライブラリ実装は、誤った結果を返す可能性がありました:
std::basic_istream<T> 型の引数を伴うstd::
operator
>
>
() またはstd::basic_istream<T> からの継承
std::num_get<T>::do_get()
std::num_get<T>::get()
[SDCOMP-49441] AArch32 状態のArmv8-R をターゲットとするArm C++ ライブラリに不正なビルド属性が含まれていました。続いて、
name
がArmv8-R を定義している
--cpu=name
が指定され、且つ入力オブジェクトがArmv8-R ターゲットのC++ ソース言語モードでコンパイルされている場合、リンカは誤って以下のエラーをレポートする可能性がありました:
L6366E:
attributes are not compatible with the provided attributes