アーキテクチャに依存する copy_fom_user の Linux カーネル コードを読んでおり、x86 アーキテクチャに焦点を当てています。
しかし、それには2つの実装があります。
1 つはこちら(arch/x86/lib/usercopy_32.c) にあり、もう 1 つはこちら(include/asm-generic/uaccess.h) にあります。
最終的にカーネルにコンパイルされるのはどれか。前者が本物だと思いますが、確かではありません。さらに奇妙なのは、前者の関数名が copy_from_user ではなく _copy_from_user であることです。
カーネルコードを読むとき、私はいつもこの種の混乱を抱えています。たとえば、条件付きコンパイルのために、同じ関数が複数の実装を持つ場合があり、どれが一般的に使用されるかを判断できません。コンパイルされたカーネルと対象の関数が与えられた場合に、対応するバイナリ コードを教えて逆アセンブルできるツールはありますか? もしくは、バイナリコードが対応するソースコードを教えてくれるとなお良いです。