aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-03-21 21:31:24 +0100
committerJakub Konka <kubkon@jakubkonka.com>2023-03-21 21:31:24 +0100
commit8bffe87e9eeaf602d06eec60dffc955a86228fbd (patch)
tree29c19709eaf820c53ea7b1481f430157bd2897e3 /src/link/MachO.zig
parent1be86218153ae77109d785aafb29430f787adefd (diff)
downloadzig-8bffe87e9eeaf602d06eec60dffc955a86228fbd.tar.gz
zig-8bffe87e9eeaf602d06eec60dffc955a86228fbd.zip
macho: collect all exports into the export trie
Diffstat (limited to 'src/link/MachO.zig')
-rw-r--r--src/link/MachO.zig39
1 files changed, 11 insertions, 28 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index 151b947141..2f594d1fda 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -3340,36 +3340,19 @@ fn collectExportData(self: *MachO, trie: *Trie) !void {
const exec_segment = self.segments.items[self.header_segment_cmd_index.?];
const base_address = exec_segment.vmaddr;
- if (self.base.options.output_mode == .Exe) {
- for (&[_]SymbolWithLoc{
- try self.getEntryPoint(),
- self.getGlobal("__mh_execute_header").?,
- }) |global| {
- const sym = self.getSymbol(global);
- const sym_name = self.getSymbolName(global);
- log.debug(" (putting '{s}' defined at 0x{x})", .{ sym_name, sym.n_value });
- try trie.put(gpa, .{
- .name = sym_name,
- .vmaddr_offset = sym.n_value - base_address,
- .export_flags = macho.EXPORT_SYMBOL_FLAGS_KIND_REGULAR,
- });
- }
- } else {
- assert(self.base.options.output_mode == .Lib);
- for (self.globals.items) |global| {
- const sym = self.getSymbol(global);
+ for (self.globals.items) |global| {
+ const sym = self.getSymbol(global);
- if (sym.undf()) continue;
- if (!sym.ext()) continue;
+ if (sym.undf()) continue;
+ if (!sym.ext()) continue;
- const sym_name = self.getSymbolName(global);
- log.debug(" (putting '{s}' defined at 0x{x})", .{ sym_name, sym.n_value });
- try trie.put(gpa, .{
- .name = sym_name,
- .vmaddr_offset = sym.n_value - base_address,
- .export_flags = macho.EXPORT_SYMBOL_FLAGS_KIND_REGULAR,
- });
- }
+ const sym_name = self.getSymbolName(global);
+ log.debug(" (putting '{s}' defined at 0x{x})", .{ sym_name, sym.n_value });
+ try trie.put(gpa, .{
+ .name = sym_name,
+ .vmaddr_offset = sym.n_value - base_address,
+ .export_flags = macho.EXPORT_SYMBOL_FLAGS_KIND_REGULAR,
+ });
}
try trie.finalize(gpa);