Arm Compiler for Embedded FuSa 6.16LTS のリリースノート
目次
紹介
Arm Compiler for Embedded FuSa 6.16LTS
Arm Compiler for Embedded FuSa 6.16LTSでサポートされたこと
インストール方法とIDEへの統合
フィードバックとサポート
リリース履歴と変更
Arm Compiler for Embedded FuSa 6.16.2での変更点
Arm Compiler for Embedded FuSa 6.16.1での変更点
1. 紹介
Arm Compiler for Embedded FuSa 6.16LTS は、機能安全またはlong-termサポートの要求を伴うベアメタルソフトウェア、ファームウェア、およびリアルタイムオペレーティングシステム(RTOS) アプリケーションを開発するための、Arm の最新の組み込みC/C++コンパイルツールチェインです。
強力な最適化手法と最適化されたライブラリを通して、Arm Compiler for Embedded FuSa 6.16LTS は、組込みシステム開発者が、挑戦的なパフォーマンス目標とメモリ制約を満たすことを可能にします。
Arm Compiler for Embedded FuSa 6.16LTS は、自動車(ISO 26262)、家電、産業(IEC 61508)、医療(IEC 62304)、ネットワーク、鉄道(EN 50128)、ストレージ、通信など、さまざまな業界のリーディングカンパニーで使用されています。
また、以下のArm機能安全製品の開発にも使用されています:
通常の非機能安全版 Arm Compiler for Embeddedとは異なり、6.16LTSは初期リリースから最初の5年間はアクティブメンテナンス期間となっており、その後拡張メンテナンスに入ります:
アクティブメンテナンス期間中、6.16LTS は、主に機能安全関連の障害修正にフォーカスしたインクリメンタルメンテナンスアップデートを受けます
拡張メンテナンスアップデートへのアクセスはlicense agreementに準拠します。詳細については、担当営業または
代理店
にお問い合わせください。
bespokeサポート(オーダーメイドのサポート)とメンテナンスを含むプレミアムサービスもご利用いただけます。詳細については、Armにお問い合わせください。
Arm Compiler for Embedded FuSa 6.16LTS のキーとなる機能は以下の通りです:
Cortex および Neoverse プロセッサのサポート(Section 1.2を参照)
A プロファイルおよびR プロファイルをターゲットとした動的リンクのサポート
Thread-Local Storage(TLS) のサポート
C++14 ソース言語モードのサポート
Arm FuSa C Library version 6.6.Aとの互換性
Arm Compiler for Functional Safety 6.6 とArm Compiler for Embedded FuSa 6.16LTS の変更点の概要については、Migration and Compatibility Guide の
Summary of changes between Arm Compiler 6.6 LTM and Arm Compiler for Embedded FuSa 6.16LTS
の項目を参照してください。
1.1 Arm Compiler for Embedded FuSa 6.16LTS
Arm Compiler for Embedded FuSa 6.16LTS は以下を含みます:
認証済みツールチェインコンポーネント:
armclang:
LLVMとClangテクノロジをベースとしたコンパイラおよび統合アセンブラ
armar:
ELFオブジェクトファイル群をまとめるアーカイバ
armlink:
オブジェクトやライブラリをまとめ、実行可能形式を生成するリンカ
fromlef:
イメージ変換ユーティリティ兼逆アセンブラ
非認証ツールチェインコンポーネント:
Arm C libraries:
組込みシステム向けのランタイムサポートライブラリ
Arm C++ libraries:
LLVM libc++プロジェクトベースのライブラリ
armasm:
armasm-syntaxアセンブリコード用のアセンブラ。新しいアセンブリファイルではarmclang統合アセンブラの使用を推奨
Qualification Kit:
Safety Manual:
認定の範囲、機能安全関連開発ツールチェインの使用方法について説明があります
Defect Report:
既知の機能安全関連の障害に関する情報を提供します
Test Report:
言語適合性テストの結果を含みます
Development Process:
ツールチェインの開発に使用されたプロセスの概要を含みます
Release History:
Arm Compiler for Embedded FuSa 6.16LTS シリーズの現在までのすべてのリリースに関する識別情報を含みます
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 FuSa 6.16LTS に含まれるツールがレポートするエラーやワーニングのリストを提供します
Migration and Compatibility Guide:
Arm Compiler 5 からArm Compiler for Embedded FuSa 6.16LTS への移行を支援する情報を提供します
Release notes: 最新のリリースノートは
Arm Compiler for Embedded FuSa ダウンロードページ
で確認できます。
ツールチェインは以下で使用できます:
Arm Development Studio Gold Edition またはPlatinum Edition ツールキットとともに使用
Keil MDK-Professional ツールキットとともに使用(Windows 64-bit host platform上でWindows 32-bit ツールチェインを使用する必要があります)
スタンドアローンなインストレーションとして使用
これらの商品については、
代理店
にお問い合わせください。
ライセンス管理や、トラブルシューティングの為のリソースは
https://developer.arm.com/support/licensing
よりアクセスできます。
1.2 Arm Compiler for Embedded FuSa 6.16LTS でサポートされたこと
ライセンス条件に従い、Arm Compiler for Embedded FuSa 6.16LTS を使用して、以下のArm アーキテクチャおよびプロセッサ用のビルドが行えます:
Architecture
Cortex
Neoverse
Other
Standard
Automotive Enhanced
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-MC1
Armv7-M
M7, M4, M3
SecurCore SC300
Armv6-M
M1, M0, M0+
SecurCore SC000
アーキテクチャとプロセッサのサポートレベルの詳細については、開発スイートのドキュメントを参照してください。
2. インストール方法とIDEへの統合
Arm Compiler for Embedded FuSa 6.16LTS は以下の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 8.1
Windows 10
Windows 64-bit
スタンドアロン製品として使用
Arm Development Studio へ統合
Windows 32-bit
Keil MDKへ統合
注意:
Arm Compiler for Embedded FuSa 6.16LTS は、上記より古いホストOS上での動作は期待できません
Keil MDKライセンスを使用する場合、Arm Compiler for Embedded FuSa 6.16LTS はWindowsプラットフォームのみのサポートです
Windows 32-bit x86 ホストプラットフォームはサポートされません
フローティングライセンスを使用する場合、ライセンスサーバで
armlmd
と
lmgrd
の両方においてversion 11.14.1.0 以上を実行している必要があります。Armは常に
https://developer.arm.com/products/software-development-tools/license-management/downloads
から入手できる、最新のバージョンのライセンスサーバソフトウェアをお使いいただくことを推奨します
Arm Compiler for Embedded FuSa 6.16.1はuser-based license をサポートしません。
以下に挙げる使用方法に応じてArm Compiler for Embedded FuSa 6.16LTS の適切なインストール場所を選択する必要があります:
Arm Development Studio Gold Edition
2021.2 以降
に統合
Arm Development Studio Platinum Edition
2021.c 以降
に統合
Keil MDK-Professional
5.36 以降
に統合
スタンドアロン製品として使用
関連する手順については以下を参照してください:
3. フィードバックとサポート
お客様からのフィードバックは我々にとって重要です。
製品のいかなる側面についても、障害報告と改善に関する提案を歓迎します。
機能安全関連の障害修正は、Arm Compiler for Embedded FuSa maintenance policy に従って将来のメンテナンスアップデートに対して検討されます。
フィードバックあるいはサポートが必要な問題について、お仕事あるいはアカデミックなE-mailアドレスを使用してお客様の製品の購入元にご連絡をいただくか、可能であれば
https://support.developer.arm.com
でcaseをオープンしてください。
必要に応じて、ツールからの
--vsn
の出力、ツールが生成するエラーメッセージの完全な内容および問題を再現するのに必要なソースコードやその他のファイルとコマンドラインを提供してください。
当社へのお問い合わせは、
こちら
。
4. リリース履歴と変更
以下に、Arm Compiler for Embedded FuSa 6.16LTS シリーズのリリース日付を示します:
6.16.2 (2022年04月にリリースされました)
6.16.1 (2021年09月にリリースされました)
前回のリリースと比較した場合の新しい機能と修正された不具合の概要を以下に示します。これには、機能安全関連ではない不具合の修正も含まれます。
Arm Compiler for Embedded FuSa 6.16LTS の各リリースに影響する機能安全関連の障害に関する情報については、最新のArm Compiler for Embedded FuSa 6.16LTS Qualification Kit Defect Report を参照してください。
この情報には、技術的な不正確さや誤記が含まれている可能性があり、リリースノートの将来の版で変更される可能性があります。
それぞれの変更点には、ユニークな識別子SDCOMP-
が割り振られています。
もしArmへこのリリースノート内の特定の問題について連絡が必要な場合、適切な識別子を通知してください
4.1 Arm Compiler for Embedded FuSa 6.16.2 での変更点
Arm Compiler for Embedded FuSa 6.16.2 での一般的な変更
[SDCOMP-60297] これまで
armclang
はSTAR-MC1 プロセッサに対してStarの名称を使用していました。これは変更され、さらに
armasm
,
armlink
および
fromelf
はSTAR-MC1プロセッサをサポートするようになりました。STAR-MC1をターゲットとするには以下のオプションから選択してください:
DSP
浮動小数点
armclang
armasm, armlink およびfromelf
あり
あり
--target=arm-arm-none-eabi -mcpu=star-mc1
--cpu=Star-MC1
あり
なし
--target=arm-arm-none-eabi -mcpu=star-mc1 -mfloat-abi=soft
--cpu=Star-MC1.no_fp
なし
あり
--target=arm-arm-none-eabi -mcpu=star-mc1+nodsp
--cpu=Star-MC1.no_dsp
なし
なし
--target=arm-arm-none-eabi -mcpu=star-mc1+nodsp -mfloat-abi=soft
--cpu=Star-MC1.no_dsp.no_fp
[SDCOMP-59207] 以下のリンカのワーニングは注釈にダウングレードされました:
L6413W: Disabling merging for <object>(<section>), Section contains misaligned string(s)
[SDCOMP-58875] 以下のリンカのワーニングは注釈にダウングレードされました:
L6440W: Disabling merging for <object>(<string_section>), unsupported relocation R_ARM_REL32 from <object>(<other_section>) to STT_SECTION type symbol
[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-MC1
緩和有効
デフォルトで緩和が無効化されており、有効化したい場合は
-mfix-cmse-cve-2021-35465
コンパイルオプションを使用してください。
デフォルトで緩和が有効化されており、無効化したい場合は
-mno-fix-cmse-cve-2021-35465
コンパイルオプションを使用してください。
より詳細については
https://developer.arm.com/support/arm-security-updates/vlldm-instruction-security-vulnerability
を参照してください。
Arm Compiler for Embedded FuSa 6.16.2 での機能改善
armclang
[SDCOMP-59314] トリビアルな自動変数の初期化を制御する
-ftrivial-auto-var-init
オプションをサポートしました。
より詳細についてはReference Guide内
-ftrivial-auto-var-init
の章を参照してください。
[SDCOMP-59314] Aggresive Jump Threading(AJT) 最適化を有効または無効化する
-faggressive-jump-threading
および
-fnoaggressive-jump-threading
オプションがサポートされました。
より詳細については、Reference Guide内の
-faggressive-jump-threading, -fnoaggressive-jump-threading
の章を参照してください。
armlink
[SDCOMP-58400] Arm Compiler 6.16 またはそれ以前のLTO bitcode を含む入力オブジェクトの検知についてサポートしました。
Arm Compiler 6.16 またはそれ以前のバージョンでLTO を有効にしてコンパイルされた入力オブジェクトが見つかった場合リンカは以下のエラーを返すようになりました:
L6123E: LTO bitcode in '<object>' was generated by an incompatible version of armclang
ライブラリとシステムヘッダ
[SDCOMP-58721] [ALPHA] Arm C++ library Thread-Porting Layer(TPL) に対し、
__ARM_TPL_condvar_monotonic_timedwait()
関数が追加されました。
より詳細についてはArm C and C++ Libraries and Floating-Point Support User Guide 内
Condition variables [ALPHA]
の章を参照してください。
Arm Compiler for Embedded FuSa 6.16.2 で修正された不具合
armclang
[SDCOMP-60177] AArch64 状態に対し
-march=armv8-r
を使用した場合、 コンパイラと統合アセンブラは誤って以下の機能を有効化していました:
AArch64 Performance Monitors Extension に対するArmv8.4-A additions
半精度浮動小数点拡張
Speculation Barrier 命令
Speculation 制限命令
Speculative Store Bypass Safe
[SDCOMP-59974] AArch64状態に対し最適化レベル
-O0
、
-O1
以外で
-fwrapv
オプションとともにコンパイルする場合、ネストしたループに対して誤ったコードを生成する可能性がありました。
[SDCOMP-59879]
__VERSION__
事前定義マクロに基となるClangバージョンの後に余分な文字が誤って追加されていました。
[SDCOMP-59809] コンパイラは、
PATH
環境変数で指定されたディレクトリ内の特定の不要なファイルを誤って検索していました。 これによってコンパイルが遅くなる可能性がありました
[SDCOMP-59656] AArch64状態に対し最適化レベル
-O0
でコンパイルする場合、64ビット未満で表すことができ、ポインタ型にキャストされる整数リテラルに対して誤ったコードを生成する可能性がありました。
[SDCOMP-59605]
-mno-unaligned-access
オプションを指定した場合、
__attribute__((packed))
または
#pragma pack
によって注釈されたC++ クラスまたはクラスデータメンバに対してワーニングのレポートに失敗することがありました。この問題は修正され、以下のワーニングをレポートするようになりました:
field <member> within '<class A>' is less aligned than '<class B>' and is usually due to '<class A>' being packed, which can lead to unaligned accesses
[SDCOMP-59074] AArch64状態に対し最適化レベル
-O0
でコンパイルする場合、 常に
true
と評価される比較演算に対して誤ったコードを生成する可能性がありました。
[SDCOMP-59059]
-frwpi
と、
-g
または
-gdwarf-version
を指定した場合、
const
ではないグローバル変数について不正なデバッグ情報を生成する可能性がありました。
[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-58523] コンパイラ、インラインアセンブラおよび統合アセンブラは誤ってArmv8-R AArch64 ターゲットに対してデフォルトで暗号化命令を有効にしていました。
[SDCOMP-57884] C++ 例外を有効にしてC++ ソース言語モードでコンパイルした場合、負の配列長または配列長よりも長い初期化子を指定する
new
nothrough 例外に対して、誤って
std::bad_array_new_length
例外を引き起こすコードを生成することがありました。
[SDCOMP-52680] Armv8-R AArch64 ターゲットに対するアセンブル時、インラインアセンブラおよび統合アセンブラはアクセスするシステムレジスタとして
VSTTBR_EL2
または
VTTBR_EL2
を定義した
MRS
または
MSR
命令に対して誤ってエラーのレポートに失敗することがありました。この問題は修正され、インラインアセンブラおよび統合アセンブラは以下のいずれかのエラーを返すようになりました:
expected readable system register
expected writable system register or pstate
armlink
[SDCOMP-59391] AArch64状態に対するリンクで、入力オブジェクト内にセクションシンボルへの分岐が含まれている場合、リンカは次のエラーを誤ってレポートすることがありました:
L6286E: Relocation #RELA:<relocation_number> in <object>(<section>) with respect to [Anonymous Symbol]. Value(<value>) out of range(<range>) for (R_AARCH64_CALL26)
[SDCOMP-57994] リンカは、2つの同じリンカ呼び出しに対して
cbrtf()
または
strcmp()
Arm C ライブラリ関数について異なる実装を誤って選択することがありました。
fromelf
[SDCOMP-59890] DWARF 4デバッグ情報とバージョン4未満のDWARFラインテーブルストラクチャを含むELF形式の入力ファイルを処理する場合、デバッグ行情報の生成を失敗することがありました。
ライブラリとシステムヘッダ
[SDCOMP-60157] POSIX
mbsnrtowcs()
関数のArm Cライブラリ実装は、ディスティネーションポインタがnullポインタの場合、ソースポインタを誤って更新する可能性がありました。
[SDCOMP-59569]
std::mutex::try_lock()
および
std::recursive_mutex::try_lock()
関数のArm C++ ライブラリThread-Porting Layer (TPL) 実装が誤った戻り値を返す可能性がありました。
[SDCOMP-59054]
std::allocator<T>::allocate()
関数のArm C++ライブラリ実装は
std::bad_alloc
または
std::bad_array_new_length
の代わりに誤って
std::length_erro
例外を引き起こすことがありました。
[SDCOMP-58588]
mbsrtowcs()
および
wcsrtombs()
関数のArm C ライブラリ実装で、デスティネーションポインタがnull ポインタの場合、ソースポインタが指すポインタオブジェクトが誤って更新されることがありました。
[SDCOMP-58561]
snprintf()
、
swprintf()
、
vsnprintf()
、および
vswprintf()
関数のArm C ライブラリ実装で、バッファに空の文字列が誤って書き込まれる可能性がありましたが、負ではない結果が返されていました。
[SDCOMP-58560] AArch64 状態の
scalblnf()
関数のArm C ライブラリ実装で、不正な結果を返す可能性がありました。
[SDCOMP-58304]
fgets()
および
fgetws()
関数のArm C ライブラリ実装で、誤ってnull ポインタが返され、また、読み取りバッファの終端にnull 文字'\0' を設定できないことがありました。
[SDCOMP-58044]
stdio.h
で定義されている関数のArm C ライブラリ実装システムヘッダが、マルチスレッド環境でスレッド間のデッドロックを誤って発生させる可能性がありました。
4.2 Arm Compiler for Embedded FuSa 6.16.1 での変更点
以下に直前のリリースである非認証版Arm Compiler 6.16からの変更点を示します。
Arm Compiler for Embedded FuSa 6.16.1 での一般的な変更
[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
の章を参照してください。
Arm Compiler for Embedded FuSa 6.16.1 での機能改善
armclang
[SDCOMP-58508] C++14 サイズ付きデアロケーションを有効にする
-fsized-deallocation
オプションをサポートしました。詳細については、Reference Guide 内の、
-fsized-deallocation
および
-fno-sized-deallocation
の章を参照してください。
[SDCOMP-51769] C++ Run-Time Type Information (RTTI) 機能の使用時に要求されるコードの生成を無効にする
-fno-rtti
オプションをサポートしました。詳細については、Reference Guide 内の、
-frtti
および
-fno-rtti
の章を参照してください。
armlink
[SDCOMP-58030] リンカとは異なるバージョンのコンパイラから生成されたLTO bitcode を含む入力オブジェクトの検出をサポートしました。
リンカは、入力オブジェクトが異なるバージョンのコンパイラによってLTO を有効にしてコンパイルされた場合に、以下のエラーをレポートするようになりました:
L6123E: linking module flags 'armcompiler-version': IDs have conflicting values in '
' and '
'
このエラーは、Arm Compiler for Embedded FuSa 6.16LTS 以降を使用してLTO を有効にしてコンパイルされた入力オブジェクトに対してのみレポート可能です。古いバージョンを使用してLTO を有効にしてコンパイルされた入力オブジェクトについてはレポートできません。
ライブラリとシステムヘッダ
[SDCOMP-58167] 以前は、Arm C++ ライブラリヘッダ<complex> をプログラムに含めると、C++ ライブラリI/O stream の初期化コードが常に最終イメージに含まれていました。本バージョンより初期化コードは必要な場合にのみ含まれます。これにより、特定のC++ プログラムのコードサイズが大幅に改善されます。
Arm Compiler for Embedded FuSa 6.16.1 で修正された不具合
armclang
[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-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-57947]
--legacyalign
オプションなしでリンクした場合、入力オブジェクトにアラインメントが4 バイト未満のセクションが含まれているとリンカは、対応する出力セクションのアドレスが正しくないリンカ定義シンボルを生成する可能性がありました。
[SDCOMP-57871] Load Region を記述するELF プログラムヘッダの
p_memsz
フィールドの値を誤って小さすぎる値に計算する可能性がありました。
[SDCOMP-57336] LTO を有効にしてコンパイルされたオブジェクトをリンクする場合、異なるタイプのデータセクションを1 つのELF セクションに誤ってマージする可能性がありした。
fromelf
[SDCOMP-57158] fromelfユーティリティは特定のA64
HINT
命令を
BTI
命令または
MSR
命令として誤ってディスアセンブルする可能性がありました。
ライブラリとシステムヘッダ
[SDCOMP-58240] AArch64 状態のArm C ライブラリのFPIC バリアントにおいて、リンカがライブラリの初期化コード内に
UDF
命令を間違って含む可能性がありました。
[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-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