我有一些代码(汇编代码和C语言的组合)编译成ELF二进制文件,QEMU中的某些固件/引导程序代码在特定的物理地址加载。ELF使用虚拟地址链接;但是,该代码应在MMU关闭的情况下运行,这意味着它需要与位置无关。
问题是PC设置为入口点的物理地址,这很有意义,但是由于所有符号都是使用虚拟地址引用的,因此GDB不知道入口在哪里。
我仍然可以在打开MMU时将调用的函数上设置断点(因此PC将在该点处理虚拟地址),但这不足以调试早期代码,包括单步执行它。
通过使用物理地址将其链接,我已经能够调试此代码,但是很明显,一旦打开MMU,这将产生问题。
有人知道我在这里想念的吗?