authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-05-24 22:32:14+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-05-24 22:32:14+02:00
log8e52d54c25b1e7a4fd71593299a85493b2262bfe
tree7a3df3779c966edc8778398667e9b278cd0107d2
parented7073c6300d6ae3ec4b370c1e13c2bbf11bc08c

Step/CheckObject: handle stab entries when dumping MachO symtab


1 files changed, 18 insertions(+), 2 deletions(-)

lib/std/Build/Step/CheckObject.zig+18-2
...@@ -1087,9 +1087,25 @@ const MachODumper = struct {...@@ -1087,9 +1087,25 @@ const MachODumper = struct {
1087 try writer.writeAll(symtab_label ++ "\n");1087 try writer.writeAll(symtab_label ++ "\n");
10881088
1089 for (ctx.symtab.items) |sym| {1089 for (ctx.symtab.items) |sym| {
1090 if (sym.stab()) continue;
1091 const sym_name = ctx.getString(sym.n_strx);1090 const sym_name = ctx.getString(sym.n_strx);
1092 if (sym.sect()) {1091 if (sym.stab()) {
1092 const tt = switch (sym.n_type) {
1093 macho.N_SO => "SO",
1094 macho.N_OSO => "OSO",
1095 macho.N_BNSYM => "BNSYM",
1096 macho.N_ENSYM => "ENSYM",
1097 macho.N_FUN => "FUN",
1098 macho.N_GSYM => "GSYM",
1099 macho.N_STSYM => "STSYM",
1100 else => "UNKNOWN STAB",
1101 };
1102 try writer.print("{x}", .{sym.n_value});
1103 if (sym.n_sect > 0) {
1104 const sect = ctx.sections.items[sym.n_sect - 1];
1105 try writer.print(" ({s},{s})", .{ sect.segName(), sect.sectName() });
1106 }
1107 try writer.print(" {s} (stab) {s}\n", .{ tt, sym_name });
1108 } else if (sym.sect()) {
1093 const sect = ctx.sections.items[sym.n_sect - 1];1109 const sect = ctx.sections.items[sym.n_sect - 1];
1094 try writer.print("{x} ({s},{s})", .{1110 try writer.print("{x} ({s},{s})", .{
1095 sym.n_value,1111 sym.n_value,