Index: llvm/include/llvm/ExecutionEngine/JITLink/ELF_aarch64.h =================================================================== --- llvm/include/llvm/ExecutionEngine/JITLink/ELF_aarch64.h +++ llvm/include/llvm/ExecutionEngine/JITLink/ELF_aarch64.h @@ -30,6 +30,7 @@ ELFLdSt32Abs12, ELFLdSt64Abs12, ELFLdSt128Abs12, + ELFAbs64 }; } // namespace ELF_aarch64_Edges Index: llvm/lib/ExecutionEngine/JITLink/ELF_aarch64.cpp =================================================================== --- llvm/lib/ExecutionEngine/JITLink/ELF_aarch64.cpp +++ llvm/lib/ExecutionEngine/JITLink/ELF_aarch64.cpp @@ -65,6 +65,8 @@ return ELF_aarch64_Edges::ELFLdSt64Abs12; case ELF::R_AARCH64_LDST128_ABS_LO12_NC: return ELF_aarch64_Edges::ELFLdSt128Abs12; + case ELF::R_AARCH64_ABS64: + return ELF_aarch64_Edges::ELFAbs64; } return make_error("Unsupported aarch64 relocation:" + @@ -189,6 +191,10 @@ Kind = aarch64::PageOffset12; break; } + case ELFAbs64: { + Kind = aarch64::Pointer64; + break; + } }; Edge GE(Kind, Offset, *GraphSymbol, Addend); @@ -264,6 +270,8 @@ return "ELFLdSt64Abs12"; case ELF_aarch64_Edges::ELFLdSt128Abs12: return "ELFLdSt128Abs12"; + case ELF_aarch64_Edges::ELFAbs64: + return "ELFAbs64"; default: return getGenericEdgeKindName(static_cast(R)); }