我正在尝试在编写内核时调试我所拥有的链接器问题.
问题是我有一个SCAN_CODE_MAPPING我无法使用的变量- 它似乎是空的或者其他东西.我可以通过改变链接程序的方式来解决这个问题,但我不知道为什么.
当我查看使用的生成的二进制文件时objdump,变量的数据肯定存在,所以只有一些东西在引用时被破坏了.
以下是两个链接器脚本和符号表中两个文件之间不同的部分的要点.
令我困惑的是,两个符号表都具有相同的符号,它们的长度都相同,并且它们似乎包含正确的数据.我能看到的唯一区别是它们的顺序不一样.
到目前为止我已经尝试过了
SCAN_CODE_MAPPING内存位置以确保它具有我期望的数据并且没有被清零.data.rel.ro.local确保它有数据的地址一个可能的线索就是这个警告:
warning: uninitialized space declared in non-BSS section `.text': zeroing
我在破碎和正确的情况下得到了.
我接下来应该尝试什么?
我想取一个集合和一个范围的交集,这样我得到一个包含不在该范围内的每个元素的集合.例如,我想办法采取set并range从下面的代码片段:
import com.google.common.collect.*;
TreeSet<Integer> set = Sets.newTreeSet();
Collections.addAll(set, 1,2,3,5,11);
Range<Integer> range = Range.closed(4,10);
Run Code Online (Sandbox Code Playgroud)
并返回一个包含just的新TreeSet 5