ARM编译器重定位解析

在使用ARM编译器(如GNU Arm Embedded Toolchain 9-2020-q2-update)进行嵌入式系统开发时,重定位(relocation)是非常重要的一环。重定位处理在链接阶段解决符号地址引用,确保程序在内存中正确运行。今天,我们将深入探讨如何正确读取和理解REL类型的重定位条目。

什么是REL和RELA?
  • REL: 在REL格式的重定位中,r_addend是不存在的。相反,addend直接嵌入在被重定位的代码或数据段中。
  • RELA: RELA格式则明确包含一个r_addend字段,简化了重定位计算。
案例分析

考虑以下一个REL类型的重定位条目:

Relocation section ‘.rel.text’ at offset 0x127fc contains 26 entries:
000004fc 00000302 R_ARM_ABS32 00000000 .data


这里,我们看到一个`R_ARM_ABS32`类型的重定位,其偏移量位于`.text`段的`0x4fc`,目标是`.data`段。

#### 读
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值