パッチプログラムをダウンロードするには、事前にARM社のコネクトサービスのアカウントを取得し、ログインしておく必要があります。アカウントの取得は以下のURL から無償で行う事ができます:
https://login.arm.com/register.php
ARM Compiler toolchain v5.03 (build 24) †
このARM Compiler Toolchain v5.03 Build24 は、既存のDS-5を更新することを目的として使用されます。このパッチは、RVCT/RVDS での使用は適切でありません。
異なったバージョン番号を持つARMコンパイラの複数の機能リリースは、同一のマシンに共存インストール可能です。同一の機能リリースに対する複数のアップデートバージョン(例:5.01u1と5.01u2)を同一マシンにインストールすることはサポートされておりません。
DS-5のパッチは、ARM社のWebサイトよりダウンロード可能です。
https://silver.arm.com/browse/DS500
このアップデートは、最新のコンパイラおよび、リンカ、アセンブラ、 fromelf、およびarmarの実行可能形式と、インクルードファイルおよびC / C++ ライブラリから構成されています。
サポートされるOSプラットフォーム
Windows XP Service Pack 3 (32-bit only) Windows Server 2003 Windows Server 2008 R2 Windows 7 Enterprise Windows 7 Professional Red Hat Linux Enterprise 5 for x86, 32-bit & 64-bit Red Hat Linux Enterprise 6 for x86, 32-bit & 64-bit Ubuntu Linux 10.04 LTS, 32-bit only Ubuntu Linux 12.04 LTS, 32-bit & 64-bit 注意:Ubuntu Linux 10.04 LTSは次リリースで削除される予定です。
パッチをインストールするには以下の手順で行います
Linux の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.tgz ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.sh" を実行し、画面の指示に従って、ARM Compiler v5.03をインストールしてください。
4.これでアップデートツールがインストールされます。
Windows の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.ZIP ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.exe" をダブルクリックし、インストーラの画面の指示に従って、ARM Compiler v5.03をインストールしてください。
4.これでアップデートツールがインストールされます。
v5.03での追加機能
コンパイラ( armcc )
- ARM Compiler 5.03 は、様々なコードベースのコード生成を向上させるいくつかのターゲット依存しない最適化を実装しています。次の機能を含むコードベースが改善する場合があります:
- スイッチステートメントを使用した有限ステートマシン
- ループでのビット単位の & や | を使用したチェックサム演算
- 適切に整形された for ループと while ループ
- 既知の定数の上限と下限の間にある慣用的なループ
- 未知の上限があるループ
- 少ないCステートメントを含んだループ
- さらにパフォーマンスが改善する新しいループ最適化のほか、以前の実装よりも積極的な経験則での実装がなされているループ最適化。これらは、新しい --loop_optimization_level=n コマンドラインオプションで制御する事が出来ます。 [SDCOMP-21925]
- 新しいコマンドラインオプション --loop_optimization_level=n がコンパイラに追加されました。-O3 -Otime 指定時にコンパイラによるループ最適化のレベルを制御する事が出来ます。ARM Compiler 5.03 では、n は以下の値を設定できます。
- n=0 ループ最適化機能のオフ
- n=1 標準的なループ最適を有効にする。これは、以前の ARM Compiler の最適化レベルと同等です
- n=2 さらに積極的なループ最適化を有効にする デフォルトは、n=1 です。n=2 の使用はコードサイズを増加させますが、殆どの場合 --split_sections 等との併用でコードサイズの増加を軽減させることが出来ます。このオプションに関する詳細は、コンパイラのドキュメントをご参照下さい。 [SDCOMP-21921]
その他
- ARM Compiler 5.03 では、以下のサポートが追加されました
- Red Hat Enterprise Linux 6 32 & 64-bit platforms
- Ubuntu 12.04 LTS 32 & 64-bit platforms また、Red Hat Enterprise Linux 4 32 & 64-bit platforms のサポートは廃止されました。 [SDCOMP-21929]
- ARM Compiler 5.04 は、Ubuntu 10.04 LTS 32 & 64-bit platforms のサポートが廃止される予定です。 [SDCOMP-20129]
v5.03での不具合修正
アセンブラ( armasm )
- アセンブラは、読み込み専用/書き込み専用のシステムレジスタに個々に読み込み/書き込みを行った場合に、エラー A1805E と A1806E をレポートするようになりました。このエラーは、--diag_warning 1805,1806 で警告にダウングレード可能です。 [SDCOMP-20220]
- アセンブラは不正に ADRL 疑似命令中の数式を許容していました。この不具合は修正され、正しくエラーがレポートされます。 [SDCOMP-20121]
コンパイラ( armcc )
- --no_inline コマンドラインオプションは、--autoinline 機能をオフにしておらず、幾つかの関数はインラインが許可されていました。この不具合は修正されました。 [SDCOMP-21900]
- コンパイラの C3000-3499 の範囲内のメッセージ番号は、C4000-4499 に移動しました。 [SDCOMP-21788]
- --vectorize を使用した特定の状況下で、浮動小数点から符号付き整数型のキャストにより、対応する符号無し整数型に変換される場合がありました。この不具合は修正されました。 [SDCOMP-20322]
- コンパイラは、--thumb モードでネストされた条件ステートメントが使用された場合にコンディションフラグが不正なコードを生成する場合がありました(例:ネストされた for ループや if ステートメント及び複数条件の if ステートメント等)。この不具合は修正されました。 [SDCOMP-20119]
- 特定の状況下でビットバンドされた構造体中のポインタアクセスは、ビットバンドアクセスとしてコードが生成されていました。ポインタ経由のアクセスはビットバンドアクセスとはならないため、この不具合は修正されました。 [SDCOMP-20099]
- 内部エラー 0xafa25e の原因は修正されました。 [SDCOMP-20061]
- -O3 -Otime でコンパイルされ、インラインされた関数で lvalue (検査され、ストアされるストレージ領域)にカンマ演算子が使用された場合にコンパイラはストールしていました。この不具合は修正されました。 [SDCOMP-20035]
- 内部エラー 0xb84dbf の原因は修正されました。 [SDCOMP-19989]
- 内部エラー 0x882245 の原因は修正されました。 [SDCOMP-19951]
- R プロファイルの CPU 用の特定の状況下で、コンパイラは整数除算の divide-by-zero に対する保護用の条件ステートメントを無条件にし、誤った未定義命令例外を潜在的に生成する場合がありました。この不具合は修正されました。 [SDCOMP-19400]
- 内部エラー 0x0bdd2f の原因は修正されました。 [SDCOMP-18388]
- コンパイラは不正にイメージに存在しない不要なサンクを参照するコードを生成する場合がありました。この不具合は修正されました。 [SDCOMP-18327]
リンカ( armlink )
- パスに空白文字が含まれたディレクトリに存在するプリプロセスされたスキャッターファイルが使用された場合、リンカはコンパイラを呼び出す場合に空白文字をホストシステムに正しく渡さない場合があり、これが原因となりスキャッターファイルのプロセッシングとリンクでエラー L6636E 及び L6372E が発生していました。この不具合は修正されました。 また、リンカは Cygwin 環境下で動作している時に、スキャッタファイルの処理コマンドで空白や特殊端末文字を保護するためのエスケープシーケンスまたは Unix 単一引用符を使用してサポートしていません。代わりに、これらの文字列内の文字を保護するために二重引用符を使用する事が出来ます。この結果として、armlink はリテラルダブルクォート文字を含むスキャッタファイルのプリプロセス行のパスをサポートしていません。 [SDCOMP-16880]
ライブラリ
- 単一のメモリモデル領域を使用する場合に、Cライブラリは __user_initial_stackheap または __user_setup_stackheap 等でヒープリミットを設定しようとする試みを例外なく無視するようになりました。 [SDCOMP-19097]