Skip to content

Commit a28bf0a

Browse files
committed
OrcV2: also set COFF flag overrides when custom linking layer is used
1 parent 05589ee commit a28bf0a

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

llvm/lib/ExecutionEngine/Orc/LLJIT.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -950,8 +950,18 @@ Expected<std::unique_ptr<ObjectLayer>>
950950
LLJIT::createObjectLinkingLayer(LLJITBuilderState &S, ExecutionSession &ES) {
951951

952952
// If the config state provided an ObjectLinkingLayer factory then use it.
953-
if (S.CreateObjectLinkingLayer)
954-
return S.CreateObjectLinkingLayer(ES, S.JTMB->getTargetTriple());
953+
if (S.CreateObjectLinkingLayer) {
954+
auto Layer = S.CreateObjectLinkingLayer(ES, S.JTMB->getTargetTriple());
955+
if (Layer && S.JTMB->getTargetTriple().isOSBinFormatCOFF()) {
956+
auto *RTDyldLayer =
957+
dyn_cast_or_null<RTDyldObjectLinkingLayer>(Layer.get().get());
958+
if (RTDyldLayer) {
959+
RTDyldLayer->setOverrideObjectFlagsWithResponsibilityFlags(true);
960+
RTDyldLayer->setAutoClaimResponsibilityForObjectSymbols(true);
961+
}
962+
}
963+
return Layer;
964+
}
955965

956966
// Otherwise default to creating an RTDyldObjectLinkingLayer that constructs
957967
// a new SectionMemoryManager for each object.

0 commit comments

Comments
 (0)