Skip to content

Commit dc11c06

Browse files
committed
[ORC] Move absoluteSymbols from Core.h to new AbsoluteSymbols.h header. NFC.
Continuing Core.h clean-up. If you see any errors about a missing absoluteSymbols function you need to include the new AbsoluteSymbols.h header.
1 parent 3006ddd commit dc11c06

20 files changed

+135
-77
lines changed

llvm/examples/OrcV2Examples/LLJITWithInitializers/LLJITWithInitializers.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
//===----------------------------------------------------------------------===//
2020

2121
#include "llvm/ADT/StringMap.h"
22+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
2223
#include "llvm/ExecutionEngine/Orc/LLJIT.h"
2324
#include "llvm/Support/InitLLVM.h"
2425
#include "llvm/Support/TargetSelect.h"
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
//===------ AbsoluteSymbols.h - Absolute symbols utilities ------*- 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+
// absoluteSymbols function and related utilities.
10+
//
11+
//===----------------------------------------------------------------------===//
12+
13+
#ifndef LLVM_EXECUTIONENGINE_ORC_ABSOLUTESYMBOLS_H
14+
#define LLVM_EXECUTIONENGINE_ORC_ABSOLUTESYMBOLS_H
15+
16+
#include "llvm/ExecutionEngine/Orc/MaterializationUnit.h"
17+
18+
namespace llvm::orc {
19+
20+
/// A MaterializationUnit implementation for pre-existing absolute symbols.
21+
///
22+
/// All symbols will be resolved and marked ready as soon as the unit is
23+
/// materialized.
24+
class AbsoluteSymbolsMaterializationUnit : public MaterializationUnit {
25+
public:
26+
AbsoluteSymbolsMaterializationUnit(SymbolMap Symbols);
27+
28+
StringRef getName() const override;
29+
30+
private:
31+
void materialize(std::unique_ptr<MaterializationResponsibility> R) override;
32+
void discard(const JITDylib &JD, const SymbolStringPtr &Name) override;
33+
static MaterializationUnit::Interface extractFlags(const SymbolMap &Symbols);
34+
35+
SymbolMap Symbols;
36+
};
37+
38+
/// Create an AbsoluteSymbolsMaterializationUnit with the given symbols.
39+
/// Useful for inserting absolute symbols into a JITDylib. E.g.:
40+
/// \code{.cpp}
41+
/// JITDylib &JD = ...;
42+
/// SymbolStringPtr Foo = ...;
43+
/// ExecutorSymbolDef FooSym = ...;
44+
/// if (auto Err = JD.define(absoluteSymbols({
45+
/// { Foo, FooSym },
46+
/// { Bar, BarSym }
47+
/// })))
48+
/// return Err;
49+
/// \endcode
50+
///
51+
inline std::unique_ptr<AbsoluteSymbolsMaterializationUnit>
52+
absoluteSymbols(SymbolMap Symbols) {
53+
return std::make_unique<AbsoluteSymbolsMaterializationUnit>(
54+
std::move(Symbols));
55+
}
56+
57+
} // namespace llvm::orc
58+
59+
#endif // LLVM_EXECUTIONENGINE_ORC_ABSOLUTESYMBOLS_H

llvm/include/llvm/ExecutionEngine/Orc/Core.h

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -666,40 +666,6 @@ class MaterializationResponsibility {
666666
SymbolStringPtr InitSymbol;
667667
};
668668

669-
/// A MaterializationUnit implementation for pre-existing absolute symbols.
670-
///
671-
/// All symbols will be resolved and marked ready as soon as the unit is
672-
/// materialized.
673-
class AbsoluteSymbolsMaterializationUnit : public MaterializationUnit {
674-
public:
675-
AbsoluteSymbolsMaterializationUnit(SymbolMap Symbols);
676-
677-
StringRef getName() const override;
678-
679-
private:
680-
void materialize(std::unique_ptr<MaterializationResponsibility> R) override;
681-
void discard(const JITDylib &JD, const SymbolStringPtr &Name) override;
682-
static MaterializationUnit::Interface extractFlags(const SymbolMap &Symbols);
683-
684-
SymbolMap Symbols;
685-
};
686-
687-
/// Create an AbsoluteSymbolsMaterializationUnit with the given symbols.
688-
/// Useful for inserting absolute symbols into a JITDylib. E.g.:
689-
/// \code{.cpp}
690-
/// JITDylib &JD = ...;
691-
/// SymbolStringPtr Foo = ...;
692-
/// ExecutorSymbolDef FooSym = ...;
693-
/// if (auto Err = JD.define(absoluteSymbols({{Foo, FooSym}})))
694-
/// return Err;
695-
/// \endcode
696-
///
697-
inline std::unique_ptr<AbsoluteSymbolsMaterializationUnit>
698-
absoluteSymbols(SymbolMap Symbols) {
699-
return std::make_unique<AbsoluteSymbolsMaterializationUnit>(
700-
std::move(Symbols));
701-
}
702-
703669
/// A materialization unit for symbol aliases. Allows existing symbols to be
704670
/// aliased with alternate flags.
705671
class ReExportsMaterializationUnit : public MaterializationUnit {

llvm/include/llvm/ExecutionEngine/Orc/LLJIT.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#define LLVM_EXECUTIONENGINE_ORC_LLJIT_H
1515

1616
#include "llvm/ADT/SmallSet.h"
17+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1718
#include "llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h"
1819
#include "llvm/ExecutionEngine/Orc/CompileUtils.h"
1920
#include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//===---------- AbsoluteSymbols.cpp - Absolute symbols 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+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
10+
#include "llvm/ExecutionEngine/Orc/Core.h"
11+
12+
#define DEBUG_TYPE "orc"
13+
14+
namespace llvm::orc {
15+
16+
AbsoluteSymbolsMaterializationUnit::AbsoluteSymbolsMaterializationUnit(
17+
SymbolMap Symbols)
18+
: MaterializationUnit(extractFlags(Symbols)), Symbols(std::move(Symbols)) {}
19+
20+
StringRef AbsoluteSymbolsMaterializationUnit::getName() const {
21+
return "<Absolute Symbols>";
22+
}
23+
24+
void AbsoluteSymbolsMaterializationUnit::materialize(
25+
std::unique_ptr<MaterializationResponsibility> R) {
26+
// Even though these are just absolute symbols we need to check for failure
27+
// to resolve/emit: the tracker for these symbols may have been removed while
28+
// the materialization was in flight (e.g. due to a failure in some action
29+
// triggered by the queries attached to the resolution/emission of these
30+
// symbols).
31+
if (auto Err = R->notifyResolved(Symbols)) {
32+
R->getExecutionSession().reportError(std::move(Err));
33+
R->failMaterialization();
34+
return;
35+
}
36+
if (auto Err = R->notifyEmitted({})) {
37+
R->getExecutionSession().reportError(std::move(Err));
38+
R->failMaterialization();
39+
return;
40+
}
41+
}
42+
43+
void AbsoluteSymbolsMaterializationUnit::discard(const JITDylib &JD,
44+
const SymbolStringPtr &Name) {
45+
assert(Symbols.count(Name) && "Symbol is not part of this MU");
46+
Symbols.erase(Name);
47+
}
48+
49+
MaterializationUnit::Interface
50+
AbsoluteSymbolsMaterializationUnit::extractFlags(const SymbolMap &Symbols) {
51+
SymbolFlagsMap Flags;
52+
for (const auto &[Name, Def] : Symbols)
53+
Flags[Name] = Def.getFlags();
54+
return MaterializationUnit::Interface(std::move(Flags), nullptr);
55+
}
56+
57+
} // namespace llvm::orc

llvm/lib/ExecutionEngine/Orc/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ if( CMAKE_HOST_UNIX AND HAVE_LIBRT )
77
endif()
88

99
add_llvm_component_library(LLVMOrcJIT
10+
AbsoluteSymbols.cpp
1011
COFFVCRuntimeSupport.cpp
1112
COFFPlatform.cpp
1213
CompileOnDemandLayer.cpp

llvm/lib/ExecutionEngine/Orc/COFFPlatform.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "llvm/ExecutionEngine/Orc/COFFPlatform.h"
10+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1011
#include "llvm/ExecutionEngine/Orc/DebugUtils.h"
1112
#include "llvm/ExecutionEngine/Orc/LookupAndRecordAddrs.h"
1213
#include "llvm/ExecutionEngine/Orc/ObjectFileInterface.h"

llvm/lib/ExecutionEngine/Orc/Core.cpp

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -276,47 +276,6 @@ void AsynchronousSymbolQuery::detach() {
276276
QueryRegistrations.clear();
277277
}
278278

279-
AbsoluteSymbolsMaterializationUnit::AbsoluteSymbolsMaterializationUnit(
280-
SymbolMap Symbols)
281-
: MaterializationUnit(extractFlags(Symbols)), Symbols(std::move(Symbols)) {}
282-
283-
StringRef AbsoluteSymbolsMaterializationUnit::getName() const {
284-
return "<Absolute Symbols>";
285-
}
286-
287-
void AbsoluteSymbolsMaterializationUnit::materialize(
288-
std::unique_ptr<MaterializationResponsibility> R) {
289-
// Even though these are just absolute symbols we need to check for failure
290-
// to resolve/emit: the tracker for these symbols may have been removed while
291-
// the materialization was in flight (e.g. due to a failure in some action
292-
// triggered by the queries attached to the resolution/emission of these
293-
// symbols).
294-
if (auto Err = R->notifyResolved(Symbols)) {
295-
R->getExecutionSession().reportError(std::move(Err));
296-
R->failMaterialization();
297-
return;
298-
}
299-
if (auto Err = R->notifyEmitted({})) {
300-
R->getExecutionSession().reportError(std::move(Err));
301-
R->failMaterialization();
302-
return;
303-
}
304-
}
305-
306-
void AbsoluteSymbolsMaterializationUnit::discard(const JITDylib &JD,
307-
const SymbolStringPtr &Name) {
308-
assert(Symbols.count(Name) && "Symbol is not part of this MU");
309-
Symbols.erase(Name);
310-
}
311-
312-
MaterializationUnit::Interface
313-
AbsoluteSymbolsMaterializationUnit::extractFlags(const SymbolMap &Symbols) {
314-
SymbolFlagsMap Flags;
315-
for (const auto &[Name, Def] : Symbols)
316-
Flags[Name] = Def.getFlags();
317-
return MaterializationUnit::Interface(std::move(Flags), nullptr);
318-
}
319-
320279
ReExportsMaterializationUnit::ReExportsMaterializationUnit(
321280
JITDylib *SourceJD, JITDylibLookupFlags SourceJDLookupFlags,
322281
SymbolAliasMap Aliases)

llvm/lib/ExecutionEngine/Orc/ELFNixPlatform.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "llvm/ExecutionEngine/JITLink/aarch64.h"
1515
#include "llvm/ExecutionEngine/JITLink/ppc64.h"
1616
#include "llvm/ExecutionEngine/JITLink/x86_64.h"
17+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1718
#include "llvm/ExecutionEngine/Orc/DebugUtils.h"
1819
#include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
1920
#include "llvm/ExecutionEngine/Orc/LookupAndRecordAddrs.h"

llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "llvm/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.h"
10+
11+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1012
#include "llvm/ExecutionEngine/Orc/DebugUtils.h"
1113
#include "llvm/Support/Error.h"
1214

llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
1010
#include "llvm/ExecutionEngine/JITLink/x86_64.h"
11+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1112
#include "llvm/ExecutionEngine/Orc/Layer.h"
1213
#include "llvm/ExecutionEngine/Orc/LoadLinkableFile.h"
1314
#include "llvm/ExecutionEngine/Orc/MachO.h"

llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "llvm/ExecutionEngine/JITLink/MachO.h"
1313
#include "llvm/ExecutionEngine/JITLink/aarch64.h"
1414
#include "llvm/ExecutionEngine/JITLink/x86_64.h"
15+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1516
#include "llvm/ExecutionEngine/Orc/DebugUtils.h"
1617
#include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
1718
#include "llvm/ExecutionEngine/Orc/LookupAndRecordAddrs.h"

llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "llvm-c/OrcEE.h"
1212
#include "llvm-c/TargetMachine.h"
1313

14+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1415
#include "llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h"
1516
#include "llvm/ExecutionEngine/Orc/LLJIT.h"
1617
#include "llvm/ExecutionEngine/Orc/ObjectTransformLayer.h"

llvm/lib/ExecutionEngine/Orc/Speculation.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "llvm/ExecutionEngine/Orc/Speculation.h"
10+
11+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1012
#include "llvm/IR/BasicBlock.h"
1113
#include "llvm/IR/Function.h"
1214
#include "llvm/IR/IRBuilder.h"

llvm/tools/lli/lli.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "llvm/ExecutionEngine/JITSymbol.h"
2525
#include "llvm/ExecutionEngine/MCJIT.h"
2626
#include "llvm/ExecutionEngine/ObjectCache.h"
27+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
2728
#include "llvm/ExecutionEngine/Orc/DebugUtils.h"
2829
#include "llvm/ExecutionEngine/Orc/Debugging/DebuggerSupport.h"
2930
#include "llvm/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.h"

llvm/tools/llvm-jitlink/llvm-jitlink.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "llvm-jitlink.h"
1616
#include "llvm/BinaryFormat/Magic.h"
1717
#include "llvm/Config/llvm-config.h" // for LLVM_ON_UNIX, LLVM_ENABLE_THREADS
18+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1819
#include "llvm/ExecutionEngine/Orc/COFFPlatform.h"
1920
#include "llvm/ExecutionEngine/Orc/COFFVCRuntimeSupport.h"
2021
#include "llvm/ExecutionEngine/Orc/DebugObjectManagerPlugin.h"

llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "OrcTestCommon.h"
1010
#include "llvm/ADT/ScopeExit.h"
1111
#include "llvm/Config/llvm-config.h"
12+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1213
#include "llvm/ExecutionEngine/Orc/Core.h"
1314
#include "llvm/ExecutionEngine/Orc/Shared/OrcError.h"
1415
#include "llvm/Testing/Support/Error.h"

llvm/unittests/ExecutionEngine/Orc/ExecutionSessionWrapperFunctionCallsTest.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
910
#include "llvm/ExecutionEngine/Orc/Core.h"
1011
#include "llvm/ExecutionEngine/Orc/ExecutorProcessControl.h"
1112
#include "llvm/Support/MSVCErrorWorkarounds.h"

llvm/unittests/ExecutionEngine/Orc/LookupAndRecordAddrsTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#include "OrcTestCommon.h"
10-
119
#include "llvm/ExecutionEngine/Orc/LookupAndRecordAddrs.h"
10+
#include "OrcTestCommon.h"
11+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
1212
#include "llvm/Support/MSVCErrorWorkarounds.h"
1313
#include "llvm/Testing/Support/Error.h"
1414

llvm/unittests/ExecutionEngine/Orc/ReOptimizeLayerTest.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "llvm/ExecutionEngine/Orc/ReOptimizeLayer.h"
22
#include "OrcTestCommon.h"
33
#include "llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h"
4+
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
45
#include "llvm/ExecutionEngine/Orc/CompileUtils.h"
56
#include "llvm/ExecutionEngine/Orc/ExecutorProcessControl.h"
67
#include "llvm/ExecutionEngine/Orc/IRCompileLayer.h"

0 commit comments

Comments
 (0)