我正在查看一个 GMP 静态链接到它的可执行文件。以下似乎很奇怪。
Disassembly of section .text:
0000000000400e60 <refmpn_fill.part.4>:
400e60: 50 push %rax
400e61: ba 55 84 42 00 mov $0x428455,%edx
400e66: be 92 00 00 00 mov $0x92,%esi
400e6b: bf a8 81 42 00 mov $0x4281a8,%edi
400e70: e8 1b 66 00 00 callq 407490 <__gmp_assert_fail>
0000000000400e75 <refmpn_count_leading_zeros.part.19>:
400e75: 50 push %rax
400e76: ba c2 81 42 00 mov $0x4281c2,%edx
400e7b: be eb 06 00 00 mov $0x6eb,%esi
400e80: bf a8 81 42 00 mov $0x4281a8,%edi
400e85: e8 06 66 00 00 callq 407490 <__gmp_assert_fail>
400e8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
0000000000400e90 <main>:
400e90: 53 push %rbx
400e91: bb e8 03 00 00 mov $0x3e8,%ebx
400e96: 48 83 ec 20 sub $0x20,%rsp
400e9a: e8 11 03 00 00 callq 4011b0 <tests_start>
如您所见,有以下形式的函数的反汇编:function_name.part.#where#表示某个数字。part.#源代码中没有这样的函数在末尾附加名称。那么这些物体是如何出现的呢?