diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-12-27 10:34:55 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-01-01 19:49:07 -0700 |
| commit | 372b407740224ae20fad49647bbde56330b24967 (patch) | |
| tree | 2af818d959da7f7dce5b7a5ab28befa0614f72c8 /src/link/Elf.zig | |
| parent | 435b74acd6384029588755ae87568d03911da5c2 (diff) | |
| download | zig-372b407740224ae20fad49647bbde56330b24967.tar.gz zig-372b407740224ae20fad49647bbde56330b24967.zip | |
move eh_frame_hdr from link.File to Compilation
since it's accessed by Compilation. fixes an invalid check of
bin_file==null
Diffstat (limited to 'src/link/Elf.zig')
| -rw-r--r-- | src/link/Elf.zig | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 085522d67b..f20282a802 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -1,6 +1,5 @@ base: link.File, image_base: u64, -eh_frame_hdr: bool, emit_relocs: bool, z_nodelete: bool, z_notext: bool, @@ -306,7 +305,6 @@ pub fn createEmpty( }; }, - .eh_frame_hdr = options.eh_frame_hdr, .emit_relocs = options.emit_relocs, .z_nodelete = options.z_nodelete, .z_notext = options.z_notext, @@ -1726,7 +1724,7 @@ fn dumpArgv(self: *Elf, comp: *Compilation) !void { try argv.append("--print-gc-sections"); } - if (self.eh_frame_hdr) { + if (comp.link_eh_frame_hdr) { try argv.append("--eh-frame-hdr"); } @@ -2437,7 +2435,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node) !v man.hash.add(self.image_base); man.hash.add(self.base.gc_sections); man.hash.addOptional(self.sort_section); - man.hash.add(self.eh_frame_hdr); + man.hash.add(comp.link_eh_frame_hdr); man.hash.add(self.emit_relocs); man.hash.add(comp.config.rdynamic); man.hash.addListOfBytes(self.lib_dirs); @@ -2633,7 +2631,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node) !v try argv.append("--print-map"); } - if (self.eh_frame_hdr) { + if (comp.link_eh_frame_hdr) { try argv.append("--eh-frame-hdr"); } @@ -3317,6 +3315,9 @@ pub fn deleteDeclExport( } fn addLinkerDefinedSymbols(self: *Elf) !void { + const comp = self.base.comp; + const gpa = comp.gpa; + const linker_defined_index = self.linker_defined_index orelse return; const linker_defined = self.file(linker_defined_index).?.linker_defined; self.dynamic_index = try linker_defined.addGlobal("_DYNAMIC", self); @@ -3331,7 +3332,7 @@ fn addLinkerDefinedSymbols(self: *Elf) !void { self.plt_index = try linker_defined.addGlobal("_PROCEDURE_LINKAGE_TABLE_", self); self.end_index = try linker_defined.addGlobal("_end", self); - if (self.eh_frame_hdr) { + if (comp.link_eh_frame_hdr) { self.gnu_eh_frame_hdr_index = try linker_defined.addGlobal("__GNU_EH_FRAME_HDR", self); } @@ -3345,7 +3346,6 @@ fn addLinkerDefinedSymbols(self: *Elf) !void { for (self.shdrs.items) |shdr| { if (self.getStartStopBasename(shdr)) |name| { - const gpa = self.base.comp.gpa; try self.start_stop_indexes.ensureUnusedCapacity(gpa, 2); const start = try std.fmt.allocPrintZ(gpa, "__start_{s}", .{name}); @@ -3510,7 +3510,7 @@ fn initSyntheticSections(self: *Elf) !void { .offset = std.math.maxInt(u64), }); - if (self.eh_frame_hdr) { + if (comp.link_eh_frame_hdr) { self.eh_frame_hdr_section_index = try self.addSection(.{ .name = ".eh_frame_hdr", .type = elf.SHT_PROGBITS, |
