diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-12-08 21:55:30 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-12-09 09:38:23 +0100 |
| commit | eb70c8801e62a7f81ffcea735cb628995ca35d42 (patch) | |
| tree | 482bf7bbce30b8ba65a3328fe4e4b6ca626794df /lib/std/Build/Step/CheckObject.zig | |
| parent | 36981d46a3551ef1b6d673e620c4cffb1d9eea5e (diff) | |
| download | zig-eb70c8801e62a7f81ffcea735cb628995ca35d42.tar.gz zig-eb70c8801e62a7f81ffcea735cb628995ca35d42.zip | |
lib/std/Build/CheckObject: dump Mach-O symbol attributes
Diffstat (limited to 'lib/std/Build/Step/CheckObject.zig')
| -rw-r--r-- | lib/std/Build/Step/CheckObject.zig | 21 |
1 files changed, 13 insertions, 8 deletions
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; + } } } }; |
