RENESAS TOOL NEWS 2005年11月16日 : RSO-E7-051116D
E8 および E7 エミュレータソフトウェア
ご使用上のお願い |
オンチップデバッギングエミュレータE8 および E7用エミュレータソフトウェアの使用上の注意事項を連絡します。
- IEEE695オブジェクトファイルをロードする際の注意事項
- 該当製品
| (1) |
|
E8 エミュレータソフトウェア V.1.00 Release 00 ~ V.2.04 Release 00 |
| (2) |
|
E7 エミュレータソフトウェア V.2.0.01 ~ V.3.00 Release 00 |
- 内容
E8またはE7にIEEE695オブジェクトファイルをロードし、該当製品でインライン関数をステップオーバー実行した場合、
統合開発環境 High-performance Embedded Workshopが異常終了する場合があります。
- 発生条件
以下の条件をすべて満たす場合に問題が発生します。
- R8C/Tiny、M16C/Tiny、M16C/62P、およびM32C/80シリーズMCU用プログラム
開発に該当製品に含まれるエミュレータデバッガを使用している。
| 注意: |
|
該当製品に含まれるR8C M16C M32Cシミュレータデバッガを使用する場合は該当しません。 |
- ソースコードの記述が以下の条件をすべて満たしている。
| (1) |
|
インライン関数をヘッダファイルで定義している、またはstatic関数をヘッダファイルで定義し、
かつ、コンパイルオプション -Ostatic_to_inline (-OSTI) を選択している。 |
| (2) |
|
(1)のヘッダファイルをインクルードしている。 |
| (3) |
|
(1)のインライン関数、またはstatic関数を呼び出している。 |
| (4) |
|
(1)のインライン関数、またはstatic関数の呼び出しをif文で制御している。 |
| (5) |
|
(4)のif文はelseを持たない。 |
| (6) |
|
(4)のif文は(1)のインライン関数、またはstatic関数の呼び出し後に終了する。 |
| 3.1 |
|
発生例
samp.h
----------------------------------------------------------------
/* 発生条件2項(1) */
inline void sub(void)
{
l = 100;
}
----------------------------------------------------------------
sample.c
----------------------------------------------------------------
#include "samp.h" /* 発生条件2項(2) */
long l;
void func(void)
{
if (l == 1) { /* 発生条件2項(4) */
sub(); /* 発生条件2項(3) */
} /* 発生条件2項(5)および(6) */
}
---------------------------------------------------------------- |
- 回避策
インライン関数を通常の関数にする。
または、ifまたはforのブロック内でインライン関数の呼び出しの後に代入文などのダミーのソースコードを記述する。
- 恒久対策
次期バージョンアップ時に改修する予定です。