(e)glibc のビルド プロセスは黒魔術です。あなたはそれを理解しようとはしません。ただし、glibc はパブリック関数ごとに 1 つのファイルというコーディング スタイルに準拠しているため、一般に、ソース ツリーがあり、何らかの関数の実装を見つけたい場合、最も簡単な方法は次のとおりです。
$ find * -name '*function*' -print
function
もちろん、トップレベルから、関数の名前に置き換えます。
について具体的に言えばsin
、数学関数の一般的な実装はmath
ディレクトリにあります。ただし、の一般的な定義はsin
ないようです。次に注目するのはsysdeps
です。一般的ではないものはすべてsysdeps
にあり、特に、sysdeps/ieee754
IEEE 754 浮動小数点仕様にある程度依存しているが、他のシステムに依存していないすべての数学関数が存在する場所です。このディレクトリはタイプ別に編成されsysdeps/ieee754/dbl-64
ています。IEEE のすべての数学関数が含まれていますdouble
。そしてここにsysdeps/ieee754/dbl-64/s_sin.c
、探しているコードである があります。(これらすべてのファイルのe_
、s_
、k_
などの接頭辞は、以前は何かを意味していましたが、AFAIKはもはやそうではありません。)
sin
特定のプロセッサのアセンブリ言語での の実装があった場合sin.S
、s_sin.S
それはsysdeps
. ただし、存在するようには見えません。