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);