summaryrefslogtreecommitdiff
blob: 14d6a167a8632ba050e0032477fd3648f5ecb795 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
diff --git a/src/bpforc.h b/src/bpforc.h
index a6ee583..8d0e579 100644
--- a/src/bpforc.h
+++ b/src/bpforc.h
@@ -80,8 +80,13 @@ class BpfOrc
   ExecutionSession ES;
   std::unique_ptr<TargetMachine> TM;
   std::shared_ptr<SymbolResolver> Resolver;
+#if LLVM_VERSION_MAJOR >= 8
+  LegacyRTDyldObjectLinkingLayer ObjectLayer;
+  LegacyIRCompileLayer<decltype(ObjectLayer), SimpleCompiler> CompileLayer;
+#else
   RTDyldObjectLinkingLayer ObjectLayer;
   IRCompileLayer<decltype(ObjectLayer), SimpleCompiler> CompileLayer;
+#endif

 public:
   std::map<std::string, std::tuple<uint8_t *, uintptr_t>> sections_;
@@ -91,7 +96,11 @@ class BpfOrc
       Resolver(createLegacyLookupResolver(ES,
         [](const std::string &Name __attribute__((unused))) -> JITSymbol { return nullptr; },
         [](Error Err) { cantFail(std::move(Err), "lookup failed"); })),
+#if LLVM_VERSION_MAJOR >= 8
+      ObjectLayer(ES, [this](VModuleKey) { return LegacyRTDyldObjectLinkingLayer::Resources{std::make_shared<MemoryManager>(sections_), Resolver}; }),
+#else
       ObjectLayer(ES, [this](VModuleKey) { return RTDyldObjectLinkingLayer::Resources{std::make_shared<MemoryManager>(sections_), Resolver}; }),
+#endif
       CompileLayer(ObjectLayer, SimpleCompiler(*TM)) {}

   void compileModule(std::unique_ptr<Module> M) {