test4 提问

对于test4给出的测试,我运行并打印一些结果后发现在我的RelocEntry中只有一个foo(正常情况一个是一个强符号 foo 和一个 undef 的 foo),且其符号类型是 undef(既没有加入到强符号 map,也没有加入到弱符号 map),为什么我的强符号 foo 不见了,始终报undefined reference for symbol foo的错误。
image

可以使用readelf -r检查两个目标文件的重定位条目:

发现在 weakdef里没有对foo的重定位,但strongdef 里有。

但二者的符号表里都有 foo,一个是有定义而另一个没有:

所以我猜你应该参考的是 relocTable 而不是symbolTable