Index: contrib/elftoolchain/libdwarf/libdwarf.h =================================================================== --- contrib/elftoolchain/libdwarf/libdwarf.h +++ contrib/elftoolchain/libdwarf/libdwarf.h @@ -439,6 +439,7 @@ DW_ISA_SPARC, DW_ISA_X86, DW_ISA_X86_64, + DW_ISA_AARCH64, DW_ISA_MAX }; Index: contrib/elftoolchain/libdwarf/libdwarf_reloc.c =================================================================== --- contrib/elftoolchain/libdwarf/libdwarf_reloc.c +++ contrib/elftoolchain/libdwarf/libdwarf_reloc.c @@ -35,6 +35,8 @@ assert(dbg != NULL); switch (dbg->dbgp_isa) { + case DW_ISA_AARCH64: + return (is64 ? R_AARCH64_ABS64 : R_AARCH64_ABS32); case DW_ISA_X86: return (R_386_32); case DW_ISA_X86_64: @@ -62,6 +64,12 @@ switch (dbg->dbg_machine) { case EM_NONE: break; + case EM_AARCH64: + if (rel_type == R_AARCH64_ABS64) + return (8); + else if (rel_type == R_AARCH64_ABS32) + return (4); + break; case EM_ARM: if (rel_type == R_ARM_ABS32) return (4); Index: head/contrib/elftoolchain/libdwarf/libdwarf.h =================================================================== --- head/contrib/elftoolchain/libdwarf/libdwarf.h +++ head/contrib/elftoolchain/libdwarf/libdwarf.h @@ -439,6 +439,7 @@ DW_ISA_SPARC, DW_ISA_X86, DW_ISA_X86_64, + DW_ISA_AARCH64, DW_ISA_MAX }; Index: head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c =================================================================== --- head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c +++ head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c @@ -35,6 +35,8 @@ assert(dbg != NULL); switch (dbg->dbgp_isa) { + case DW_ISA_AARCH64: + return (is64 ? R_AARCH64_ABS64 : R_AARCH64_ABS32); case DW_ISA_X86: return (R_386_32); case DW_ISA_X86_64: @@ -62,6 +64,12 @@ switch (dbg->dbg_machine) { case EM_NONE: break; + case EM_AARCH64: + if (rel_type == R_AARCH64_ABS32) + return (4); + else if (rel_type == R_AARCH64_ABS64) + return (8); + break; case EM_ARM: if (rel_type == R_ARM_ABS32) return (4);