summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/StackFrame.cpp
diff options
context:
space:
mode:
authorAlex Langford <apl@fb.com>2019-07-30 22:12:34 +0000
committerAlex Langford <apl@fb.com>2019-07-30 22:12:34 +0000
commit0e252e38ef84e42cc0b6d0e6b0f0894f6867e5a7 (patch)
treee74b7e4f611ee1a334968d8cedd4c9f3cb921269 /lldb/source/Target/StackFrame.cpp
parentd56dc1d926b9ee2317f3766d21700bdc77dd84f6 (diff)
downloadbcm5719-llvm-0e252e38ef84e42cc0b6d0e6b0f0894f6867e5a7.tar.gz
bcm5719-llvm-0e252e38ef84e42cc0b6d0e6b0f0894f6867e5a7.zip
[Symbol] Use llvm::Expected when getting TypeSystems
Summary: This commit achieves the following: - Functions used to return a `TypeSystem *` return an `llvm::Expected<TypeSystem *>` now. This means that the result of a call is always checked, forcing clients to move more carefully. - `TypeSystemMap::GetTypeSystemForLanguage` will either return an Error or a non-null pointer to a TypeSystem. Reviewers: JDevlieghere, davide, compnerd Subscribers: jdoerfert, lldb-commits Differential Revision: https://reviews.llvm.org/D65122 llvm-svn: 367360
Diffstat (limited to 'lldb/source/Target/StackFrame.cpp')
-rw-r--r--lldb/source/Target/StackFrame.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/lldb/source/Target/StackFrame.cpp b/lldb/source/Target/StackFrame.cpp
index f8b22d96e16..1bc8165d76b 100644
--- a/lldb/source/Target/StackFrame.cpp
+++ b/lldb/source/Target/StackFrame.cpp
@@ -29,6 +29,7 @@
#include "lldb/Target/StackFrameRecognizer.h"
#include "lldb/Target/Target.h"
#include "lldb/Target/Thread.h"
+#include "lldb/Utility/Log.h"
#include "lldb/Utility/RegisterValue.h"
#include "lldb/lldb-enumerations.h"
@@ -1357,13 +1358,16 @@ lldb::ValueObjectSP StackFrame::GuessValueForAddress(lldb::addr_t addr) {
if (target_sp->ResolveLoadAddress(base_and_offset.first->m_immediate +
base_and_offset.second,
addr)) {
- TypeSystem *c_type_system =
- target_sp->GetScratchTypeSystemForLanguage(nullptr, eLanguageTypeC);
- if (!c_type_system) {
+ auto c_type_system_or_err =
+ target_sp->GetScratchTypeSystemForLanguage(eLanguageTypeC);
+ if (auto err = c_type_system_or_err.takeError()) {
+ LLDB_LOG_ERROR(
+ lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_THREAD),
+ std::move(err), "Unable to guess value for given address");
return ValueObjectSP();
} else {
CompilerType void_ptr_type =
- c_type_system
+ c_type_system_or_err
->GetBasicTypeFromAST(lldb::BasicType::eBasicTypeChar)
.GetPointerType();
return ValueObjectMemory::Create(this, "", addr, void_ptr_type);
OpenPOWER on IntegriCloud