aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Build/Step/CheckObject.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-12-08 21:55:30 +0100
committerJakub Konka <kubkon@jakubkonka.com>2023-12-09 09:38:23 +0100
commiteb70c8801e62a7f81ffcea735cb628995ca35d42 (patch)
tree482bf7bbce30b8ba65a3328fe4e4b6ca626794df /lib/std/Build/Step/CheckObject.zig
parent36981d46a3551ef1b6d673e620c4cffb1d9eea5e (diff)
downloadzig-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.zig21
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;
+ }
}
}
};