MachO_arm64.h revision 360784
1//===---- MachO_arm64.h - JIT link functions for MachO/arm64 ----*- C++ -*-===//
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// jit-link functions for MachO/arm64.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_EXECUTIONENGINE_JITLINK_MACHO_ARM64_H
14#define LLVM_EXECUTIONENGINE_JITLINK_MACHO_ARM64_H
15
16#include "llvm/ExecutionEngine/JITLink/JITLink.h"
17
18namespace llvm {
19namespace jitlink {
20
21namespace MachO_arm64_Edges {
22
23enum MachOARM64RelocationKind : Edge::Kind {
24  Branch26 = Edge::FirstRelocation,
25  Pointer32,
26  Pointer64,
27  Pointer64Anon,
28  Page21,
29  PageOffset12,
30  GOTPage21,
31  GOTPageOffset12,
32  PointerToGOT,
33  PairedAddend,
34  LDRLiteral19,
35  Delta32,
36  Delta64,
37  NegDelta32,
38  NegDelta64,
39};
40
41} // namespace MachO_arm64_Edges
42
43/// jit-link the given object buffer, which must be a MachO arm64 object file.
44///
45/// If PrePrunePasses is empty then a default mark-live pass will be inserted
46/// that will mark all exported atoms live. If PrePrunePasses is not empty, the
47/// caller is responsible for including a pass to mark atoms as live.
48///
49/// If PostPrunePasses is empty then a default GOT-and-stubs insertion pass will
50/// be inserted. If PostPrunePasses is not empty then the caller is responsible
51/// for including a pass to insert GOT and stub edges.
52void jitLink_MachO_arm64(std::unique_ptr<JITLinkContext> Ctx);
53
54/// Return the string name of the given MachO arm64 edge kind.
55StringRef getMachOARM64RelocationKindName(Edge::Kind R);
56
57} // end namespace jitlink
58} // end namespace llvm
59
60#endif // LLVM_EXECUTIONENGINE_JITLINK_MACHO_ARM64_H
61