LLVM
15.0.0git
include
llvm
ExecutionEngine
JITLink
ELF_x86_64.h
Go to the documentation of this file.
1
//===--- ELF_x86_64.h - JIT link functions for ELF/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 ELF/x86-64.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_EXECUTIONENGINE_JITLINK_ELF_X86_64_H
14
#define LLVM_EXECUTIONENGINE_JITLINK_ELF_X86_64_H
15
16
#include "
llvm/ExecutionEngine/JITLink/JITLink.h
"
17
18
namespace
llvm
{
19
namespace
jitlink {
20
21
namespace
ELF_x86_64_Edges {
22
enum
ELFX86RelocationKind
:
Edge::Kind
{
23
Branch32
=
Edge::FirstRelocation
,
24
Pointer32Signed
,
25
Pointer64
,
26
PCRel32
,
27
PCRel32GOTLoad
,
28
PCRel32GOTLoadRelaxable
,
29
PCRel32REXGOTLoadRelaxable
,
30
PCRel32TLV
,
31
PCRel64GOT
,
32
GOTOFF64
,
33
GOT64
,
34
Delta64
,
35
};
36
37
}
// end namespace ELF_x86_64_Edges
38
39
/// Create a LinkGraph from an ELF/x86-64 relocatable object.
40
///
41
/// Note: The graph does not take ownership of the underlying buffer, nor copy
42
/// its contents. The caller is responsible for ensuring that the object buffer
43
/// outlives the graph.
44
Expected<std::unique_ptr<LinkGraph>
>
45
createLinkGraphFromELFObject_x86_64
(
MemoryBufferRef
ObjectBuffer);
46
47
/// jit-link the given object buffer, which must be a ELF x86-64 object file.
48
void
link_ELF_x86_64
(std::unique_ptr<LinkGraph>
G
,
49
std::unique_ptr<JITLinkContext> Ctx);
50
51
/// Return the string name of the given ELF x86-64 edge kind.
52
const
char
*
getELFX86RelocationKindName
(
Edge::Kind
R);
53
}
// end namespace jitlink
54
}
// end namespace llvm
55
56
#endif // LLVM_EXECUTIONENGINE_JITLINK_ELF_X86_64_H
llvm::jitlink::link_ELF_x86_64
void link_ELF_x86_64(std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx)
jit-link the given object buffer, which must be a ELF x86-64 object file.
Definition:
ELF_x86_64.cpp:366
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:17
JITLink.h
llvm::jitlink::ELF_x86_64_Edges::PCRel64GOT
@ PCRel64GOT
Definition:
ELF_x86_64.h:31
llvm::jitlink::ELF_x86_64_Edges::Pointer32Signed
@ Pointer32Signed
Definition:
ELF_x86_64.h:24
llvm::jitlink::ELF_x86_64_Edges::PCRel32TLV
@ PCRel32TLV
Definition:
ELF_x86_64.h:30
llvm::Expected
Tagged union holding either a T or a Error.
Definition:
APFloat.h:41
llvm::MemoryBufferRef
Definition:
MemoryBufferRef.h:22
llvm::jitlink::createLinkGraphFromELFObject_x86_64
Expected< std::unique_ptr< LinkGraph > > createLinkGraphFromELFObject_x86_64(MemoryBufferRef ObjectBuffer)
Create a LinkGraph from an ELF/x86-64 relocatable object.
Definition:
ELF_x86_64.cpp:332
llvm::jitlink::ELF_x86_64_Edges::ELFX86RelocationKind
ELFX86RelocationKind
Definition:
ELF_x86_64.h:22
llvm::jitlink::ELF_x86_64_Edges::PCRel32REXGOTLoadRelaxable
@ PCRel32REXGOTLoadRelaxable
Definition:
ELF_x86_64.h:29
llvm::jitlink::ELF_x86_64_Edges::Pointer64
@ Pointer64
Definition:
ELF_x86_64.h:25
llvm::jitlink::ELF_x86_64_Edges::PCRel32GOTLoadRelaxable
@ PCRel32GOTLoadRelaxable
Definition:
ELF_x86_64.h:28
llvm::jitlink::Edge::FirstRelocation
@ FirstRelocation
Definition:
JITLink.h:67
llvm::jitlink::ELF_x86_64_Edges::Branch32
@ Branch32
Definition:
ELF_x86_64.h:23
G
const DataFlowGraph & G
Definition:
RDFGraph.cpp:200
llvm::jitlink::ELF_x86_64_Edges::PCRel32GOTLoad
@ PCRel32GOTLoad
Definition:
ELF_x86_64.h:27
llvm::jitlink::ELF_x86_64_Edges::GOT64
@ GOT64
Definition:
ELF_x86_64.h:33
llvm::jitlink::ELF_x86_64_Edges::GOTOFF64
@ GOTOFF64
Definition:
ELF_x86_64.h:32
llvm::jitlink::getELFX86RelocationKindName
const char * getELFX86RelocationKindName(Edge::Kind R)
Return the string name of the given ELF x86-64 edge kind.
Definition:
ELF_x86_64.cpp:402
llvm::jitlink::ELF_x86_64_Edges::Delta64
@ Delta64
Definition:
ELF_x86_64.h:34
llvm::jitlink::ELF_x86_64_Edges::PCRel32
@ PCRel32
Definition:
ELF_x86_64.h:26
llvm::jitlink::Edge::Kind
uint8_t Kind
Definition:
JITLink.h:61
Generated on Fri Jul 1 2022 00:05:06 for LLVM by
1.8.17