[Lldb-commits] [lldb] 81cc5d1 - Don't assume that __cxa_current_exception_type exists.
Jim Ingham via lldb-commits
lldb-commits at lists.llvm.org
Fri Nov 1 17:28:33 PDT 2019
Author: Jim Ingham
Date: 2019-11-01T17:20:31-07:00
New Revision: 81cc5d1c7d3f7292e82e8611fcd4a2889278a218
URL: https://github.com/llvm/llvm-project/commit/81cc5d1c7d3f7292e82e8611fcd4a2889278a218
DIFF: https://github.com/llvm/llvm-project/commit/81cc5d1c7d3f7292e82e8611fcd4a2889278a218.diff
LOG: Don't assume that __cxa_current_exception_type exists.
Normally you shouldn't be able to have a process with an ItaniumABI plugin
that doesn't have this symbol. But if the loader crashes before loading
libc++abi.dylib (on MacOS), then the symbol might not be present. So we
should check before accessing the pointer.
There isn't a good way to write a test for this, but the change is obvious.
Added:
Modified:
lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp
Removed:
################################################################################
diff --git a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp
index 02e62a263286..70b0b51f502c 100644
--- a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp
+++ b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp
@@ -559,6 +559,9 @@ ValueObjectSP ItaniumABILanguageRuntime::GetExceptionObjectForThread(
modules.FindSymbolsWithNameAndType(
ConstString("__cxa_current_exception_type"), eSymbolTypeCode, contexts);
contexts.GetContextAtIndex(0, context);
+ if (!context.symbol) {
+ return {};
+ }
Address addr = context.symbol->GetAddress();
Status error;
More information about the lldb-commits
mailing list