@@ -187,7 +187,7 @@ static Error applyHarnessPromotions(Session &S, LinkGraph &G) {
187
187
188
188
// If this graph is part of the test then promote any symbols referenced by
189
189
// the harness to default scope, remove all symbols that clash with harness
190
- // definitions, demote all other definitions .
190
+ // definitions.
191
191
std::vector<Symbol *> DefinitionsToRemove;
192
192
for (auto *Sym : G.defined_symbols ()) {
193
193
@@ -219,10 +219,6 @@ static Error applyHarnessPromotions(Session &S, LinkGraph &G) {
219
219
} else if (S.HarnessDefinitions .count (Sym->getName ())) {
220
220
LLVM_DEBUG (dbgs () << " Externalizing " << Sym->getName () << " \n " );
221
221
DefinitionsToRemove.push_back (Sym);
222
- } else {
223
- LLVM_DEBUG (dbgs () << " Demoting " << Sym->getName () << " \n " );
224
- Sym->setScope (Scope::Local);
225
- Sym->setLive (false );
226
222
}
227
223
}
228
224
@@ -521,7 +517,8 @@ Error LLVMJITLinkObjectLinkingLayer::add(JITDylib &JD,
521
517
return SymFlagsOrErr.takeError ();
522
518
523
519
// Skip symbols not defined in this object file.
524
- if (*SymFlagsOrErr & object::BasicSymbolRef::SF_Undefined)
520
+ if ((*SymFlagsOrErr & object::BasicSymbolRef::SF_Undefined) ||
521
+ !(*SymFlagsOrErr & object::BasicSymbolRef::SF_Global))
525
522
continue ;
526
523
527
524
auto Name = Sym.getName ();
@@ -551,10 +548,8 @@ Error LLVMJITLinkObjectLinkingLayer::add(JITDylib &JD,
551
548
*SymFlags &= ~JITSymbolFlags::Exported;
552
549
} else if (S.HarnessExternals .count (*Name)) {
553
550
*SymFlags |= JITSymbolFlags::Exported;
554
- } else {
555
- // Skip symbols that aren't in the HarnessExternals set.
551
+ } else if (S.HarnessDefinitions .count (*Name))
556
552
continue ;
557
- }
558
553
559
554
auto InternedName = S.ES .intern (*Name);
560
555
SymbolFlags[InternedName] = std::move (*SymFlags);
0 commit comments