8.9. 编译器和开发工具
使用 guru 模式的 systemtap
脚本现在可以更快地编译
systemtap
guru 模式存活度分析使用 dyninst
库来解析二进制文件。较新的内核通过 CONFIG_RETPOLINE=y
启用缓解代码,替换传统的 RET 指令,并跳转到到一个 thunk。因此,二进制分析需要很长时间,因为存活度分析需要检查跳到 thunk 所导致的控制流图的所有额外的边缘。
有了此更新,当内核代码使用 thunks 时,systemtap
会禁用存活度分析,因此使用 guru 模式的 systemtap
脚本可以更快地编译。
eu-addr2line -C
现在可以正确地识别其他参数
在以前的版本中,当您在来自 elfutils
的 eu-addr2line
命令中使用 -C
参数时,以下单个字符参数会消失。因此,eu-addr2line -Ci
命令的行为方式与 eu-addr2line -C
相同,而 eu-addr2line -iC
可以按预期正常工作。这个bug 已被修复,eu-addr2line -Ci
现在可以识别这两个参数。
eu-addr2line -i
现在可以正确地处理使用 GCC 链接时间优化编译的代码
在以前的版本中,elfutils
中包含的 libdw
库中的 dwarf_getscopes
函数无法找到使用 GCC link-time 优化编译的函数的抽象原始定义。因此,当您在 eu-addr2line
命令中使用 -i
参数时,eu-addr2line
无法显示使用 gcc -flto
编译的代码的内联函数。有了此更新,libdw dwarf_getscopes
函数在内联范围的正确编译单元中查找,eu-addr2line -i
可以按预期正常工作。