在 glibc ld.so 中禁用 xsave

Disable xsave in glibc's ld.so

我想用gdb的记录,但是因为glibc的ld.so使用了xsave指令,所以报错"Process record does not support instruction 0xfae64 at address 0x7ffff7fe883c."

由于 . Compiling glibc with debug symbols failed after running for half an hour, so I'd be glad if there's a quicker solution. I got a compiled version from here,我能够通过二进制补丁修复类似的错误,但看起来没有提供更早的版本(即我现在使用的是 glibc 2.28.r502.g065957a3704-1和 gdb 8.2.1)。如何使 gdb 记录工作?

问题是 gdb 中内置的 x86 模拟器不理解许多更新的指令。唯一的解决办法是等待新版本的相关说明修补。与此同时,this thread 提出了一些解决方法:

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