summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/utils/lldbDataFormatters.py
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2019-01-27 16:42:12 +0000
committerpatrick <patrick@openbsd.org>2019-01-27 16:42:12 +0000
commitb773203fb58f3ef282fb69c832d8710cab5bc82d (patch)
treee75913f147570fbd75169647b144df85b88a038c /gnu/llvm/utils/lldbDataFormatters.py
parenttweak errno in previous (diff)
downloadwireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.tar.xz
wireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.zip
Import LLVM 7.0.1 release including clang, lld and lldb.
Diffstat (limited to 'gnu/llvm/utils/lldbDataFormatters.py')
-rw-r--r--gnu/llvm/utils/lldbDataFormatters.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/gnu/llvm/utils/lldbDataFormatters.py b/gnu/llvm/utils/lldbDataFormatters.py
index 687729f61ed..db1e22af792 100644
--- a/gnu/llvm/utils/lldbDataFormatters.py
+++ b/gnu/llvm/utils/lldbDataFormatters.py
@@ -91,8 +91,18 @@ class ArrayRefSynthProvider:
assert self.type_size != 0
def OptionalSummaryProvider(valobj, internal_dict):
- if not valobj.GetChildMemberWithName('hasVal').GetValueAsUnsigned(0):
+ storage = valobj.GetChildMemberWithName('Storage')
+ if not storage:
+ storage = valobj
+
+ failure = 2
+ hasVal = storage.GetChildMemberWithName('hasVal').GetValueAsUnsigned(failure)
+ if hasVal == failure:
+ return '<could not read llvm::Optional>'
+
+ if hasVal == 0:
return 'None'
- underlying_type = valobj.GetType().GetTemplateArgumentType(0)
- storage = valobj.GetChildMemberWithName('storage')
+
+ underlying_type = storage.GetType().GetTemplateArgumentType(0)
+ storage = storage.GetChildMemberWithName('storage')
return str(storage.Cast(underlying_type))