Yoichi Koyanagi
yk****@tinyw*****
2004年 8月 28日 (土) 16:26:26 JST
小柳です.その後の状況です. http://lists.sourceforge.jp/mailman/archives/uclinux-h8-devel/2004q2/000237.html と何か関連があるのかと思い,t-h8300 の LIB2FUNCS_EXTRA から floatlib.c を削除 してもう一度 gcc をコンパイルしてみましたが,そうすると元メールと同じように ___extendsfdf2 が undefined になってしまいました. そこで,元の lib/gcc-lib/h8300-elf/3.3/h8300h/int32/libgcc.a で, 今度は floatlib.o は残して,floatlib.o と衝突してしまう _si_to_df.o などを 片っ端から h8300-elf-ar で削除してみました.そうすると,float/double を 含むソースもコンパイルは通るようになったのですが,演算が行われていない様子 (printf すると常に 0.0000 になる)になりました. 何をやり損なっているのかまだわかりません…. > gcc-3.3 の h8300-elf で,float/double を含むユーザプログラムを > コンパイルしようとしたところ,エラーとなってしまいました. > binutils: 2.14 > gcc : 3.3 + ecos-h8 リリースファイルの gcc.diff (2004-04-20の方) > elf2flt : cvs + elf2flt.patch > uClibc : uClinux dist 20040408 + uClinux-dist-20040408.diff > > ソースは,printf("hello\n") だけのもので,これだけだと正常に > コンパイルできてaki3069でちゃんと動くのですが,ここに > float f = 1.23; printf("hello %f\n", f); を加えただけで > 以下のようなエラーとなりました. > 何か gcc の構築に失敗しているでしょうか. > よろしくお願いいたします. > > ==================================== > h8300-elf-gcc -I/share/src/uClinux/uClinux-dist-20040408-h8/lib/uClibc/include -mh -mint32 -fno-builtin -nostartfiles /share/src/uClinux/uClinux-dist-20040408-h8/lib/uClibc/lib/crt0.o -o hello hello.c -L/share/src/uClinux/uClinux-dist-20040408-h8/lib/uClibc/lib -Wl,-elf2flt -lc > /usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.3/h8300h/int32/libgcc.a(floatlib.o)(.text+0x45c): In function `__floatsidf': > /share/src/eCos/gcc-3.3/gcc/floatlib.c:362: multiple definition of `___floatsidf' > /usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.3/h8300h/int32/libgcc.a(_si_to_df.o)(.text+0x0):/share/src/eCos/build/gcc-3.3/gcc/dp-bit.c:1295: first defined here/usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.3/../../../../h8300-elf/bin/ld.real: Warning: size of symbol `___floatsidf' changed from 316 in /usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.3/h8300h/int32/libgcc.a(_si_to_df.o) to 184 in /usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.3/h8300h/int32/libgcc.a(_si_to_df.o) > /usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.3/h8300h/int32/libgcc.a(floatlib.o)(.text+0x72a): In function `__negdf2': > /share/src/eCos/gcc-3.3/gcc/floatlib.c:459: multiple definition of `___negdf2' > /usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.3/h8300h/int32/libgcc.a(_negate_df.o)(.text+0x0):/share/src/eCos/build/gcc-3.3/gcc/dp-bit.c:1433: first defined here > ...(以下省略) > ====================================