no divdi3 in x64 libgcc?

by syoyo

Win64 環境(mingw x64)で LLVM 2.6 をビルドしようとして、
libgcc の奇妙な?構成に気がつきました.

libgcc には、除算器がないハードでも、除算をソフトウェア実現するコードなどがあります.
そこには、たとえば __divdi3 というものがあるのですが、
これがなぜか 64bit libgcc では, object 名は divdi3 なのに、実装の関数は divti3 と、名前が変わっています.

nm で libgcc を調べると、以下のようになります.


_divdi3.o:
...
0000000000000000 T ___divti3

はてなんででしょう?
ちなみに divdi3 は 64bit integer の除算、divti3 は 128bit integer の除算という役割になっています(なっているはず).
なので、divti3 は、object 名も divti3.o にして、divdi3.o には divdi3 の関数を実装するべきだとおもうのですが…

gcc ML にでも聞いてみますかね.

Advertisements