diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-03-25 08:34:57 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-25 08:34:57 +0100 |
| commit | 49e33a2f23c2de4b27cf5ffb4a802ce6cf76f387 (patch) | |
| tree | d2b2f1e394e5145bb50fc3b896128490851f2b88 /tools | |
| parent | f6a2b72ba8b6ab8f8dbef223788c6458af3d4da0 (diff) | |
| parent | 4ab4bd04fe8f4308d67b757eaa88f5a356aea688 (diff) | |
| download | zig-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.py | 15 |
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) |
