diff --git a/lib/std/Build/Step/CheckObject.zig b/lib/std/Build/Step/CheckObject.zig index 80b6057653..0cf6240d06 100644 --- a/lib/std/Build/Step/CheckObject.zig +++ b/lib/std/Build/Step/CheckObject.zig @@ -923,9 +923,18 @@ const MachODumper = struct { sect.segName(), sect.sectName(), }); + if (sym.n_desc & macho.REFERENCED_DYNAMICALLY != 0) try writer.writeAll(" [referenced dynamically]"); + if (sym.weakDef()) try writer.writeAll(" weak"); + if (sym.weakRef()) try writer.writeAll(" weakref"); if (sym.ext()) { + if (sym.pext()) try writer.writeAll(" private"); try writer.writeAll(" external"); - } + } else if (sym.pext()) try writer.writeAll(" (was private external)"); + try writer.print(" {s}\n", .{sym_name}); + } else if (sym.tentative()) { + const alignment = (sym.n_desc >> 8) & 0x0F; + try writer.print(" 0x{x:0>16} (common) (alignment 2^{d})", .{ sym.n_value, alignment }); + if (sym.ext()) try writer.writeAll(" external"); try writer.print(" {s}\n", .{sym_name}); } else if (sym.undf()) { const ordinal = @divTrunc(@as(i16, @bitCast(sym.n_desc)), macho.N_SYMBOL_RESOLVER); @@ -946,17 +955,13 @@ const MachODumper = struct { break :blk basename[0..ext]; }; try writer.writeAll("(undefined)"); - if (sym.weakRef()) { - try writer.writeAll(" weak"); - } - if (sym.ext()) { - try writer.writeAll(" external"); - } + if (sym.weakRef()) try writer.writeAll(" weakref"); + if (sym.ext()) try writer.writeAll(" external"); try writer.print(" {s} (from {s})\n", .{ sym_name, import_name, }); - } else unreachable; + } } } }; diff --git a/test/link/macho/unwind_info/build.zig b/test/link/macho/unwind_info/build.zig index 488aaea78d..fd0a80fb21 100644 --- a/test/link/macho/unwind_info/build.zig +++ b/test/link/macho/unwind_info/build.zig @@ -46,7 +46,7 @@ fn testUnwindInfo( } check.checkInSymtab(); - check.checkContains("(__TEXT,__text) external ___gxx_personality_v0"); + check.checkContains("(__TEXT,__text) private external ___gxx_personality_v0"); test_step.dependOn(&check.step); const run = b.addRunArtifact(exe); diff --git a/test/link/macho/weak_library/build.zig b/test/link/macho/weak_library/build.zig index f66316693e..14ee74a75f 100644 --- a/test/link/macho/weak_library/build.zig +++ b/test/link/macho/weak_library/build.zig @@ -42,10 +42,10 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check.checkExact("name @rpath/liba.dylib"); check.checkInSymtab(); - check.checkExact("(undefined) weak external _a (from liba)"); + check.checkExact("(undefined) weakref external _a (from liba)"); check.checkInSymtab(); - check.checkExact("(undefined) weak external _asStr (from liba)"); + check.checkExact("(undefined) weakref external _asStr (from liba)"); test_step.dependOn(&check.step); const run = b.addRunArtifact(exe);