NECのV850のクロス開発環境構築中、binutils-2.19のmakeでエラーが出た。
tc-v850.c:1508: error: format not as string literal and no format argumentstc-v850.c:1510: error: format not as string literal and no format argumentsエラーが出たら、makeは止まってしまった。
tc-v850.cというソースファイルの1508&1510行目にバグが入っていると考えられる。このソースファイルは/binutils-2.19/gas/configに入ってある。早速開いてみると、1508行目に
as_warn (message);
1510行目に
as_warn_where (file, line, message);
が書いてある。引数の渡し方が悪いみたい。as_warn, as_warn_where関数はほかのところでどういう使い方をされているか調べてみた。例えば、1501行目に
as_warn ("%s: %s", str, message);
1503行目に
as_warn_where (file, line, "%s: %s", str, message);
が書いてある。こちらの方は正しい使い方をされているので、エラーが出ない。したがって、1508行目を下記のように直す。
as_warn ("%s",message);
1510行目を下記のように直す。
as_warn_where (file, line,"%s", message);
上記の修正を自動に行う
パッチを公開した。使い方として、tc-v850.cの置いてあるフォルダ/binutils-2.19/gas/configに移動して、ダウンロードしたパッチを入れてから、
patch < パッチファイル
を実行すればOK