パッチプログラムをダウンロードするには、事前にARM社のコネクトサービスのアカウントを取得し、ログインしておく必要があります。アカウントの取得は以下のURL から無償で行う事ができます:
https://login.arm.com/register.php
ARM Compiler toolchain v5.05 u2(build 169)
このARM Compiler Toolchain v5.05 u2(Build 169) は、ARM Compiler 5 製品のアップデートとして使用されることを意図しており、こららのいずれかの製品のライセンスと共に使用しなければなりません。このアップデートは、ARM DS-5プロダクト内のARM Compilerをアップデートするには適していません。ARM Compiler 5の様々な機能リリースは、同一のマシンに共存インストール可能です。同一の機能リリースに対する複数のアップデートバージョン(例: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 SP2(非推奨)
Windows Server 2008 R2
Windows Server 2012 (64-bit only)
Windows 7 Enterprise SP1
Windows 7 Professional SP1
Windows 8 (64-bit only)
RedHat Enterprise Linux 5 Desktop and Workstation option, Standard
RedHat Enterprise Linux 6 Desktop and Workstation option, Standard
Ubuntu Desktop Edition 12.04 LTS
Ubuntu Desktop Edition 14.04 LTS (64-bit only)
Red Hat Enterprise Linux 6では時折デフォルトで32-bit互換ライブラリなしでインストールされることがあります。ARM CompilerをRed Hat Enterprise Linux 6で使用される場合は、32-bit Compatibility Libraryサポートをインストールする必要があります。
特にARM Compilerではglibcとlibmを必要とします。これらをインストールするには、yumコマンドが正しくセットアップされていることを確認したうえで、以下を入力してください:
# yum groupinstall "Compatibility Libraries"
パッチをインストールするには以下の手順で行います
Linux の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.tgz ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.sh" を実行し、画面の指示に従って、ARM Compiler v5.05 u2をインストールしてください。
4.これでアップデートツールがインストールされます。
Windows の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.ZIP ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.exe" をダブルクリックし、インストーラの画面の指示に従って、ARM Compiler v5.05 u2をインストールしてください。
4.これでアップデートツールがインストールされます。
ARM Compiler v5.05 u2(Build 169) 改善と訂正
v5.05 u2での注意点
ARM Compiler 5.05以降、ライセンスサーバソフトウェアはFlexNet Publisher 11.12.1.0以降を使用します。このバージョンは以前のFlexNet Publisherライセンスサーバソフトウェアと互換性がありません。
フローティングライセンスをご使用の場合は、armlmdおよびlmgrdをversion 11.12.1.0以降にアップデートする必要があります。
旧バージョンのライセンスサーバソフトウェアを使用している場合、ARM Compiler 5.05以降では次のエラーをレポートします:
FLEXnet Licensing error:-7,10015
FlexNet Publisher 11.12.1.0以降のバージョンは
https://silver.arm.com/browse/BX002
からダウンロード可能です。(登録およびログインが必要です)
v5.05 u2での修正
Compiler(armcc)
-
[SDCOMP-28936]
-O2
以上の最適化レベルで、まれな環境下においてコンパイラはネストした条件式または変数の代入に関する命令について不正なコードせ生成することがありました。
-
[SDCOMP-28721] 特定の環境下において
--cpp11 -O3 -Otime
使用時、
Internal fault
をレポートすることがありました。
-
[SDCOMP-28710] 特定の環境下において
--cpp11
使用時、
constexpr
指定子を誤って無視し、
Error: #28: expression must have a constant value
または
Error: #3673: function call must have a constant value in a constant expression
をレポートすることがありました。
-
[SDCOMP-28698]
--cpp11 --exceptions
を使用して例外仕様の仮想デストラクタをコンパイルする際、不正に
Error: #766-D: exception specification for virtual
is incompatible with that of overridden
をレポートすることがありました。
-
[SDCOMP-28682]
volatile
class-type フィールドを間接的にインクルードするclass typeを含む
union
のコンパイル時、不正に
Error: #294: invalid union member --
has a disallowed member function
をレポートすることがありました。
-
[SDCOMP-28680]
--cpp11 --omf_browse=filename.crf
使用時、
enum
クラスまたは
enum
構造体を伴って宣言されたスコープを持つenumeration において
Internal fault
をレポートすることがありました。
-
[SDCOMP-28676]
class
や
struct
内のメンバ関数のアドレスをストアするC++ コードのコンパイル時、read-only data セクションではなく、read-write data セクションにメンバ関数のアドレスを配置する事がありました。
-
[SDCOMP-28423]
--cpp11 -g
または
--cpp11 -debug
使用時、
std::nullptr_t
型を使用すると
Internal fault
をレポートすることがありました。
-
[SDCOMP-28421]
--cpp11
使用時、
std::nullptr_t
型のrvalue 参照への代入に関する式において
Internal fault
をレポートすることがありました。
-
[SDCOMP-28416]
-O2
以上の最適化レベルにおいて、まれな環境下でnon-flag-setting バリアントではなく、flag-setting バリアントの命令を含む不正なコードシーケンスを生成することがありました。これにより、次の分岐命令が不正な動作をする可能性がありました。
-
[SDCOMP-28407] non-PODな
class
や
struct
のテンポラリインスタンスの配列メンバにアクセスするコードをコンパイル時、
Internal fault
をレポートすることがありました。
-
[SDCOMP-28374] 左辺側の代入が
volatile
変数であり、右辺側は
volatile
変数から/への代入を実行しない場合のチェインした
struct
への代入について不正なコードを生成することがありました。
-
[SDCOMP-28275]
-O2
以上の最適化レベルにおいて、まれな環境下で、同じバイナリで表される整数型の定数値が2つの異なった式で使用されており、最初の式が排他的論理和の含む場合、不正なコードを生成することがありました。
-
[SDCOMP-28273] マルチバイトキャラクタの連続するバイトとしてみなすことができるような一般のASCIIキャラクタを使用したマルチバイトエンコーディングを使用しているソースファイルのプリプロセス時、コンパイラが不正に
#
演算子を含むマクロを不正に拡張することがありました。これにより次のようなエラーが返されることがありました。
Error: #54-D: too few arguments in invocation of macro
-
[SDCOMP-26544]
-O2
以上の最適化レベルにおいて、
-Otime --vectorize
を使用するとアドレス降順で配列や構造体をコピーするようなループにおいて、誤ってアドレス昇順でコピーを行うようなコードを生成することがありました。コピー元とコピー先のアドレス領域が重複している場合、これにより不正な動作を引き起こす可能性がありました。
-
[SDCOMP-26227]
--diag_warning=error
を使用してエラーメッセージをワーニングにダウングレードする場合、コンパイラはzero exitコードが返されているにも関わらず、オブジェクトの生成に失敗することがありました。
-
[SDCOMP-26218]
-O3 -Otime
使用時、まれな環境下においてキャラクタ配列への参照をパラメータとしてとる関数への文字列リテラルを渡すコードのコンパイルの際に不正に文字列の最初のキャラクタへの文字列リテラルを削除することがありました。
-
[SDCOMP-26055]
__attribute__((at(address)))
が、
__attribute__((section("name")))
または異なった
__attribute__((at(address)))
によって上書きされる場合、ワーニングを発生させていませんでした。コンパイラは
Warning: #3730-D: section name conflicts with previous declaration .ARM.__AT_<address>
をレポートするようになりました。
-
[SDCOMP-25885] ARM Compiler 5.05 (build 41) および5.05 update 1 (build 106) では、プリプロセッサマクロを含むコードのコンパイルに以前のARM Compiler 5 のリリースよりも非常に長い時間がかかっていました。
-
[SDCOMP-25864]
-O3 -Otime
使用時、まれな環境下において
main()
への関数のインライニングについて、インライン化された関数によるグローバル変数への書き込みを不正に削除することがありました。
-
[SDCOMP-25839]
__attribute__((const))
または
__attribute__((noreturn))
が仮想メソッドとオーバーライドメソッドの両方に対して定義された場合、不正に
Error: #1510: function "__attribute__((__<entity>__))" present on overridden virtual function <entity> must be present on overridding function
のエラーをレポートすることがありました。
-
[SDCOMP-24447] 特定の環境下において、メモリではなくレジスタに割り当てられたデータに関するデバッグ情報を不完全に生成することがありました。
Linker (armlink)
-
[SDCOMP-26510] 特定の環境下において、
Error: L6286E: Relocation #
:
in
(
) with respect to
. Value(
) out of range(
) for (
)
ではなく
Error: L6286E: ARM Linker: Execution interrupted due to an illegal storage access
を誤ってレポートすることがありました。
-
[SDCOMP-26071] リンカが生成する
Load$$
シンボルへのリロケーションの解決時、1つまたはそれ以上前にある実行リージョン内のRWデータが圧縮されている場合に誤ってシンボルの値を計算することがありました。