summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorNick Shipp <nick@shipp.ninja>2025-07-01 13:55:22 -0400
committerBrandon Miller <bkmiller89@icloud.com>2025-09-22 08:15:22 -0400
commit207aef06fca1553dc555eda58d8fe7220390c1d4 (patch)
tree0a62ec00893e7fb552f4e90c7608d75cf167ccaa /arch
parent00566fc8b40582e3533d3cb6fcca6e1ef27abd65 (diff)
[armv7] Add support for R_ARM_PC24 relocation
Diffstat (limited to 'arch')
-rw-r--r--arch/armv7/arch_armv7.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/armv7/arch_armv7.cpp b/arch/armv7/arch_armv7.cpp
index e30ecf78..c422d7f0 100644
--- a/arch/armv7/arch_armv7.cpp
+++ b/arch/armv7/arch_armv7.cpp
@@ -2362,6 +2362,7 @@ public:
dest32[0] = (info.implicitAddend ? dest32[0] : (uint32_t)info.addend) + (target & ~1) - (uint32_t)reloc->GetAddress();
break;
}
+ case R_ARM_PC24:
case R_ARM_JUMP24:
{
if (target & 1)
@@ -2553,8 +2554,14 @@ public:
break;
case R_ARM_TLS_DTPOFF32:
break;
- case R_ARM_SBREL31:
case R_ARM_PC24:
+ reloc.pcRelative = true;
+ reloc.baseRelative = false;
+ reloc.hasSign = false;
+ reloc.size = 3;
+ reloc.truncateSize = 3;
+ break;
+ case R_ARM_SBREL31:
case R_ARM_LDR_PC_G0:
case R_ARM_ABS16:
case R_ARM_ABS12: