在glibc的ld.so中禁用xsave

时间:2019-01-12 19:30:48

标签: assembly linker gdb x86-64 glibc

我想使用gdb的记录,但是因为glibc的ld.so使用xsave指令,所以出现错误“进程记录不支持地址0x7ffff7fe883c的指令0xfae64。”

多亏了stackoverflow answer,我得以通过二进制补丁修复了类似的错误。运行半小时后,使用调试符号编译glibc失败,因此,如果有更快的解决方案,我将感到高兴。我从here获得了一个编译版本,但似乎没有提供任何早期版本(即,我现在使用的是glibc 2.28.r502.g065957a3704-1和gdb 8.2.1)。如何使gdb录制工作?

1 个答案:

答案 0 :(得分:3)

问题是gdb内置的x86模拟器不了解许多较新的指令。唯一的解决方法是等待修补了相关说明的新版本。同时,this thread建议采取多种解决方法:

  • 加载环境变量LD_BIND_NOW设置为1的二进制文件,以避免在动态链接程序中触发xsave
  • 或者,链接要静态调试的二进制文件
  • 或者,与-z now链接,例如通过将-Wl,-z,now传递给C编译器