//===---- aarch64.cpp - Generic JITLink aarch64 edge kinds, utilities -----===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Generic utilities for graphs representing aarch64 objects. // //===----------------------------------------------------------------------===// #include "llvm/ExecutionEngine/JITLink/aarch64.h" #define DEBUG_TYPE "jitlink" namespace llvm { namespace jitlink { namespace aarch64 { const uint8_t NullGOTEntryContent[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; const uint8_t StubContent[8] = { 0x10, 0x00, 0x00, 0x58, // LDR x16, 0x00, 0x02, 0x1f, 0xd6 // BR x16 }; const char *getEdgeKindName(Edge::Kind R) { switch (R) { case Branch26: return "Branch26"; case Pointer64: return "Pointer64"; case Pointer64Anon: return "Pointer64Anon"; case Page21: return "Page21"; case PageOffset12: return "PageOffset12"; case MoveWide16: return "MoveWide16"; case GOTPage21: return "GOTPage21"; case GOTPageOffset12: return "GOTPageOffset12"; case TLVPage21: return "TLVPage21"; case TLVPageOffset12: return "TLVPageOffset12"; case TLSDescPage21: return "TLSDescPage21"; case TLSDescPageOffset12: return "TLSDescPageOffset12"; case Delta32ToGOT: return "Delta32ToGOT"; case PairedAddend: return "PairedAddend"; case LDRLiteral19: return "LDRLiteral19"; case Delta32: return "Delta32"; case Delta64: return "Delta64"; case NegDelta32: return "NegDelta32"; case NegDelta64: return "NegDelta64"; default: return getGenericEdgeKindName(static_cast(R)); } } } // namespace aarch64 } // namespace jitlink } // namespace llvm