[llvm] 36e714b - [ORC] Replace ExecutorSymbolDef with ExecutorAddr in remote lookup. (#201492)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 3 21:07:41 PDT 2026


Author: Lang Hames
Date: 2026-06-04T14:07:37+10:00
New Revision: 36e714b78712ef7f697d172b3ede0131568b892c

URL: https://github.com/llvm/llvm-project/commit/36e714b78712ef7f697d172b3ede0131568b892c
DIFF: https://github.com/llvm/llvm-project/commit/36e714b78712ef7f697d172b3ede0131568b892c.diff

LOG: [ORC] Replace ExecutorSymbolDef with ExecutorAddr in remote lookup. (#201492)

Update DylibManager and associated interfaces to return ExecutorAddrs
for remote symbols, rather than ExecutorSymbolDefs. No clients were
using the flags component of ExecutorSymbolDef, and this brings the
SimpleExecutorDylibManager implementation in OrcTargetProcess into
closer alignment with the NativeDylibManager implementation in the new
ORC runtime.

Added: 
    

Modified: 
    llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
    llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h
    llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h
    llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp
    llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp
    llvm/lib/ExecutionEngine/Orc/ExecutorResolutionGenerator.cpp
    llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
    llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.cpp
    llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp
    llvm/tools/lli/ForwardingMemoryManager.h
    llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h b/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
index 523757b058844..c2970a8ed5a88 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
@@ -85,7 +85,7 @@ using SPSSimpleExecutorDylibManagerOpenSignature =
                                                  shared::SPSString, uint64_t);
 
 using SPSSimpleExecutorDylibManagerResolveSignature = shared::SPSExpected<
-    shared::SPSSequence<shared::SPSOptional<shared::SPSExecutorSymbolDef>>>(
+    shared::SPSSequence<shared::SPSOptional<shared::SPSExecutorAddr>>>(
     shared::SPSExecutorAddr, shared::SPSExecutorAddr,
     shared::SPSRemoteSymbolLookupSet);
 

diff  --git a/llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h b/llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h
index 28ff322556cd7..2590ef723200c 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h
@@ -118,7 +118,7 @@ using DylibHandle = ExecutorAddr;
 ///  dylib in the target process.
 using ResolverHandle = ExecutorAddr;
 
-using LookupResult = std::vector<std::optional<ExecutorSymbolDef>>;
+using LookupResult = std::vector<std::optional<ExecutorAddr>>;
 
 } // end namespace tpctypes
 

diff  --git a/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h b/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h
index 2c5e98c7312b9..fe1c84928a95a 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h
@@ -23,7 +23,7 @@ namespace llvm::orc {
 
 class ExecutorResolver {
 public:
-  using ResolveResult = Expected<std::vector<std::optional<ExecutorSymbolDef>>>;
+  using ResolveResult = Expected<std::vector<std::optional<ExecutorAddr>>>;
   using YieldResolveResultFn = unique_function<void(ResolveResult)>;
 
   virtual ~ExecutorResolver() = default;

diff  --git a/llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp b/llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp
index b2db44a625b1b..9d31287445a0d 100644
--- a/llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp
@@ -81,8 +81,8 @@ Error EPCDynamicLibrarySearchGenerator::tryToGenerate(
         SymbolMap NewSymbols;
         for (auto &[Name, Flags] : LookupSymbols) {
           const auto &Sym = *SymsIt++;
-          if (Sym && Sym->getAddress())
-            NewSymbols[Name] = *Sym;
+          if (Sym && *Sym)
+            NewSymbols[Name] = {*Sym, JITSymbolFlags::Exported};
           else if (LLVM_UNLIKELY(!Sym &&
                                  Flags == SymbolLookupFlags::RequiredSymbol))
             MissingSymbols.insert(Name);

diff  --git a/llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp b/llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp
index 220df852d9a2d..025dd739b586b 100644
--- a/llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp
@@ -70,8 +70,7 @@ void EPCGenericDylibManager::lookupAsync(tpctypes::DylibHandle H,
       SAs.Resolve,
       [Complete = std::move(Complete)](
           Error SerializationErr,
-          Expected<std::vector<std::optional<ExecutorSymbolDef>>>
-              Result) mutable {
+          Expected<std::vector<std::optional<ExecutorAddr>>> Result) mutable {
         if (SerializationErr) {
           cantFail(Result.takeError());
           Complete(std::move(SerializationErr));
@@ -89,8 +88,7 @@ void EPCGenericDylibManager::lookupAsync(tpctypes::DylibHandle H,
       SAs.Resolve,
       [Complete = std::move(Complete)](
           Error SerializationErr,
-          Expected<std::vector<std::optional<ExecutorSymbolDef>>>
-              Result) mutable {
+          Expected<std::vector<std::optional<ExecutorAddr>>> Result) mutable {
         if (SerializationErr) {
           cantFail(Result.takeError());
           Complete(std::move(SerializationErr));

diff  --git a/llvm/lib/ExecutionEngine/Orc/ExecutorResolutionGenerator.cpp b/llvm/lib/ExecutionEngine/Orc/ExecutorResolutionGenerator.cpp
index e01a0b3612637..d2284cd06b00e 100644
--- a/llvm/lib/ExecutionEngine/Orc/ExecutorResolutionGenerator.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/ExecutorResolutionGenerator.cpp
@@ -66,8 +66,8 @@ Error ExecutorResolutionGenerator::tryToGenerate(
         SymbolMap NewSyms;
         for (auto &[Name, Flags] : LookupSymbols) {
           const auto &Sym = *Syms++;
-          if (Sym && Sym->getAddress())
-            NewSyms[Name] = *Sym;
+          if (Sym && *Sym)
+            NewSyms[Name] = {*Sym, JITSymbolFlags::Exported};
           else if (LLVM_UNLIKELY(!Sym &&
                                  Flags == SymbolLookupFlags::RequiredSymbol))
             MissingSymbols.insert(Name);

diff  --git a/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp b/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
index e8236a2499f8a..4f73a2ef8a882 100644
--- a/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
@@ -178,8 +178,7 @@ void SelfExecutorProcessControl::InProcessDylibManager::lookupSymbolsAsync(
     if (!Addr && KV.second == SymbolLookupFlags::RequiredSymbol)
       R.emplace_back();
     else
-      R.emplace_back(ExecutorSymbolDef(ExecutorAddr::fromPtr(Addr),
-                                       JITSymbolFlags::Exported));
+      R.emplace_back(ExecutorAddr::fromPtr(Addr));
   }
   Complete(std::move(R));
 }

diff  --git a/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.cpp b/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.cpp
index a2048fd437794..99e50d67e4b38 100644
--- a/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.cpp
@@ -9,7 +9,7 @@ namespace llvm::orc {
 void DylibSymbolResolver::resolveAsync(
     const RemoteSymbolLookupSet &L,
     ExecutorResolver::YieldResolveResultFn &&OnResolve) {
-  std::vector<std::optional<ExecutorSymbolDef>> Result;
+  std::vector<std::optional<ExecutorAddr>> Result;
   auto DL = sys::DynamicLibrary(Handle.toPtr<void *>());
 
   for (const auto &E : L) {
@@ -35,9 +35,7 @@ void DylibSymbolResolver::resolveAsync(
       if (!Addr && E.Required)
         Result.emplace_back();
       else
-        // FIXME: determine accurate JITSymbolFlags.
-        Result.emplace_back(ExecutorSymbolDef(ExecutorAddr::fromPtr(Addr),
-                                              JITSymbolFlags::Exported));
+        Result.emplace_back(ExecutorAddr::fromPtr(Addr));
     }
   }
 

diff  --git a/llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp b/llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp
index 421139f12d4d9..c80236ff6cc34 100644
--- a/llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp
@@ -47,8 +47,7 @@ SimpleExecutorDylibManager::open(const std::string &Path, uint64_t Mode) {
 ExecutorResolver::ResolveResult
 SimpleExecutorDylibManager::resolve(ExecutorAddr Resolver,
                                     RemoteSymbolLookupSet Lookup) {
-  using TmpResult =
-      MSVCPExpected<std::vector<std::optional<ExecutorSymbolDef>>>;
+  using TmpResult = MSVCPExpected<std::vector<std::optional<ExecutorAddr>>>;
   std::promise<TmpResult> P;
   auto F = P.get_future();
   Resolver.toPtr<ExecutorResolver *>()->resolveAsync(

diff  --git a/llvm/tools/lli/ForwardingMemoryManager.h b/llvm/tools/lli/ForwardingMemoryManager.h
index d193befc0682d..776726b9246c6 100644
--- a/llvm/tools/lli/ForwardingMemoryManager.h
+++ b/llvm/tools/lli/ForwardingMemoryManager.h
@@ -112,8 +112,7 @@ class RemoteResolver : public LegacyJITSymbolResolver {
       if (!Syms->front())
         return make_error<StringError>("Expected valid address",
                                        inconvertibleErrorCode());
-      return JITSymbol(Syms->front()->getAddress().getValue(),
-                       Syms->front()->getFlags());
+      return JITSymbol(Syms->front()->getValue(), JITSymbolFlags::Exported);
     } else
       return Syms.takeError();
   }

diff  --git a/llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp b/llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp
index 6edc85456e641..4a12a45df95bb 100644
--- a/llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp
@@ -303,13 +303,10 @@ TEST(ObjectLinkingLayerSearchGeneratorTest, AbsoluteSymbolsObjectLayer) {
       tpctypes::LookupResult Result;
       EXPECT_EQ(Symbols.size(), 1u);
       for (auto &Sym : Symbols) {
-        if (*Sym.first == "_testFunc") {
-          ExecutorSymbolDef Def{ExecutorAddr::fromPtr((void *)0x1000),
-                                JITSymbolFlags::Exported};
-          Result.emplace_back(Def);
-        } else {
+        if (*Sym.first == "_testFunc")
+          Result.emplace_back(ExecutorAddr::fromPtr((void *)0x1000));
+        else
           ADD_FAILURE() << "unexpected symbol request " << *Sym.first;
-        }
       }
       Complete(std::move(Result));
     }


        


More information about the llvm-commits mailing list