You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何GCC链接器修改汇编指令?程序出现核心转储异常

程序频繁CoreDump:静态目标文件指令被链接器异常修改的问题

我的程序频繁触发核心转储(CoreDump),使用objdump查看汇编代码后发现,静态目标文件中的drv_attach方法被GCC链接器修改:目标文件中的push指令在可执行文件中变为addr32 call指令,具体对比如下:

静态目标文件中drv_attach的汇编代码

00000000000004d0 <drv_attach>:
     4d0:       55                      push   %rbp
     4d1:       48 89 e5                mov    %rsp,%rbp
     4d4:       41 57                   push   %r15
...
     895:       4c 8d 4b 18             lea    0x18(%rbx),%r9
     899:       29 fe                   sub    %edi,%esi
     89b:       ff 35 00 00 00 00       push   0x0(%rip)        # 此处为push指令
     8a1:       49 8d 92 08 03 00 00    lea    0x308(%r10),%rdx
     8a8:       4c 8b 85 a8 fc ff ff    mov    -0x358(%rbp),%r8

可执行文件中drv_attach的汇编代码

00000000004bbb40 <drv_attach>:
  4bbb40:       55                      push   %rbp
  4bbb41:       48 89 e5                mov    %rsp,%rbp
  4bbb44:       41 57                   push   %r15
...
  4bbf05:       4c 8d 4b 18             lea    0x18(%rbx),%r9
  4bbf09:       29 fe                   sub    %edi,%esi
  4bbf0b:       67 e8 8e 23 04 00       addr32 call 4fe29f <com_dlsym>  # 此处变成了call指令
  4bbf11:       49 8d 92 08 03 00 00    lea    0x308(%r10),%rdx
  4bbf18:       4c 8b 85 a8 fc ff ff    mov    -0x358(%rbp),%r8

奇怪的是,该问题仅在部分机器上出现,测试GCC 4.8.5和GCC 11.3版本均存在此问题。

内容的提问来源于stack exchange,提问作者Zippon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 14:52:08