Skip to content

Commit be7283d

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

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

llvm/lib/ExecutionEngine/Orc/LLJIT.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -948,10 +948,18 @@ Expected<ExecutorAddr> LLJIT::lookupLinkerMangled(JITDylib &JD,
948948

949949
Expected<std::unique_ptr<ObjectLayer>>
950950
LLJIT::createObjectLinkingLayer(LLJITBuilderState &S, ExecutionSession &ES) {
951-
952951
// If the config state provided an ObjectLinkingLayer factory then use it.
953-
if (S.CreateObjectLinkingLayer)
954-
return S.CreateObjectLinkingLayer(ES, S.JTMB->getTargetTriple());
952+
if (S.CreateObjectLinkingLayer) {
953+
auto Layer = S.CreateObjectLinkingLayer(ES, S.JTMB->getTargetTriple());
954+
if (Layer && S.JTMB->getTargetTriple().isOSBinFormatCOFF()) {
955+
auto RTDyldLayer = dyn_cast_or_null<RTDyldObjectLinkingLayer>(Layer.get());
956+
if (RTDyldLayer) {
957+
RTDyldLayer->setOverrideObjectFlagsWithResponsibilityFlags(true);
958+
RTDyldLayer->setAutoClaimResponsibilityForObjectSymbols(true);
959+
}
960+
}
961+
return Layer;
962+
}
955963

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

0 commit comments

Comments
 (0)