在 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 编译器
我想用gdb的记录,但是因为glibc的ld.so使用了xsave指令,所以报错"Process record does not support instruction 0xfae64 at address 0x7ffff7fe883c."
由于
问题是 gdb 中内置的 x86 模拟器不理解许多更新的指令。唯一的解决办法是等待新版本的相关说明修补。与此同时,this thread 提出了一些解决方法:
- 加载二进制文件,将环境变量
LD_BIND_NOW
设置为1
以避免在动态linker 中触发 - 或者,link 您要静态调试的二进制文件
- 或者,link 与
-z now
例如通过将-Wl,-z,now
传递给 C 编译器
xsave