diff options
author | Lang Hames <lhames@gmail.com> | 2022-03-07 20:37:33 -0800 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2022-03-07 20:54:55 -0800 |
commit | 36f0dfd07a77fc801e3b54af66442778a4728868 (patch) | |
tree | de95e442ef8ec8f5e0734b7786ca4a8ab1f95872 /llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp | |
parent | 0d849b8249e8d25484cab3e6aaba3cbcddc408dd (diff) | |
download | llvm-36f0dfd07a77fc801e3b54af66442778a4728868.zip llvm-36f0dfd07a77fc801e3b54af66442778a4728868.tar.gz llvm-36f0dfd07a77fc801e3b54af66442778a4728868.tar.bz2 |
[ORC][JITLink] Fix MachO absolute symbol handling, add test case.
This patch removes the unintended resolution of locally scoped absolute symbols
(which was causing unexpected definition errors).
It stops using the JITSymbolFlags::Absolute flag (it isn't set or used elsewhere,
and causes mismatch-flags asserts), and adds JITSymbolFlags::Exported to default
scoped absolute symbols.
Finally, we now set the scope of absolute symbols correctly in
MachOLinkGraphBuilder.
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp index 481f5f6..4461b6c 100644 --- a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp +++ b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp @@ -226,12 +226,13 @@ public: } for (auto *Sym : G.absolute_symbols()) - if (Sym->hasName()) { + if (Sym->hasName() && Sym->getScope() != Scope::Local) { auto InternedName = ES.intern(Sym->getName()); JITSymbolFlags Flags; - Flags |= JITSymbolFlags::Absolute; if (Sym->isCallable()) Flags |= JITSymbolFlags::Callable; + if (Sym->getScope() == Scope::Default) + Flags |= JITSymbolFlags::Exported; if (Sym->getLinkage() == Linkage::Weak) Flags |= JITSymbolFlags::Weak; InternedResult[InternedName] = |