小编Mar*_*rio的帖子

在QEMU中调试早期的内核启动代码

我有一些代码(汇编代码和C语言的组合)编译成ELF二进制文件,QEMU中的某些固件/引导程序代码在特定的物理地址加载。ELF使用虚拟地址链接;但是,该代码应在MMU关闭的情况下运行,这意味着它需要与位置无关。

问题是PC设置为入口点的物理地址,这很有意义,但是由于所有符号都是使用虚拟地址引用的,因此GDB不知道入口在哪里。

我仍然可以在打开MMU时将调用的函数上设置断点(因此PC将在该点处理虚拟地址),但这不足以调试早期代码,包括单步执行它。

通过使用物理地址将其链接,我已经能够调试此代码,但是很明显,一旦打开MMU,这将产生问题。

有人知道我在这里想念的吗?

c assembly gdb arm qemu

5
推荐指数
1
解决办法
137
查看次数

标签 统计

arm ×1

assembly ×1

c ×1

gdb ×1

qemu ×1