diff --git a/src/ld_so/linker.rs b/src/ld_so/linker.rs
index 670d38e77612a071d5a66e3ec8af0a519dfbd8b5..a091e857f8489de57f45d24062e767cec9bb15ea 100644
--- a/src/ld_so/linker.rs
+++ b/src/ld_so/linker.rs
@@ -647,7 +647,7 @@ impl Linker {
                         } as usize;
 
                         let mut tcb_master = Master {
-                            ptr: unsafe { mmap.as_ptr().add(ph.p_vaddr as usize) },
+                            ptr: unsafe { mmap.as_ptr().add(ph.p_vaddr as usize - base_addr) },
                             len: ph.p_filesz as usize,
                             offset: tls_size - valign,
                         };