(toppers-users 1517) gcc-3.4でのgenoffsetの不具合ついて

Naohide Ogata nogata @ fukushima-iri.go.jp
2004年 7月 5日 (月) 22:45:03 JST


福島県ハイテクプラザの尾形です。お世話になっております。

 リースパソコンの入れ替えのため、新たにgcc-3.4でgnu開発環境を構
築したのですが、genoffsetの動作に不具合がありましたので報告しま
す。

[環境]

・開発環境OS Fedora Core2
・クロスコンパイラ gcc-3.4.0
・ターゲットCPU SH3
・対象 TOPPERS/JSP1.3、1.4

[症状]

 make depend において、offset.h が正しく出力されず、make 時に
コンパイルエラーで中断します。
 具体的には、offset.h中で「TCB_enatex」、「TCB_enatex_bit」、
「TCB_enatex_mask」の定義が不足しています。

[原因]

 genoffsetがmakeoffset.sの解析を行うためのマーカーとして
makeoffset.cにインラインアセンブル文が埋め込まれていますが、コン
パイラの最適化により、そのマーカーが「.text」セクションに配置さ
れ場所も移動されてしまうため、正しくマーカーとして機能していませ
ん。

[対策]

 Makefileの末尾にコンパイラの最適化を行わないようmakeoffset.s用
のルールを追加しました。

makeoffset.s : makeoffset.c
        $(CC) -S $(CFLAGS) $(KERNEL_CFLAGS) -O0 $<


 TOPPERS/FI4ではコンパイラオプションで最適化を指定していないた
め、この障害は発生しません。


----------
福島県ハイテクプラザ
研究開発部 システム技術グループ
 尾形 直秀
 Naohide Ogata
024-959-1739(直通)  FAX 024-959-1761