1 //===--- MachO_x86_64.h - JIT link functions for MachO/x86-64 ---*- 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/x86-64. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef LLVM_EXECUTIONENGINE_JITLINK_MACHO_X86_64_H 14 #define LLVM_EXECUTIONENGINE_JITLINK_MACHO_X86_64_H 15 16 #include "llvm/ExecutionEngine/JITLink/JITLink.h" 17 18 namespace llvm { 19 namespace jitlink { 20 21 namespace MachO_x86_64_Edges { 22 23 enum MachOX86RelocationKind : Edge::Kind { 24 Branch32 = Edge::FirstRelocation, 25 Branch32ToStub, 26 Pointer32, 27 Pointer64, 28 Pointer64Anon, 29 PCRel32, 30 PCRel32Minus1, 31 PCRel32Minus2, 32 PCRel32Minus4, 33 PCRel32Anon, 34 PCRel32Minus1Anon, 35 PCRel32Minus2Anon, 36 PCRel32Minus4Anon, 37 PCRel32GOTLoad, 38 PCRel32GOT, 39 PCRel32TLV, 40 Delta32, 41 Delta64, 42 NegDelta32, 43 NegDelta64, 44 }; 45 46 } // namespace MachO_x86_64_Edges 47 48 /// jit-link the given object buffer, which must be a MachO x86-64 object file. 49 /// 50 /// If PrePrunePasses is empty then a default mark-live pass will be inserted 51 /// that will mark all exported atoms live. If PrePrunePasses is not empty, the 52 /// caller is responsible for including a pass to mark atoms as live. 53 /// 54 /// If PostPrunePasses is empty then a default GOT-and-stubs insertion pass will 55 /// be inserted. If PostPrunePasses is not empty then the caller is responsible 56 /// for including a pass to insert GOT and stub edges. 57 void jitLink_MachO_x86_64(std::unique_ptr<JITLinkContext> Ctx); 58 59 /// Return the string name of the given MachO x86-64 edge kind. 60 StringRef getMachOX86RelocationKindName(Edge::Kind R); 61 62 } // end namespace jitlink 63 } // end namespace llvm 64 65 #endif // LLVM_EXECUTIONENGINE_JITLINK_MACHO_X86_64_H 66