我正在我的(C++)可执行文件上运行C++来检查一些调试部分,它会多次输出以下警告:
$ readelf -w a.out
...
readelf: Warning: Corrupt offset (0x00000028) in range entry 1
readelf: Warning: Corrupt offset (0x00000044) in range entry 2
readelf: Warning: Corrupt offset (0x00000054) in range entry 3
...我不知道这意味着什么,而且无论是谷歌还是谷歌都帮不上忙。有人能指点我吗?
发布于 2022-08-23 00:57:47
错误来自dwarf.c 这里
for (i = 0; i < num_range_list; i++)
...
if (offset > (size_t) (finish - section_begin))
{
warn (_("Corrupt offset (%#" PRIx64 ") in range entry %u\n"),
offset, i);
continue;
}如果不看到readelf --all的输出,就很难说这意味着什么。这可能是您的编译器正在生成错误的调试信息,但也可能是readelf中的一个bug,可能是这一个。
您可以尝试从eu-readelf包中使用埃弗蒂尔斯,该包似乎得到了更好的维护。
https://stackoverflow.com/questions/73413777
复制相似问题