commit 8754ed86fff3f2f793d37fb71725630f720bbfb7 Author: Shawn Webb Date: Mon Dec 19 14:05:55 2016 -0500 HBSD: Perform R_AARCH64_TLSDESC fixups This enables full use of ld.lld on arm64. Signed-off-by: Shawn Webb freebsd-issue: PR214971 diff --git a/libexec/rtld-elf/aarch64/reloc.c b/libexec/rtld-elf/aarch64/reloc.c index 3f9de07db29..e88c98b04aa 100644 --- a/libexec/rtld-elf/aarch64/reloc.c +++ b/libexec/rtld-elf/aarch64/reloc.c @@ -388,6 +388,16 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags, *where = def->st_value + rela->r_addend + defobj->tlsoffset; break; + case R_AARCH64_TLSDESC: + if (ELF_R_SYM(rela->r_info) == 0) { + where[0] = (Elf_Addr)_rtld_tlsdesc; + where[1] = obj->tlsoffset + rela->r_addend; + } else { + where[0] = (Elf_Addr)_rtld_tlsdesc_dynamic; + where[1] = (Elf_Addr)reloc_tlsdesc_alloc(obj, + rela); + } + break; case R_AARCH64_RELATIVE: *where = (Elf_Addr)(obj->relocbase + rela->r_addend); break;