H8/3664のプログラムの一部が突然動かなくなる

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で惨敗。

Leave a Reply

メールアドレスが公開されることはありません。