nasm: ELF 格式无法生成非 PC 相关的 PLT 引用

nasm: ELF format cannot produce non-PC-relative PLT references

我在使用 nasm 编译器时遇到错误。在 nasm 的源代码中,错误源自 here.

我正在尝试构建一个可重定位的目标文件,该文件可以在 运行 时间链接(而不是构建时间链接)期间解析特定符号。

最小代码:

EXTERN start

foo:
    ; wrt: with respect to 
    dd start wrt ..plt

错误是ELF 格式无法生成非 PC 相关的 PLT 引用。 这是怎么回事?

看来您必须使用 dd start wrt ..got,即引用 全局偏移量 table 而不是 过程链接 table。后者只适用于 call start wrt ..plt 之类的东西,即真正的指令。在这种情况下,您使用的是 dd,即在输出中存储一个立即值。