符号可以在一定的地址链接defsym如图所示这里。我的问题是,是否可以对部分进行相同的处理?也就是说,给定一些.o目标文件,是否可以指定节将被重定位到的基址?
或者,是否可以在最终链接之后重新设置部分的基础?也就是说,要更改二进制文件中某个节的地址,并使所有受重定位影响的信息(如该节中的相对分支等)都可以正确地重定位。
如果我的问题不清楚,我可以对其进行编辑并添加图像以更好地解释。
从您参考的问题和Linux标签来看,我将假设您正在使用GNU ld。
对于GNU的简短回答ld是,可以将部分放在特定的地址。
更长的答案是您需要创建一个自定义链接脚本来执行此操作,可以将其指定为-T ld。如果您gcc用作的包装器ld,则需要通过gcc -Wl,选项将链接器传递给它。
链接描述文件必须包含如下内容:
SECTIONS {
.text 0x08049000 :
{
foo.o (.text)
bar.o (.text)
}
}
Run Code Online (Sandbox Code Playgroud)
不过,需要注意的是-T选项替代了ld使用的默认链接描述文件。您可能需要修改默认的链接描述文件以执行所需的操作。可以通过将--verbose选项传递给ld而不使用其他任何选项来转储默认的链接描述文件。
LD手册中提供了有关链接描述文件的更多信息。
| 归档时间: |
|
| 查看次数: |
5251 次 |
| 最近记录: |