mirror of
https://github.com/ziglang/zig.git
synced 2025-02-08 13:40:30 +00:00
Dwarf: fix and test allowzero pointers
This commit is contained in:
parent
bb70501060
commit
f601aa780e
@ -224,7 +224,6 @@ pub const ZIG_parent = 0x2ccd;
|
||||
pub const ZIG_padding = 0x2cce;
|
||||
pub const ZIG_relative_decl = 0x2cd0;
|
||||
pub const ZIG_decl_line_relative = 0x2cd1;
|
||||
pub const ZIG_is_allowzero = 0x2ce1;
|
||||
pub const ZIG_sentinel = 0x2ce2;
|
||||
|
||||
// UPC extension.
|
||||
|
@ -2338,7 +2338,6 @@ fn updateType(
|
||||
const ptr_child_type = Type.fromInterned(ptr_type.child);
|
||||
try uleb128(diw, @intFromEnum(AbbrevCode.ptr_type));
|
||||
try wip_nav.strp(name);
|
||||
try diw.writeByte(@intFromBool(ptr_type.flags.is_allowzero));
|
||||
try uleb128(diw, ptr_type.flags.alignment.toByteUnits() orelse
|
||||
ptr_child_type.abiAlignment(pt).toByteUnits().?);
|
||||
try diw.writeByte(@intFromEnum(ptr_type.flags.address_space));
|
||||
@ -3612,7 +3611,6 @@ const AbbrevCode = enum(u8) {
|
||||
.tag = .pointer_type,
|
||||
.attrs = &.{
|
||||
.{ .name, .strp },
|
||||
.{ .ZIG_is_allowzero, .flag },
|
||||
.{ .alignment, .udata },
|
||||
.{ .address_class, .data1 },
|
||||
.{ .type, .ref_addr },
|
||||
|
@ -182,6 +182,135 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
|
||||
\\1 breakpoints deleted; 0 breakpoint locations disabled.
|
||||
},
|
||||
);
|
||||
db.addLldbTest(
|
||||
"pointers",
|
||||
target,
|
||||
&.{
|
||||
.{
|
||||
.path = "pointers.zig",
|
||||
.source =
|
||||
\\const Pointers = struct {
|
||||
\\ var array: [8]u32 = .{
|
||||
\\ 3010,
|
||||
\\ 3014,
|
||||
\\ 3018,
|
||||
\\ 3022,
|
||||
\\ 3026,
|
||||
\\ 3030,
|
||||
\\ 3034,
|
||||
\\ 3038,
|
||||
\\ };
|
||||
\\
|
||||
\\ single: *u32 = @ptrFromInt(0x1010),
|
||||
\\ single_const: *const u32 = @ptrFromInt(0x1014),
|
||||
\\ single_volatile: *volatile u32 = @ptrFromInt(0x1018),
|
||||
\\ single_const_volatile: *const volatile u32 = @ptrFromInt(0x101c),
|
||||
\\ single_allowzero: *allowzero u32 = @ptrFromInt(0x1020),
|
||||
\\ single_const_allowzero: *const allowzero u32 = @ptrFromInt(0x1024),
|
||||
\\ single_volatile_allowzero: *volatile allowzero u32 = @ptrFromInt(0x1028),
|
||||
\\ single_const_volatile_allowzero: *const volatile allowzero u32 = @ptrFromInt(0x102c),
|
||||
\\
|
||||
\\ many: [*]u32 = @ptrFromInt(0x2010),
|
||||
\\ many_const: [*]const u32 = @ptrFromInt(0x2014),
|
||||
\\ many_volatile: [*]volatile u32 = @ptrFromInt(0x2018),
|
||||
\\ many_const_volatile: [*]const volatile u32 = @ptrFromInt(0x201c),
|
||||
\\ many_allowzero: [*]allowzero u32 = @ptrFromInt(0x2020),
|
||||
\\ many_const_allowzero: [*]const allowzero u32 = @ptrFromInt(0x2024),
|
||||
\\ many_volatile_allowzero: [*]volatile allowzero u32 = @ptrFromInt(0x2028),
|
||||
\\ many_const_volatile_allowzero: [*]const volatile allowzero u32 = @ptrFromInt(0x202c),
|
||||
\\ slice: []u32 = array[0..1],
|
||||
\\ slice_const: []const u32 = array[0..2],
|
||||
\\ slice_volatile: []volatile u32 = array[0..3],
|
||||
\\ slice_const_volatile: []const volatile u32 = array[0..4],
|
||||
\\ slice_allowzero: []allowzero u32 = array[4..5],
|
||||
\\ slice_const_allowzero: []const allowzero u32 = array[4..6],
|
||||
\\ slice_volatile_allowzero: []volatile allowzero u32 = array[4..7],
|
||||
\\ slice_const_volatile_allowzero: []const volatile allowzero u32 = array[4..8],
|
||||
\\
|
||||
\\ c: [*c]u32 = @ptrFromInt(0x4010),
|
||||
\\ c_const: [*c]const u32 = @ptrFromInt(0x4014),
|
||||
\\ c_volatile: [*c]volatile u32 = @ptrFromInt(0x4018),
|
||||
\\ c_const_volatile: [*c]const volatile u32 = @ptrFromInt(0x401c),
|
||||
\\};
|
||||
\\pub fn testPointers(pointers: Pointers) void {
|
||||
\\ _ = pointers;
|
||||
\\}
|
||||
\\pub fn main() void {
|
||||
\\ testPointers(.{});
|
||||
\\}
|
||||
\\
|
||||
,
|
||||
},
|
||||
},
|
||||
\\breakpoint set --file pointers.zig --source-pattern-regexp '_ = pointers;'
|
||||
\\process launch
|
||||
\\frame variable --show-types pointers
|
||||
\\breakpoint delete --force 1
|
||||
,
|
||||
&.{
|
||||
\\(lldb) frame variable --show-types pointers
|
||||
\\(root.pointers.Pointers) pointers = {
|
||||
\\ (*u32) single = 0x0000000000001010
|
||||
\\ (*const u32) single_const = 0x0000000000001014
|
||||
\\ (*volatile u32) single_volatile = 0x0000000000001018
|
||||
\\ (*const volatile u32) single_const_volatile = 0x000000000000101c
|
||||
\\ (*allowzero u32) single_allowzero = 0x0000000000001020
|
||||
\\ (*const allowzero u32) single_const_allowzero = 0x0000000000001024
|
||||
\\ (*volatile allowzero u32) single_volatile_allowzero = 0x0000000000001028
|
||||
\\ (*const volatile allowzero u32) single_const_volatile_allowzero = 0x000000000000102c
|
||||
\\ ([*]u32) many = 0x0000000000002010
|
||||
\\ ([*]const u32) many_const = 0x0000000000002014
|
||||
\\ ([*]volatile u32) many_volatile = 0x0000000000002018
|
||||
\\ ([*]const volatile u32) many_const_volatile = 0x000000000000201c
|
||||
\\ ([*]allowzero u32) many_allowzero = 0x0000000000002020
|
||||
\\ ([*]const allowzero u32) many_const_allowzero = 0x0000000000002024
|
||||
\\ ([*]volatile allowzero u32) many_volatile_allowzero = 0x0000000000002028
|
||||
\\ ([*]const volatile allowzero u32) many_const_volatile_allowzero = 0x000000000000202c
|
||||
\\ ([]u32) slice = {
|
||||
\\ (u32) [0] = 3010
|
||||
\\ }
|
||||
\\ ([]const u32) slice_const = {
|
||||
\\ (u32) [0] = 3010
|
||||
\\ (u32) [1] = 3014
|
||||
\\ }
|
||||
\\ ([]volatile u32) slice_volatile = {
|
||||
\\ (u32) [0] = 3010
|
||||
\\ (u32) [1] = 3014
|
||||
\\ (u32) [2] = 3018
|
||||
\\ }
|
||||
\\ ([]const volatile u32) slice_const_volatile = {
|
||||
\\ (u32) [0] = 3010
|
||||
\\ (u32) [1] = 3014
|
||||
\\ (u32) [2] = 3018
|
||||
\\ (u32) [3] = 3022
|
||||
\\ }
|
||||
\\ ([]allowzero u32) slice_allowzero = {
|
||||
\\ (u32) [0] = 3026
|
||||
\\ }
|
||||
\\ ([]const allowzero u32) slice_const_allowzero = {
|
||||
\\ (u32) [0] = 3026
|
||||
\\ (u32) [1] = 3030
|
||||
\\ }
|
||||
\\ ([]volatile allowzero u32) slice_volatile_allowzero = {
|
||||
\\ (u32) [0] = 3026
|
||||
\\ (u32) [1] = 3030
|
||||
\\ (u32) [2] = 3034
|
||||
\\ }
|
||||
\\ ([]const volatile allowzero u32) slice_const_volatile_allowzero = {
|
||||
\\ (u32) [0] = 3026
|
||||
\\ (u32) [1] = 3030
|
||||
\\ (u32) [2] = 3034
|
||||
\\ (u32) [3] = 3038
|
||||
\\ }
|
||||
\\ ([*c]u32) c = 0x0000000000004010
|
||||
\\ ([*c]const u32) c_const = 0x0000000000004014
|
||||
\\ ([*c]volatile u32) c_volatile = 0x0000000000004018
|
||||
\\ ([*c]const volatile u32) c_const_volatile = 0x000000000000401c
|
||||
\\}
|
||||
\\(lldb) breakpoint delete --force 1
|
||||
\\1 breakpoints deleted; 0 breakpoint locations disabled.
|
||||
},
|
||||
);
|
||||
db.addLldbTest(
|
||||
"storage",
|
||||
target,
|
||||
@ -255,47 +384,6 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
|
||||
\\1 breakpoints deleted; 0 breakpoint locations disabled.
|
||||
},
|
||||
);
|
||||
db.addLldbTest(
|
||||
"slices",
|
||||
target,
|
||||
&.{
|
||||
.{
|
||||
.path = "slices.zig",
|
||||
.source =
|
||||
\\pub fn main() void {
|
||||
\\ {
|
||||
\\ var array: [4]u32 = .{ 1, 2, 4, 8 };
|
||||
\\ const slice: []u32 = &array;
|
||||
\\ _ = slice;
|
||||
\\ }
|
||||
\\}
|
||||
\\
|
||||
,
|
||||
},
|
||||
},
|
||||
\\breakpoint set --file slices.zig --source-pattern-regexp '_ = slice;'
|
||||
\\process launch
|
||||
\\frame variable --show-types array slice
|
||||
\\breakpoint delete --force 1
|
||||
,
|
||||
&.{
|
||||
\\(lldb) frame variable --show-types array slice
|
||||
\\([4]u32) array = {
|
||||
\\ (u32) [0] = 1
|
||||
\\ (u32) [1] = 2
|
||||
\\ (u32) [2] = 4
|
||||
\\ (u32) [3] = 8
|
||||
\\}
|
||||
\\([]u32) slice = {
|
||||
\\ (u32) [0] = 1
|
||||
\\ (u32) [1] = 2
|
||||
\\ (u32) [2] = 4
|
||||
\\ (u32) [3] = 8
|
||||
\\}
|
||||
\\(lldb) breakpoint delete --force 1
|
||||
\\1 breakpoints deleted; 0 breakpoint locations disabled.
|
||||
},
|
||||
);
|
||||
db.addLldbTest(
|
||||
"optionals",
|
||||
target,
|
||||
@ -358,6 +446,7 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
|
||||
\\ module.foo(123);
|
||||
\\ module.bar(456);
|
||||
\\}
|
||||
\\
|
||||
,
|
||||
},
|
||||
.{
|
||||
@ -370,6 +459,7 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
|
||||
\\pub inline fn bar(y: u32) void {
|
||||
\\ _ = y;
|
||||
\\}
|
||||
\\
|
||||
,
|
||||
},
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user