[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pbsd-mg2] Re: cross compile environment
鈴木(康)です。
<9907222359.AA08872@lachesis.sm.sony.co.jp>の記事において
shin@sm.sony.co.jpさんは書きました。
| gcc(egcs)は-msoft-floatをつけるとどのようなライブラリを呼ぶか
| そのライブラリの実体はどこにあるのか
| gcc(egcs)をどのようにコンフィグするのが正しいのか
|
| などを解説していただけると嬉しいです。
-msoft-float をつけると cc1 がどのようなライブラリ関数を呼ぶか
という点については、arm32 の libc/arch/arm32/fplib を見ると
後に添付したものだけで、実体は、libc になります。
gcc(egcs)をどのようにコンフィグするのが正しいのかに
ついてですが、
1. -msoft-float は、CC1SPEC を書き換えてしまう。
2. libgcc.a では、soft-float ライブラリを使わない。
ようにするのが正しいと思います。
篠原 さんが最初失敗したのは次のようなことになっているのでは
ないかと思います。
1. 中途半端に libgcc.a ができてしまうと、たとえば
libgcc 内の __adddf3 が呼ばれて、gcc 内の float library
が呼ばれることになる。
2. これは NetBSD のソースに含まれないので、undefinded に
なる。
なお、上のやり方で、gcc では問題ないことは確認していますが、egcs でどうか
という点はまだ確認していません。
# arm32 の差分を調べて ソース上は大丈夫だったような記憶があるのですが、
# 自信ありません。
---------------
grep __ arm-gcc.h
#define float32_add __addsf3
#define float64_add __adddf3
#define float32_sub __subsf3
#define float64_sub __subdf3
#define float32_mul __mulsf3
#define float64_mul __muldf3
#define float32_div __divsf3
#define float64_div __divdf3
#define int32_to_float32 __floatsisf
#define int32_to_float64 __floatsidf
#define float32_to_int32_round_to_zero __fixsfsi
#define float64_to_int32_round_to_zero __fixdfsi
#define float32_to_uint32_round_to_zero __fixunssfsi
#define float64_to_uint32_round_to_zero __fixunsdfsi
#define float32_to_float64 __extendsfdf2
#define float64_to_float32 __truncdfsf2
grep ENTRY fplib_glue.S
ENTRY(__eqsf2)
ENTRY(__eqdf2)
ENTRY(__nesf2)
ENTRY(__nedf2)
ENTRY(__gtsf2)
ENTRY(__gtdf2)
ENTRY(__gesf2)
ENTRY(__gedf2)
ENTRY(__ltsf2)
ENTRY(__ltdf2)
ENTRY(__lesf2)
ENTRY(__ledf2)
ENTRY(__negsf2)
ENTRY(__negdf2)
--
鈴木 康司 @NEC
suz@hpc.bs1.fc.nec.co.jp
TEL 0423-33-5381