Skip to content

Dwarf: fails to handle undefined type values #23461

@Rexicon226

Description

@Rexicon226

Zig Version

0.15.0-dev.184+9dfdf3503

Steps to Reproduce and Observed Behavior

comptime {
    const a: type = undefined;
    const b = .{ .c = a };
    _ = b;
}
$ zig build-obj test.zig -target x86_64-linux -fno-llvm
thread 45713401 panic: reached unreachable code
/Users/david/Code/zig/src/Type.zig:420:12: 0x10aad93e3 in print__anon_568436 (zig)
        => unreachable,
           ^
/Users/david/Code/zig/src/Type.zig:154:17: 0x10aad8daf in format2__anon_568431 (zig)
    return print(ctx.ty, writer, ctx.pt);
                ^
/Users/david/Code/zig/lib/std/fmt.zig:1501:25: 0x10a6918db in format__anon_488559 (zig)
            try formatFn(self.data, fmt, options, writer);
                        ^
/Users/david/Code/zig/lib/std/fmt.zig:515:32: 0x10a1af537 in formatType__anon_369327 (zig)
        return try value.format(actual_fmt, options, writer);
                               ^
/Users/david/Code/zig/lib/std/fmt.zig:193:23: 0x10ae50437 in format__anon_652874 (zig)
        try formatType(
                      ^
/Users/david/Code/zig/lib/std/fmt.zig:1815:11: 0x10ab150e3 in count__anon_570726 (zig)
    format(counting_writer.writer().any(), fmt, args) catch unreachable;
          ^
/Users/david/Code/zig/lib/std/fmt.zig:1822:40: 0x10a6a8897 in allocPrint__anon_490235 (zig)
    const size = math.cast(usize, count(fmt, args)) orelse return error.OutOfMemory;
                                       ^
/Users/david/Code/zig/src/link/Dwarf.zig:3171:39: 0x10a1b9a37 in updateLazyType (zig)
        else => try std.fmt.allocPrint(dwarf.gpa, "{}", .{ty.fmt(pt)}),
                                      ^
/Users/david/Code/zig/src/link/Dwarf.zig:2057:59: 0x109dbd2bf in updateLazy (zig)
            .type_type => try wip_nav.dwarf.updateLazyType(wip_nav.pt, src_loc, val, &wip_nav.pending_lazy),
                                                          ^
/Users/david/Code/zig/src/link/Dwarf.zig:4319:31: 0x10ac9b81f in updateContainerType (zig)
        try wip_nav.updateLazy(ty_src_loc);
                              ^
/Users/david/Code/zig/src/link/Elf/ZigObject.zig:1614:59: 0x10ac96dbf in updateContainerType (zig)
    if (self.dwarf) |*dwarf| try dwarf.updateContainerType(pt, ty);
                                                          ^

Expected Behavior

Works!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugObserved behavior contradicts documented or intended behaviordebug-infoDebug information of binary generated by Zig is not as expected.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions