diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-04-05 22:05:31 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-04-05 22:05:31 -0700 |
| commit | f2892775990a5a71147d8b5d3ff272cf56a41a06 (patch) | |
| tree | 28421b175a35bd4cb2a1b34ac85817ddb3fc449e /tools | |
| parent | 5870ffeb82e93ab2a35f9153668d170eced25cbc (diff) | |
| parent | 348751462632234f2bee10f5faad3711eff89172 (diff) | |
| download | zig-f2892775990a5a71147d8b5d3ff272cf56a41a06.tar.gz zig-f2892775990a5a71147d8b5d3ff272cf56a41a06.zip | |
Merge remote-tracking branch 'origin/master' into llvm16
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/lldb_pretty_printers.py | 15 | ||||
| -rw-r--r-- | tools/update_clang_options.zig | 4 | ||||
| -rw-r--r-- | tools/zig_gdb_pretty_printers.py | 21 |
3 files changed, 29 insertions, 11 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) diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig index 192e73063e..91a81868fd 100644 --- a/tools/update_clang_options.zig +++ b/tools/update_clang_options.zig @@ -469,6 +469,10 @@ const known_options = [_]KnownOpt{ .ident = "entry", }, .{ + .name = "u", + .ident = "force_undefined_symbol", + }, + .{ .name = "weak-l", .ident = "weak_library", }, diff --git a/tools/zig_gdb_pretty_printers.py b/tools/zig_gdb_pretty_printers.py index 7397097cc1..1bc4b36e57 100644 --- a/tools/zig_gdb_pretty_printers.py +++ b/tools/zig_gdb_pretty_printers.py @@ -2,22 +2,24 @@ # put "source /path/to/zig_gdb_pretty_printers.py" in ~/.gdbinit to load it automatically. import gdb.printing + class ZigPrettyPrinter(gdb.printing.PrettyPrinter): def __init__(self): super().__init__('Zig') def __call__(self, val): tag = val.type.tag - if(tag is None): + if tag is None: return None - if(tag == '[]u8'): + if tag == '[]u8': return StringPrinter(val) - if(tag.startswith('[]')): + if tag.startswith('[]'): return SlicePrinter(val) - if(tag.startswith('?')): + if tag.startswith('?'): return OptionalPrinter(val) return None + class SlicePrinter: def __init__(self, val): self.val = val @@ -35,6 +37,7 @@ class SlicePrinter: def display_hint(self): return 'array' + class StringPrinter: def __init__(self, val): self.val = val @@ -45,20 +48,16 @@ class StringPrinter: def display_hint(self): return 'string' + class OptionalPrinter: def __init__(self, val): self.val = val def to_string(self): - if(self.val['maybe']): - return None # printed by children() + if self.val['some']: + return self.val['data'] else: return 'null' - def children(self): - def it(val): - if(val['maybe']): - yield ('payload', val['val']) - return it(self.val) gdb.printing.register_pretty_printer(gdb.current_objfile(), ZigPrettyPrinter()) |
