Driver: do not generate a dSYM bundle for static archives

When building a static library with debug information, do not create a
dSYM generation job as it cannot be executed on a non-image target.
This is important for the case where the single invocation is both the
compile and link job.

This was detected in conjunction with @gottesmm.
This commit is contained in:
Saleem Abdulrasool
2021-05-19 20:57:26 -07:00
parent f69dfc2e9a
commit 1f11627f09
2 changed files with 33 additions and 7 deletions

View File

@@ -2222,13 +2222,25 @@ void Driver::buildActions(SmallVectorImpl<const Action *> &TopLevelActions,
}
TopLevelActions.push_back(LinkAction);
if (TC.getTriple().isOSDarwin() &&
OI.DebugInfoLevel > IRGenDebugInfoLevel::None) {
auto *dSYMAction = C.createAction<GenerateDSYMJobAction>(LinkAction);
TopLevelActions.push_back(dSYMAction);
if (Args.hasArg(options::OPT_verify_debug_info)) {
TopLevelActions.push_back(
C.createAction<VerifyDebugInfoJobAction>(dSYMAction));
if (TC.getTriple().isOSDarwin()) {
switch (OI.LinkAction) {
case LinkKind::Executable:
case LinkKind::DynamicLibrary:
if (OI.DebugInfoLevel > IRGenDebugInfoLevel::None) {
auto *dSYMAction = C.createAction<GenerateDSYMJobAction>(LinkAction);
TopLevelActions.push_back(dSYMAction);
if (Args.hasArg(options::OPT_verify_debug_info)) {
TopLevelActions.push_back(
C.createAction<VerifyDebugInfoJobAction>(dSYMAction));
}
}
break;
case LinkKind::None:
LLVM_FALLTHROUGH;
case LinkKind::StaticLibrary:
// Cannot build the DSYM bundle for non-image targets.
break;
}
}
} else {