From 2e769df0155eeb83e0ee31bc9d97c0a3378eb1e3 Mon Sep 17 00:00:00 2001 From: Mark Poliakov Date: Tue, 26 Nov 2024 23:02:49 +0200 Subject: [PATCH] dyn-loader: fix R_AARCH64_ABS64 missing addend --- userspace/dyn-loader/src/relocation/aarch64.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/userspace/dyn-loader/src/relocation/aarch64.rs b/userspace/dyn-loader/src/relocation/aarch64.rs index be734e88..c68defeb 100644 --- a/userspace/dyn-loader/src/relocation/aarch64.rs +++ b/userspace/dyn-loader/src/relocation/aarch64.rs @@ -93,8 +93,12 @@ impl Relocation for Rela { todo!() } match self.r_type { + // Direct 64 bit: S + A + R_AARCH64_ABS64 => { + Ok(Some(RelaValue::QWord(s + self.r_addend))) + } // Direct 64 bit: S - R_AARCH64_ABS64 | R_AARCH64_JUMP_SLOT | R_AARCH64_GLOB_DAT => { + R_AARCH64_JUMP_SLOT | R_AARCH64_GLOB_DAT => { Ok(Some(RelaValue::QWord(s))) } _ => todo!("Unsupported relocation: {}", self.r_type),