07.01.2015 Views

PDF version - ARM Information Center

PDF version - ARM Information Center

PDF version - ARM Information Center

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

以 前 の リ リ ースについて<br />

A.4.2<br />

RVCT v2.2 における <strong>ARM</strong> コ ンパイ ラの 変 更 点<br />

RVCT v2.2 では、 次 の 点 が 変 更 されま し た。<br />

• <strong>ARM</strong> コ ンパイ ラ には、 動 的 なシンボルのエ ク ス ポー ト 方 法 を よ り 制 御<br />

しやすくするため、 以 下 の 新 しいオプシ ョ ンが 用 意 されています。<br />

— --export_all_vtbl を 使 用 する と、 すべての 仮 想 テーブル 関 数 および<br />

キー 関 数 が 含 まれた ク ラ スの RTTI がエク スポー ト されます。<br />

— --export_defs_implicitly を 使 用 する と、 dllimport が 指 定 されたプロ<br />

トタイプの 定 義 がエクスポートされます。<br />

• <strong>ARM</strong> コンパイラには、 共 有 オブジェク トまたは DLL を 作 成 する と きに<br />

シンボルを 可 視 化 する ための、 次 の 新 し いオプシ ョ ンが 用 意 さ れていま<br />

す。<br />

— --dllexport_all を 使 用 する と 、 他 に 何 も 指 定 し な く て も、 すべての<br />

グ ローバルシンボルを 動 的 に 可 視 化 で き ます。<br />

— --no_hide_all を 使 用 する と 、 すべての extern 定 義 がエ ク ス ポー ト さ<br />

れ、 すべての 未 定 義 参 照 が イ ンポー ト さ れます。<br />

• r12 ではな く r7 を 使 用 する 点 を 除 き、 新 しい __swi_indirect_r7 は<br />

__swi_indirect_r12 と 同 様 に 動 作 します。 <strong>ARM</strong> Linux 上 の Thumb アプ リ<br />

ケーシ ョ ンでは、 __swi_indirect_r7 を 使 用 してカーネルのシステムコー<br />

ルを 作 成 します。<br />

• オーバーロード したグローバルの operator new を throw() として 処 理 でき<br />

るよう、--force_new_nothrow の 動 作 が 拡 張 されま し た。<br />

• 列 挙 値 が 範 囲 外 の 場 合 に 警 告 が 表 示 さ れる よ う にする ため、 <strong>ARM</strong> コン<br />

パイラの C 言 語 実 装 が 変 更 さ れま し た。<br />

厳 密 な C では、 列 挙 値 は -2147483648 ~ +2147483647 ( 境 界 値 を 含 む)<br />

の 範 囲 の int で 表 現 で き る 必 要 があ り ます。 以 前 の リ リ ースの RVCT で<br />

は、--strict オプシ ョ ン を 指 定 し た 場 合 を 除 き、 範 囲 外 の 値 は 警 告 が 表 示<br />

されるこ となく int にキャス ト されました。<br />

RVCT v2.2 ではこのよ う な 値 は C++ でも 同 様 に、unsigned int、long long、<br />

または unsigned long long として 扱 われます。つまり、C を 使 用 している<br />

場 合 、 RVCT の 最 新 の リ リ ース を 使 用 し ている と、 範 囲 外 の 値 が 含 まれ<br />

た enum 型 はサ イ ズが 変 わ る 可 能 性 があ り ます。 以 下 に 例 を 示 し ます。<br />

enum E1 { k1 = 0xffffffff }; /* value == 2147483648u; out-of-range in C */<br />

/* C: before 2.2: sizeof(enum E1) == 1 */<br />

/* C: 2.2: sizeof(enum E1) == 4 */<br />

/* C++: all: sizeof(enum E1) == 4 */<br />

<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-31<br />

Non-Confidential

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!