如何对齐默认链接器脚本中的段?现有操作为何未生效?
关于LD扩展默认链接器脚本时位置计数器无法影响后续段地址的问题
LD目前有两种扩展内置默认链接器脚本的方式:
- 在命令行提供额外的链接器脚本,不使用
-T选项(即像目标文件一样处理); - 通过
-T选项提供包含INSERT (BEFORE | AFTER)命令的链接器脚本。
我尝试通过这些方式添加MEMORY映射、对齐默认脚本中的部分段并添加符号,示例脚本如下:
MEMORY { ram (rwx) : ORIGIN = $(1), LENGTH = 128M } SECTIONS { . = ALIGN(4*1024*1024); __init_start = . ; } INSERT BEFORE .init
部分功能正常(MEMORY映射生效、__init_start符号在正确偏移/对齐位置生成),但后续的.init段偏移未发生改变。我尝试了多种变体均无效,请问是操作有误还是当前根本无法实现?这或许是提议的扩展语法的适用场景之一。
若当前确实无法实现,希望了解原因:为何诸多属性可被覆盖,但位置计数器更新无法改变现有段的地址?
内容的提问来源于stack exchange,提问作者stefanct
相关产品推荐
相关产品推荐

