2005年4月14日木曜日
Category - 電子工作
Tag - H8
H8/3664のプログラムの一部が突然動かなくなる。デバッグ用のコードを挿入すると動く。いろいろ調べてどうもgccのバグのように思えてきたので、最新のgccをインストール。binutil-2.15, gcc-3.4.3, newlib-1.13.0 の組み合わせ。
▲新しいgccでプログラムをコンパイルするとgasがそんなオペランドは無い、とエラーを吐く。
そういえば前回はここで諦めた気がする。アセンブラのコードを出力し、エラーの箇所を調べるとそこにはgccが生成したコードではなく、私がasm文で出力したコードがあった。レジスタ名でspは使えなくなったようだ。er7に書き直しエラーを回避。
▲しかし、今度はlibgcc.aはあるが指定のアーキテクチャと違うので使用できない,というエラーが出る。objdumpで確かめると確かに h8300hnアーキテクチャのlibgcc.aなのに無視されてしまう。
▲-mnオプションに関するldコマンドのバグかとgdbでldの動作を調べたら、リンカースクリプトで
OUTPUT_ARCH("h8300h")
と指定しているのに気が付く。
OUTPUT_ARCH("h8300hn")
に変更したらエラーは出なくなった。
ふぅ。▲夜、テニス。3-6で惨敗。
最近のコメント