我正在寻找一种简单的方法来重新排序 ELF 文件部分。我有一系列自定义部分,我希望所有部分都按特定顺序对齐。
我发现如何做到这一点的唯一方法是使用链接器脚本。但是,文档表明指定自定义链接器脚本会覆盖默认值。默认链接描述文件中有很多内容,我不想在我的自定义脚本中复制这些内容只是为了让三个部分始终按特定顺序放在一起。像这样对链接器行为进行硬编码似乎不是很灵活。
我为什么要这样做?我有一段数据需要知道(开始和结束)的运行时内存位置。所以我创建了两个额外的部分并将哨兵变量放入其中。然后我想使用这些变量的内存位置来了解内存中未知部分的范围。
.markerA
int markerA;
.targetSection
... Lots of variables ...
.markerB
int markerB;
在上面的例子中,我知道 .targetSection 中的数据在 markerA 和 markerB 的地址之间。
还有另一种方法可以做到这一点吗?是否有库可以让我读取当前执行的 ELF 图像并确定部分位置和大小?