diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2024-05-24 22:32:14 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2024-05-24 22:32:14 +0200 |
| commit | 8e52d54c25b1e7a4fd71593299a85493b2262bfe (patch) | |
| tree | 7a3df3779c966edc8778398667e9b278cd0107d2 /lib/std/Build/Step/CheckObject.zig | |
| parent | ed7073c6300d6ae3ec4b370c1e13c2bbf11bc08c (diff) | |
| download | zig-8e52d54c25b1e7a4fd71593299a85493b2262bfe.tar.gz zig-8e52d54c25b1e7a4fd71593299a85493b2262bfe.zip | |
Step/CheckObject: handle stab entries when dumping MachO symtab
Diffstat (limited to 'lib/std/Build/Step/CheckObject.zig')
| -rw-r--r-- | lib/std/Build/Step/CheckObject.zig | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/std/Build/Step/CheckObject.zig b/lib/std/Build/Step/CheckObject.zig index 08b3d4ae99..fa0ccc339d 100644 --- a/lib/std/Build/Step/CheckObject.zig +++ b/lib/std/Build/Step/CheckObject.zig @@ -1087,9 +1087,25 @@ const MachODumper = struct { try writer.writeAll(symtab_label ++ "\n"); for (ctx.symtab.items) |sym| { - if (sym.stab()) continue; const sym_name = ctx.getString(sym.n_strx); - if (sym.sect()) { + if (sym.stab()) { + const tt = switch (sym.n_type) { + macho.N_SO => "SO", + macho.N_OSO => "OSO", + macho.N_BNSYM => "BNSYM", + macho.N_ENSYM => "ENSYM", + macho.N_FUN => "FUN", + macho.N_GSYM => "GSYM", + macho.N_STSYM => "STSYM", + else => "UNKNOWN STAB", + }; + try writer.print("{x}", .{sym.n_value}); + if (sym.n_sect > 0) { + const sect = ctx.sections.items[sym.n_sect - 1]; + try writer.print(" ({s},{s})", .{ sect.segName(), sect.sectName() }); + } + try writer.print(" {s} (stab) {s}\n", .{ tt, sym_name }); + } else if (sym.sect()) { const sect = ctx.sections.items[sym.n_sect - 1]; try writer.print("{x} ({s},{s})", .{ sym.n_value, |
