diff --git a/src/kernel/src/rtld/mod.rs b/src/kernel/src/rtld/mod.rs index 200779690..256fe4b2a 100644 --- a/src/kernel/src/rtld/mod.rs +++ b/src/kernel/src/rtld/mod.rs @@ -857,6 +857,19 @@ impl RuntimeLinker { (Relocated::Tls((md, index)), value) } + Relocation::R_X86_64_DTPOFF64 => { + let md = match resolver.resolve_with_local(md, sym, symflags) { + Some((md, _)) => md, + None => continue, + }; + + let sym = md.symbol(sym).unwrap(); + let value = unsafe { read_unaligned::(target.as_ptr().cast()) }; + + let relocated = (value + sym.value()).wrapping_add_signed(addend); + + (Relocated::Data((md, relocated)), relocated) + } v => return Err(RelocateError::UnsupportedRela(md.path().to_owned(), v)), };