パッチプログラムをダウンロードするには、事前にARM社のコネクトサービスのアカウントを取得し、ログインしておく必要があります。アカウントの取得は以下のURL から無償で行う事ができます:
https://login.arm.com/register.php
ARM Compiler toolchain v5.02 (build 28) †
このARM Compiler Toolchain v5.02 Build28 は、既存の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 4 for x86, 32-bit & 64-bit Red Hat Linux Enterprise 5 for x86, 32-bit & 64-bit Ubuntu Linux 10.04LTS (32-bit only)
パッチをインストールするには以下の手順で行います
Linux の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.tgz ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.sh" を実行し、画面の指示に従って、ARM Compiler v5.02をインストールしてください。
4.これでアップデートツールがインストールされます。
Windows の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.ZIP ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.exe" をダブルクリックし、インストーラの画面の指示に従って、ARM Compiler v5.02をインストールしてください。
4.これでアップデートツールがインストールされます。
v5.02での追加機能
コンパイラ( armcc )
- Cortex-M0 用 CMSIS-DSP ライブラリを使用した場合に、生成されるコードのパフォーマンスが向上しました。 [SDCOMP-17979]
- ARMv7-M でビルドした場合に execute-only メモリ領域のサポートが ARM Compiler 5.02 に追加されました(ベータクオリティでの機能実装)。この機能に関する詳細な情報が必要な場合は、support-sw@arm.com へご連絡下さい。 [SDCOMP-14917]
- Cortex-M3 と Cortex-M4 用に生成されるコードのパフォーマンスが向上しました。 [SDCOMP-14910]
- 堅牢性を高めるために、レジスタアロケーションが改善されました。 [SDCOMP-12140]
その他
- Cortex-M0+ の CPU のサポートが追加されました。Cortex-M0+ をターゲットとする場合は、--cpu=Cortex-M0plus を指定して下さい。 [SDCOMP-19489]
- ARM Compiler 5 は、32 ビット及び 64 ビット版の Windows 7 SP1 をサポートしました。 [SDCOMP-17072]
v5.02での不具合修正
アセンブラ( armasm )
- アセンブラは、MOV, VMVN, VORR 及び VBIC 命令に対して符号無しデータ型を許容していませんでした(例: VMOV.U32 d1,#0xffffffff)。この不具合は修正されました。 [SDCOMP-18607]
コンパイラ( armcc )
- 語彙的に外側の catch ブロック内に含まれている try ブロックからの throw は、外側の catch ブロックによってキャッチされていました。この不具合は修正されました。 [SDCOMP-19394]
- ネストされた try/catch の catch 内でのリターンステートメントの使用によって、実行時にアボートが発生する不正なコードを生成する場合がありました。この不具合は修正されました。 [SDCOMP-19369]
- -O3 -Otime を指定し、関数コールによって引数の値が変更される表現があった場合に、コンパイラは不正にその変数が使用された後に関数を配置してしまうことがありました。この不具合は修正されました。 [SDCOMP-19346]
- 内部エラー 0x0bdd2f が発生する原因は、修正されました。 [SDCOMP-19163]
- 内部エラー 0x7c87ef が発生する原因は、修正されました。 [SDCOMP-19110]
- コンパイラは、左辺値定数の表現がインラインアセンブラのオペランドとして使用され、それが書き込みが発生しない場合であっても、不正に Error #137: "expression must be a modifiable lvalue" をレポートする事がありました。この不具合は修正されました。 [SDCOMP-18601]
- 特定の状況下で、前の式の全ての値に依存する式のシーケンスを含む関数がある場合、コンパイルに多大な時間がかかってしまうことがありました。この不具合は修正されました。 [SDCOMP-18511]
- 特定の状況下で、未使用コードの削除が行われず、実際に必要なコードよりも大きなコードサイズとなる場合がありました。この不具合は修正されました。 [SDCOMP-18039]
- コンディショナルフラグが使用されている期間に不要なコードが削除されない場合がありました。この不具合は修正されました。 [SDCOMP-17887]
- インラインのテンプレートクラスメソッドのコード生成が向上しました。 [SDCOMP-17865]
- 特定の状況下で同じ値から複数のロード命令が生成された場合、コンパイラは余分なロード命令を削除しないことがあり、これによりコードサイズが増加していました。この不具合は修正されました。 [SDCOMP-17717]
- --locale=Japanese が使用された場合、不正に 2969-D 警告メッセージが生成される事がありました。この不具合は修正されました。 [SDCOMP-16424]
- #pragma arm と #pragma thumb をクラス定義中に記述すると、コンパイル時に不正な警告メッセージが生成される事がありました。この不具合は修正されました。 [SDCOMP-16079]
- 内部エラー 0x86934f が発生する原因は、修正されました。 [SDCOMP-15203]
- 内部エラー 0x925a06 が発生する原因は、修正されました。 [SDCOMP-14829]
リンカ( armlink )
- リンカは、--base_platform 指定時にプログラムヘッダとセクションヘッダのファイルオフセットが一致しない不具合がありました。この不具合は修正されました。 [SDCOMP-19335]
- リンカは、パーシャルリンク時にビットバンドエイリアスシンボルへの参照をそのシンボルへの直接参照に不正に変換してしまう場合がありました。この問題は特に、組み込みアセンブラと同じコンパイル単位でビットバンドアクセスを行った場合に発生していました。この不具合は修正されました。 [SDCOMP-18585]
ライブラリ( Libraries )
- __use_*_ctype シンボルがインポートされ、ctype が使用されない場合は、C ライブラリスタートアップコードは無効なメモリをアクセス発生するコードが生成されていました。この不具合は修正されました。 [SDCOMP-19333]