1 //===---- aarch64.cpp - Generic JITLink aarch64 edge kinds, utilities -----===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // Generic utilities for graphs representing aarch64 objects.
10 //
11 //===----------------------------------------------------------------------===//
12
13 #include "llvm/ExecutionEngine/JITLink/aarch64.h"
14
15 #define DEBUG_TYPE "jitlink"
16
17 namespace llvm {
18 namespace jitlink {
19 namespace aarch64 {
20
21 const uint8_t NullGOTEntryContent[8] = {0x00, 0x00, 0x00, 0x00,
22 0x00, 0x00, 0x00, 0x00};
23
24 const uint8_t StubContent[8] = {
25 0x10, 0x00, 0x00, 0x58, // LDR x16, <literal>
26 0x00, 0x02, 0x1f, 0xd6 // BR x16
27 };
28
getEdgeKindName(Edge::Kind R)29 const char *getEdgeKindName(Edge::Kind R) {
30 switch (R) {
31 case Branch26:
32 return "Branch26";
33 case Pointer64:
34 return "Pointer64";
35 case Pointer64Anon:
36 return "Pointer64Anon";
37 case Page21:
38 return "Page21";
39 case PageOffset12:
40 return "PageOffset12";
41 case MoveWide16:
42 return "MoveWide16";
43 case GOTPage21:
44 return "GOTPage21";
45 case GOTPageOffset12:
46 return "GOTPageOffset12";
47 case TLVPage21:
48 return "TLVPage21";
49 case TLVPageOffset12:
50 return "TLVPageOffset12";
51 case TLSDescPage21:
52 return "TLSDescPage21";
53 case TLSDescPageOffset12:
54 return "TLSDescPageOffset12";
55 case Delta32ToGOT:
56 return "Delta32ToGOT";
57 case PairedAddend:
58 return "PairedAddend";
59 case LDRLiteral19:
60 return "LDRLiteral19";
61 case Delta32:
62 return "Delta32";
63 case Delta64:
64 return "Delta64";
65 case NegDelta32:
66 return "NegDelta32";
67 case NegDelta64:
68 return "NegDelta64";
69 default:
70 return getGenericEdgeKindName(static_cast<Edge::Kind>(R));
71 }
72 }
73
74 } // namespace aarch64
75 } // namespace jitlink
76 } // namespace llvm
77