zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 0d924d2da67a34046ea5e78e0a65fd9ef2601c8a (tree)
parent 31f363d51f73a263d6acd89775ab788fe213d9f0
Author: Jakub Konka <kubkon@jakubkonka.com>
Date:   Wed, 13 Sep 2023 12:33:51 +0200

elf: look for entry point globally if not set by incremental compiler

Diffstat:
Msrc/link/Elf.zig | 13+++++++++++++
1 file changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/link/Elf.zig b/src/link/Elf.zig @@ -1124,6 +1124,19 @@ pub fn flushModule(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node } try self.writeObjects(); + // Look for entry address in objects if not set by the incremental compiler. + if (self.entry_addr == null) { + const entry: ?[]const u8 = entry: { + if (self.base.options.entry) |entry| break :entry entry; + if (!self.isDynLib()) break :entry "_start"; + break :entry null; + }; + self.entry_addr = if (entry) |name| entry_addr: { + const global_index = self.globalByName(name) orelse break :entry_addr null; + break :entry_addr self.symbol(global_index).value; + } else null; + } + // Generate and emit the symbol table. try self.updateSymtabSize(); try self.writeSymtab();