aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-03-25 08:34:57 +0100
committerGitHub <noreply@github.com>2023-03-25 08:34:57 +0100
commit49e33a2f23c2de4b27cf5ffb4a802ce6cf76f387 (patch)
treed2b2f1e394e5145bb50fc3b896128490851f2b88 /tools
parentf6a2b72ba8b6ab8f8dbef223788c6458af3d4da0 (diff)
parent4ab4bd04fe8f4308d67b757eaa88f5a356aea688 (diff)
downloadzig-49e33a2f23c2de4b27cf5ffb4a802ce6cf76f387.tar.gz
zig-49e33a2f23c2de4b27cf5ffb4a802ce6cf76f387.zip
Merge pull request #15052 from jacobly0/x86-val-tracking
x86_64: fix value tracking bugs
Diffstat (limited to 'tools')
-rw-r--r--tools/lldb_pretty_printers.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/tools/lldb_pretty_printers.py b/tools/lldb_pretty_printers.py
index b72b6f9760..e0b84e1b41 100644
--- a/tools/lldb_pretty_printers.py
+++ b/tools/lldb_pretty_printers.py
@@ -164,6 +164,20 @@ class zig_ErrorUnion_SynthProvider:
def get_child_index(self, name): return 0 if name == ('payload' if self.payload else 'error_set') else -1
def get_child_at_index(self, index): return self.payload or self.error_set if index == 0 else None
+class zig_TaggedUnion_SynthProvider:
+ def __init__(self, value, _=None): self.value = value
+ def update(self):
+ try:
+ self.tag = self.value.GetChildMemberWithName('tag')
+ self.payload = self.value.GetChildMemberWithName('payload').GetChildMemberWithName(self.tag.value)
+ except: pass
+ def has_children(self): return True
+ def num_children(self): return 1 + (self.payload is not None)
+ def get_child_index(self, name):
+ try: return ('tag', 'payload').index(name)
+ except: return -1
+ def get_child_at_index(self, index): return (self.tag, self.payload)[index] if index >= 0 and index < 2 else None
+
# Define Zig Standard Library
class std_SegmentedList_SynthProvider:
@@ -606,3 +620,4 @@ def __lldb_init_module(debugger, _=None):
add(debugger, category='zig.stage2', type='type.Type', summary=True)
add(debugger, category='zig.stage2', type='value.Value', identifier='TagOrPayloadPtr', synth=True)
add(debugger, category='zig.stage2', type='value.Value', summary=True)
+ add(debugger, category='zig.stage2', type='arch.x86_64.CodeGen.MCValue', identifier='zig_TaggedUnion', synth=True, inline_children=True, summary=True)