[Lldb-commits] [lldb] Avoid a potential exit(1) in LLVMContext::diagnose() (PR #84992)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Mar 12 16:26:15 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Adrian Prantl (adrian-prantl)
<details>
<summary>Changes</summary>
by handling *all* errors in IRExecDiagnosticHandler. The function that call this handles all unhandled errors with an `exit(1)`.
rdar://124459751
I don't really have a testcase for this, since the crash report I got for this involved the Swift language plugin.
---
Full diff: https://github.com/llvm/llvm-project/pull/84992.diff
1 Files Affected:
- (modified) lldb/source/Expression/IRExecutionUnit.cpp (+3-4)
``````````diff
diff --git a/lldb/source/Expression/IRExecutionUnit.cpp b/lldb/source/Expression/IRExecutionUnit.cpp
index e4e131d70d4319..cb9bee8733e15d 100644
--- a/lldb/source/Expression/IRExecutionUnit.cpp
+++ b/lldb/source/Expression/IRExecutionUnit.cpp
@@ -212,18 +212,17 @@ struct IRExecDiagnosticHandler : public llvm::DiagnosticHandler {
Status *err;
IRExecDiagnosticHandler(Status *err) : err(err) {}
bool handleDiagnostics(const llvm::DiagnosticInfo &DI) override {
- if (DI.getKind() == llvm::DK_SrcMgr) {
+ if (DI.getSeverity() == llvm::DS_Error) {
const auto &DISM = llvm::cast<llvm::DiagnosticInfoSrcMgr>(DI);
if (err && err->Success()) {
err->SetErrorToGenericError();
err->SetErrorStringWithFormat(
- "Inline assembly error: %s",
+ "IRExecution error: %s",
DISM.getSMDiag().getMessage().str().c_str());
}
- return true;
}
- return false;
+ return true;
}
};
} // namespace
``````````
</details>
https://github.com/llvm/llvm-project/pull/84992
More information about the lldb-commits
mailing list