aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2022-03-07 20:37:33 -0800
committerLang Hames <lhames@gmail.com>2022-03-07 20:54:55 -0800
commit36f0dfd07a77fc801e3b54af66442778a4728868 (patch)
treede95e442ef8ec8f5e0734b7786ca4a8ab1f95872 /llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp
parent0d849b8249e8d25484cab3e6aaba3cbcddc408dd (diff)
downloadllvm-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.cpp5
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] =