くぬぎざです。こんにちは。
現在、RedHat Linux 6.2 に cross-gcc の H8 開発環境を構築して
いるところなのですが、gcc-2.8.1 + crossgcc-gcc-2.8.1.patch で
newlib の make に成功された方はいらっしゃるでしょうか。
わたしのところでは newlib-1.8.0 の make が成功せず、ちょっと
ハマってしまいました。libm の make においては幾つかのファイルの
コンパイルで gas が invalid operands を訴えて終わってしまうほか、
ef_hypot.c のコンパイルでは、cc1 が signal 6 で死亡されます。
invalid operands は、調べてみると H8300(-mh では発生せず)のみ、
シフト命令のコンパイルで明らかにおかしいアセンブラコードを出力
していたので、簡単に修正できました(末尾にパッチを添付しました)。
が、cc1 が signal 6 で死ぬ問題は結局わからず...どなたか、
対処方法をご存じでないでしょうか?
# 応急的に ef_hypot.c を #if 0 で括ったら make できましたけど(^^;
=====================================================================
--- config/h8300/h8300.c.orig Wed Dec 3 22:09:14 1997
+++ config/h8300/h8300.c Fri Nov 17 04:39:21 2000
@@ -2338,7 +2338,7 @@
switch (shift_type)
{
case SHIFT_ASHIFT:
- *assembler_p = "mov.b\t%y0,%z0n\tmov.b\t%x0,%y0\n\tmov.b\t%w0,%x0\n\tsub.b\t%w0,%w0";
+ *assembler_p = "mov.b\t%y0,%z0\n\tmov.b\t%x0,%y0\n\tmov.b\t%w0,%x0\n\tsub.b\t%w0,%w0";
*cc_valid_p = 0;
return SHIFT_SPECIAL;
case SHIFT_LSHIFTRT:
=====================================================================
椚座 淳介 (Junsuke Kunugiza)
E-Mail: jk@xxxxxxx