私は自分で修正した glibc を使用しています。コンパイルされたコードで、コンパイラが glibc にリンクしたときに、glibc の多くの標準ライブラリ関数を使用していないことがわかりました。次に-fno-builtin
フラグを立てます。状況は改善され、glibc から取得されなかった多くの関数が glibc から取得されていることがわかりましたmalloc
。
ただし、 などの多くの関数でmmap
は、コンパイラは組み込みコードを使用しています。組み込み関数を使用するのではなく、glibc のコードのみを使用するようコンパイラーに依頼するにはどうすればよいでしょうか?
私の x86-64 関数で、コンパイルされた glibc の objdump を実行すると、次のような mmap 関数が生成されます。glibc ソースに同等のコードが見つかりません。
0000000000000000 <__mmap>:
0: 49 89 ca mov %rcx,%r10
3: b8 09 00 00 00 mov $0x9,%eax
8: 0f 05 syscall
a: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax
10: 0f 83 00 00 00 00 jae 16 <__mmap+0x16>
16: c3 retq