GOT / PLT如何在MIPS上运行?

时间:2018-05-01 00:54:39

标签: gcc compilation mips

我正在尝试调试与访问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.txtt9的使用似乎与“经典的GOT / PLT mec [h] anism”有关。

然而,该文件不是很有启发性,所以我的问题是:

导出用于进行函数调用的t9的适当值的过程是什么? (假设运行时代码生成器/类似JIT的用例。)

更新:我找到了一些更完整的文档:https://gcc.gnu.org/ml/gcc/2008-07/txt00000.txt

1 个答案:

答案 0 :(得分:1)

这只是函数的地址。函数中的计算从函数自己的地址派生gp