【发布时间】:2013-12-29 21:01:49
【问题描述】:
我正在尝试调试我在编写内核时遇到的链接器问题。
问题是我有一个变量SCAN_CODE_MAPPING 我无法使用——它似乎是空的或什么的。我可以通过更改链接程序的方式来解决此问题,但我不知道为什么。
当我使用objdump 查看生成的二进制文件时,变量的数据肯定在那里,所以只是对它的引用有问题。
Here's a gist 包含链接描述文件和两个文件之间不同的符号表部分。
让我感到困惑的是,两个符号表都有相同的符号,它们的长度都相同,而且它们似乎包含正确的数据。我能看到的唯一区别是它们的顺序不同。
到目前为止我已经尝试过
- 检查
SCAN_CODE_MAPPING内存位置以确保它具有我期望的数据并且没有被归零 - 检查所有符号是否相同
- 检查所有符号内容的长度是否相同
- 查看
.data.rel.ro.local以确保它具有数据的地址
一个可能的线索是这个警告:
warning: uninitialized space declared in non-BSS section `.text': zeroing
我在损坏和正确的情况下都得到了。
接下来我应该尝试什么?
【问题讨论】:
-
投票结束作为调试帮助。
标签: linker ld linker-scripts