authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-03-07 22:55:15+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-03-08 22:46:17+01:00
log69f9f359dd5107cd071f3801a6824336b5d2bce6
treeb3ec4b09df5aba595a7a840db4ce82a4df163638
parent0af5d2e9b6393de460106f9f53a68374e636087a

elf+aarch64: use correctly offset tp address


1 files changed, 8 insertions(+), 2 deletions(-)

src/link/Elf.zig+8-2
......@@ -5572,11 +5572,17 @@ pub fn gotAddress(self: *Elf) u64 {
55725572pub fn tpAddress(self: *Elf) u64 {
55735573 const index = self.phdr_tls_index orelse return 0;
55745574 const phdr = self.phdrs.items[index];
5575 return mem.alignForward(u64, phdr.p_vaddr + phdr.p_memsz, phdr.p_align);
5575 return switch (self.getTarget().cpu.arch) {
5576 .x86_64 => mem.alignForward(u64, phdr.p_vaddr + phdr.p_memsz, phdr.p_align),
5577 .aarch64 => mem.alignBackward(u64, phdr.p_vaddr - 16, phdr.p_align),
5578 else => @panic("TODO implement getTpAddress for this arch"),
5579 };
55765580}
55775581
55785582pub fn dtpAddress(self: *Elf) u64 {
5579 return self.tlsAddress();
5583 const index = self.phdr_tls_index orelse return 0;
5584 const phdr = self.phdrs.items[index];
5585 return phdr.p_vaddr;
55805586}
55815587
55825588pub fn tlsAddress(self: *Elf) u64 {