Skip to content

Commit 8218055

Browse files
anoopkg6anoopkg6
andauthored
JITLink: Add initial SystemZ Support. (#144528)
Set up initial infrastructure for SystemZ architecture support in JITLink. It includes features like GOT and PLT handling. Relaxation of GOT/PLT and support for TLS were intentionally left out for the moment. Support for TLS might require info regarding moduleID. This could further mean changes to target independent part of JITLink and library support. --------- Co-authored-by: anoopkg6 <[email protected]>
1 parent f45bb98 commit 8218055

26 files changed

+2516
-1
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//===--- ELF_systemz.h - JIT link functions for ELF/systemz --*- 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+
//===----------------------------------------------------------------------===//
10+
//
11+
// jit-link functions for ELF/systemz.
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
#ifndef LLVM_EXECUTIONENGINE_JITLINK_ELF_SYSTEMZ_H
16+
#define LLVM_EXECUTIONENGINE_JITLINK_ELF_SYSTEMZ_H
17+
18+
#include "llvm/ExecutionEngine/JITLink/JITLink.h"
19+
20+
namespace llvm {
21+
namespace jitlink {
22+
23+
/// Create a LinkGraph from an ELF/systemz relocatable object
24+
///
25+
/// Note: The graph does not take ownership of the underlying buffer, nor copy
26+
/// its contents. The caller is responsible for ensuring that the object buffer
27+
/// outlives the graph.
28+
Expected<std::unique_ptr<LinkGraph>> createLinkGraphFromELFObject_systemz(
29+
MemoryBufferRef ObjectBuffer, std::shared_ptr<orc::SymbolStringPool> SSP);
30+
31+
/// jit-link the given object buffer, which must be a ELF systemz relocatable
32+
/// object file.
33+
void link_ELF_systemz(std::unique_ptr<LinkGraph> G,
34+
std::unique_ptr<JITLinkContext> Ctx);
35+
36+
} // end namespace jitlink
37+
} // end namespace llvm
38+
39+
#endif // LLVM_EXECUTIONENGINE_JITLINK_ELF_SYSTEMZ_H

0 commit comments

Comments
 (0)