authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-11-09 19:41:50+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-11-09 19:41:50+01:00
log6e797d864871575e6c1c4bec37f1e9eea4c79678
tree88bd9c56457f49fc6118e0093e82d0bc92dbad29
parent27970bab0739232ff7331887f16ec1ee9bc8a9eb

elf: add SHF_INFO_LINK flag to any emitted SHT_RELA section


2 files changed, 5 insertions(+), 5 deletions(-)

src/link/Elf.zig+4-5
...@@ -4307,7 +4307,6 @@ fn updateComdatGroupsSizes(self: *Elf) void {...@@ -4307,7 +4307,6 @@ fn updateComdatGroupsSizes(self: *Elf) void {
4307 shdr.sh_link = self.symtab_section_index.?;4307 shdr.sh_link = self.symtab_section_index.?;
43084308
4309 const sym = self.symbol(cg.symbol(self));4309 const sym = self.symbol(cg.symbol(self));
4310 std.debug.print("{s}\n", .{sym.name(self)});
4311 shdr.sh_info = sym.outputSymtabIndex(self) orelse4310 shdr.sh_info = sym.outputSymtabIndex(self) orelse
4312 self.sectionSymbolOutputSymtabIndex(sym.outputShndx().?);4311 self.sectionSymbolOutputSymtabIndex(sym.outputShndx().?);
4313 }4312 }
...@@ -6131,7 +6130,7 @@ fn formatShdr(...@@ -6131,7 +6130,7 @@ fn formatShdr(
6131 });6130 });
6132}6131}
61336132
6134fn fmtShdrFlags(sh_flags: u64) std.fmt.Formatter(formatShdrFlags) {6133pub fn fmtShdrFlags(sh_flags: u64) std.fmt.Formatter(formatShdrFlags) {
6135 return .{ .data = sh_flags };6134 return .{ .data = sh_flags };
6136}6135}
61376136
...@@ -6288,12 +6287,12 @@ fn fmtDumpState(...@@ -6288,12 +6287,12 @@ fn fmtDumpState(
62886287
6289 try writer.writeAll("Output COMDAT groups\n");6288 try writer.writeAll("Output COMDAT groups\n");
6290 for (self.comdat_group_sections.items) |cg| {6289 for (self.comdat_group_sections.items) |cg| {
6291 try writer.print("shdr({d}) : COMDAT({d})\n", .{ cg.shndx, cg.cg_index });6290 try writer.print(" shdr({d}) : COMDAT({d})\n", .{ cg.shndx, cg.cg_index });
6292 }6291 }
62936292
6294 try writer.writeAll("\nOutput shdrs\n");6293 try writer.writeAll("\nOutput shdrs\n");
6295 for (self.shdrs.items, 0..) |shdr, shndx| {6294 for (self.shdrs.items, 0..) |shdr, shndx| {
6296 try writer.print("shdr({d}) : phdr({?d}) : {}\n", .{6295 try writer.print(" shdr({d}) : phdr({?d}) : {}\n", .{
6297 shndx,6296 shndx,
6298 self.phdr_to_shdr_table.get(@intCast(shndx)),6297 self.phdr_to_shdr_table.get(@intCast(shndx)),
6299 self.fmtShdr(shdr),6298 self.fmtShdr(shdr),
...@@ -6301,7 +6300,7 @@ fn fmtDumpState(...@@ -6301,7 +6300,7 @@ fn fmtDumpState(
6301 }6300 }
6302 try writer.writeAll("\nOutput phdrs\n");6301 try writer.writeAll("\nOutput phdrs\n");
6303 for (self.phdrs.items, 0..) |phdr, phndx| {6302 for (self.phdrs.items, 0..) |phdr, phndx| {
6304 try writer.print("phdr{d} : {}\n", .{ phndx, self.fmtPhdr(phdr) });6303 try writer.print(" phdr{d} : {}\n", .{ phndx, self.fmtPhdr(phdr) });
6305 }6304 }
6306}6305}
63076306
src/link/Elf/Object.zig+1
...@@ -687,6 +687,7 @@ pub fn initRelaSections(self: Object, elf_file: *Elf) !void {...@@ -687,6 +687,7 @@ pub fn initRelaSections(self: Object, elf_file: *Elf) !void {
687 const out_shdr = &elf_file.shdrs.items[out_shndx];687 const out_shdr = &elf_file.shdrs.items[out_shndx];
688 out_shdr.sh_addralign = @alignOf(elf.Elf64_Rela);688 out_shdr.sh_addralign = @alignOf(elf.Elf64_Rela);
689 out_shdr.sh_entsize = @sizeOf(elf.Elf64_Rela);689 out_shdr.sh_entsize = @sizeOf(elf.Elf64_Rela);
690 out_shdr.sh_flags |= elf.SHF_INFO_LINK;
690 }691 }
691}692}
692693