2

我想在每个调试信息部分周围添加一个开始和结束符号,以便我可以从我的程序中访问它们。我尝试了以下方案:

.debug.info ALIGN(4K) : {
    DEBUG_INFO_START = .;
    *(.debug.info)
    DEBUG_INFO_END = .;
}
.debug.abbrev ALIGN(4K) : {
    DEBUG_ABBREV_START = .;
    *(.debug.abbrev)
    DEBUG_ABBREV_END = .;
}
/* etc. */

但这会导致每个部分(包括 .text、.rodata 等)和生成的二进制文件的大小增加三倍。这可能是什么原因造成的?正如您从下面的转储中看到的,调试信息包含在这两种情况下,因此这不是导致大小增加的原因。

我正在使用 Zig 和 LLVM 工具链。

链接到整个链接脚本。链接到没有链接脚本修改的二进制转储,链接到带有修改的转储。

4

0 回答 0