diff --git a/src/ld_so/linker.rs b/src/ld_so/linker.rs index 6b54a35a663cf8bd272ab74b99b58e4cdf03e6db..3f3e1911b87e3bc8a27acc923bf566a20c6cbe66 100644 --- a/src/ld_so/linker.rs +++ b/src/ld_so/linker.rs @@ -694,7 +694,11 @@ impl Linker { set_u64(tm as u64); } reloc::R_X86_64_DTPOFF64 => { - set_u64((s - b) as u64); + if s != 0 { + set_u64((s - b) as u64); + } else { + set_u64(s as u64); + } } reloc::R_X86_64_GLOB_DAT | reloc::R_X86_64_JUMP_SLOT => { set_u64(s as u64);