繁体   English   中英

NASM和GCC缺少调试信息

[英]Missing debug information from NASM and GCC

我正在构建一个可执行的小型OS,并且在使用NASM,GCC和GNU Binutils进行链接时遇到问题。
我正在链接多种类型的目标文件:

  • 来自NASM的带有矮调试信息的ELF32目标文件
  • 具有来自GCC的矮调试信息的ELF32目标文件

当我使用自定义链接描述文件将这些文件链接在一起,然后重新读取degub信息时,我只能从第一个链接的目标文件中找到调试信息(按有效地址排序)。

作为参考,我将发布几行用于编译的代码:

nasm -g -felf32 -F dwarf entry.asm -o "build/entry.o"  
gcc -c main.c -o "build/main.o" -m32 -mtune=i386 -gdwarf

并链接:

ld -Tlinker.ld -m elf_i386 --nmagic -nostdlib -static -o "build/bootload.elf" -M -g > "build/map.txt"

我使用GCC版本6.2,Binutils版本2.27和NASM版本2.12
如果需要,我将发布链接描述文件。 请帮助,没有行信息的调试非常烦人。

固定。
正如@Jester所建议的(感谢),问题出在链接脚本中。
我将每个目标文件部分放在最终ELF文件的.text部分中。 我将发布一些代码来解释旧的和新的,更正的行为:

旧:

.text : AT(0x800) {
    test.o(*);
}

新:

.text : AT(0x800) {
    test.o(.text);
    test.o(.data);
    test.o(.bss);
}

所有这些代码均用于链接描述文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM