我正在尝试调试与访问gp
寄存器相关的段错误。
我注意到所有功能都以这样的东西开头:
0x400b7c <main>: lui gp,0xa
0x400b80 <main+4>: addiu gp,gp,31444
0x400b84 <main+8>: addu gp,gp,t9
正如这里所解释的:https://www.cr0.org/paper/mips.elf.external.resolution.txt,t9
的使用似乎与“经典的GOT / PLT mec [h] anism”有关。
然而,该文件不是很有启发性,所以我的问题是:
导出用于进行函数调用的t9
的适当值的过程是什么? (假设运行时代码生成器/类似JIT的用例。)
更新:我找到了一些更完整的文档:https://gcc.gnu.org/ml/gcc/2008-07/txt00000.txt。
答案 0 :(得分:1)
这只是函数的地址。函数中的计算从函数自己的地址派生gp
。