[PATCH] D65548: Make JITDylib ignore Exported flag
Sasha Krassovsky via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 1 10:14:32 PDT 2019
save-buffer updated this revision to Diff 212844.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D65548/new/
https://reviews.llvm.org/D65548
Files:
llvm/lib/ExecutionEngine/Orc/Core.cpp
Index: llvm/lib/ExecutionEngine/Orc/Core.cpp
===================================================================
--- llvm/lib/ExecutionEngine/Orc/Core.cpp
+++ llvm/lib/ExecutionEngine/Orc/Core.cpp
@@ -376,11 +376,13 @@
auto I = SymbolFlags.find(KV.first);
assert(I != SymbolFlags.end() &&
"Resolving symbol outside this responsibility set");
+ // Mask out Exported for compatibility with COFF
+ constexpr auto Mask = ~JITSymbolFlags::Exported;
if (I->second.isWeak())
- assert(I->second == (KV.second.getFlags() | JITSymbolFlags::Weak) &&
+ assert((I->second & Mask) == ((KV.second.getFlags() | JITSymbolFlags::Weak) & Mask) &&
"Resolving symbol with incorrect flags");
else
- assert(I->second == KV.second.getFlags() &&
+ assert((I->second & Mask) == (KV.second.getFlags() & Mask) &&
"Resolving symbol with incorrect flags");
}
#endif
@@ -871,12 +873,19 @@
"Symbol should be materializing");
assert(I->second.getAddress() == 0 && "Symbol has already been resolved");
- assert((Sym.getFlags() & ~JITSymbolFlags::Weak) ==
- (I->second.getFlags() & ~JITSymbolFlags::Weak) &&
+ // Mask out Exported flag for compatibility with COFF
+ constexpr auto Mask = ~(JITSymbolFlags::Weak | JITSymbolFlags::Exported);
+ assert((Sym.getFlags() & Mask) ==
+ (I->second.getFlags() & Mask) &&
"Resolved flags should match the declared flags");
// Once resolved, symbols can never be weak.
- JITSymbolFlags ResolvedFlags = Sym.getFlags();
+ // IMPORTANT: We use I->second.getFlags() because we want
+ // to reuse the flags from the original IR. Some
+ // object file formats like COFF don't have an
+ // exported flag, for example, so we want to preserve
+ // IR flags.
+ JITSymbolFlags ResolvedFlags = I->second.getFlags();
ResolvedFlags &= ~JITSymbolFlags::Weak;
I->second.setAddress(Sym.getAddress());
I->second.setFlags(ResolvedFlags);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65548.212844.patch
Type: text/x-patch
Size: 2110 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190801/80b04c07/attachment.bin>
More information about the llvm-commits
mailing list