aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-04-05 22:05:31 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-04-05 22:05:31 -0700
commitf2892775990a5a71147d8b5d3ff272cf56a41a06 (patch)
tree28421b175a35bd4cb2a1b34ac85817ddb3fc449e /tools
parent5870ffeb82e93ab2a35f9153668d170eced25cbc (diff)
parent348751462632234f2bee10f5faad3711eff89172 (diff)
downloadzig-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.py15
-rw-r--r--tools/update_clang_options.zig4
-rw-r--r--tools/zig_gdb_pretty_printers.py21
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())