Path: blob/main/contrib/llvm-project/llvm/lib/ExecutionEngine/JITLink/aarch64.cpp
35271 views
//===---- aarch64.cpp - Generic JITLink aarch64 edge kinds, utilities -----===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8// Generic utilities for graphs representing aarch64 objects.9//10//===----------------------------------------------------------------------===//1112#include "llvm/ExecutionEngine/JITLink/aarch64.h"1314#define DEBUG_TYPE "jitlink"1516namespace llvm {17namespace jitlink {18namespace aarch64 {1920const char NullPointerContent[8] = {0x00, 0x00, 0x00, 0x00,210x00, 0x00, 0x00, 0x00};2223const char PointerJumpStubContent[12] = {240x10, 0x00, 0x00, (char)0x90u, // ADRP x16, <imm>@page21250x10, 0x02, 0x40, (char)0xf9u, // LDR x16, [x16, <imm>@pageoff12]260x00, 0x02, 0x1f, (char)0xd6u // BR x1627};2829const char *getEdgeKindName(Edge::Kind R) {30switch (R) {31case Pointer64:32return "Pointer64";33case Pointer32:34return "Pointer32";35case Delta64:36return "Delta64";37case Delta32:38return "Delta32";39case NegDelta64:40return "NegDelta64";41case NegDelta32:42return "NegDelta32";43case Branch26PCRel:44return "Branch26PCRel";45case MoveWide16:46return "MoveWide16";47case LDRLiteral19:48return "LDRLiteral19";49case TestAndBranch14PCRel:50return "TestAndBranch14PCRel";51case CondBranch19PCRel:52return "CondBranch19PCRel";53case ADRLiteral21:54return "ADRLiteral21";55case Page21:56return "Page21";57case PageOffset12:58return "PageOffset12";59case RequestGOTAndTransformToPage21:60return "RequestGOTAndTransformToPage21";61case RequestGOTAndTransformToPageOffset12:62return "RequestGOTAndTransformToPageOffset12";63case RequestGOTAndTransformToDelta32:64return "RequestGOTAndTransformToDelta32";65case RequestTLVPAndTransformToPage21:66return "RequestTLVPAndTransformToPage21";67case RequestTLVPAndTransformToPageOffset12:68return "RequestTLVPAndTransformToPageOffset12";69case RequestTLSDescEntryAndTransformToPage21:70return "RequestTLSDescEntryAndTransformToPage21";71case RequestTLSDescEntryAndTransformToPageOffset12:72return "RequestTLSDescEntryAndTransformToPageOffset12";73default:74return getGenericEdgeKindName(static_cast<Edge::Kind>(R));75}76}7778} // namespace aarch6479} // namespace jitlink80} // namespace llvm818283