aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Build/Step/CheckObject.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-05-24 22:32:14 +0200
committerJakub Konka <kubkon@jakubkonka.com>2024-05-24 22:32:14 +0200
commit8e52d54c25b1e7a4fd71593299a85493b2262bfe (patch)
tree7a3df3779c966edc8778398667e9b278cd0107d2 /lib/std/Build/Step/CheckObject.zig
parented7073c6300d6ae3ec4b370c1e13c2bbf11bc08c (diff)
downloadzig-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.zig20
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,