小编jvn*_*vns的帖子

链接器脚本:调试策略?

我正在尝试在编写内核时调试我所拥有的链接器问题.

问题是我有一个SCAN_CODE_MAPPING我无法使用的变量- 它似乎是空的或者其他东西.我可以通过改变链接程序的方式来解决这个问题,但我不知道为什么.

当我查看使用的生成的二进制文件时objdump,变量的数据肯定存在,所以只有一些东西在引用时被破坏了.

以下是两个链接器脚本和符号表中两个文件之间不同的部分的要点.

令我困惑的是,两个符号表都具有相同的符号,它们的长度都相同,并且它们似乎包含正确的数据.我能看到的唯一区别是它们的顺序不一样.

到目前为止我已经尝试过了

  • 检查SCAN_CODE_MAPPING内存位置以确保它具有我期望的数据并且没有被清零
  • 检查所有符号是否相同
  • 检查所有符号内容的长度是否相同
  • 看着.data.rel.ro.local确保它有数据的地址

一个可能的线索就是这个警告:

warning: uninitialized space declared in non-BSS section `.text': zeroing

我在破碎和正确的情况下得到了.

我接下来应该尝试什么?

linker ld linker-scripts

15
推荐指数
2
解决办法
2967
查看次数

如何有效地交叉Guava Range和TreeSet?

我想取一个集合和一个范围的交集,这样我得到一个包含不在该范围内的每个元素的集合.例如,我想办法采取setrange从下面的代码片段:

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

java guava

3
推荐指数
1
解决办法
1336
查看次数

标签 统计

guava ×1

java ×1

ld ×1

linker ×1

linker-scripts ×1