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 {...@@ -5572,11 +5572,17 @@ pub fn gotAddress(self: *Elf) u64 {
5572pub fn tpAddress(self: *Elf) u64 {5572pub fn tpAddress(self: *Elf) u64 {
5573 const index = self.phdr_tls_index orelse return 0;5573 const index = self.phdr_tls_index orelse return 0;
5574 const phdr = self.phdrs.items[index];5574 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 };
5576}5580}
55775581
5578pub fn dtpAddress(self: *Elf) u64 {5582pub 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;
5580}5586}
55815587
5582pub fn tlsAddress(self: *Elf) u64 {5588pub fn tlsAddress(self: *Elf) u64 {