From c71a79f618abcc547f327edcdb45f01768200dca Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Sun, 15 Oct 2023 09:08:14 +0200 Subject: [PATCH] elf: make .zig.rodata writeable --- src/link/Elf.zig | 1 + src/link/Elf/Atom.zig | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 5659bfc858..9fe2f6b7ed 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -770,6 +770,7 @@ pub fn initMetadata(self: *Elf) !void { self.zig_rodata_section_index = try self.allocateAllocSection(.{ .name = ".zig.rodata", .phdr_index = self.phdr_zig_load_ro_index.?, + .flags = elf.SHF_ALLOC | elf.SHF_WRITE, // TODO rename this section to .data.rel.ro }); try self.last_atom_and_free_list_table.putNoClobber(gpa, self.zig_rodata_section_index.?, .{}); } diff --git a/src/link/Elf/Atom.zig b/src/link/Elf/Atom.zig index b0d780c0c3..28fe478bd0 100644 --- a/src/link/Elf/Atom.zig +++ b/src/link/Elf/Atom.zig @@ -757,12 +757,13 @@ pub fn resolveRelocsAlloc(self: Atom, elf_file: *Elf, code: []u8) !void { // Address of the dynamic thread pointer. const DTP = @as(i64, @intCast(elf_file.dtpAddress())); - relocs_log.debug(" {s}: {x}: [{x} => {x}] G({x}) ({s})", .{ + relocs_log.debug(" {s}: {x}: [{x} => {x}] G({x}) ZG({x}) ({s})\n", .{ fmtRelocType(r_type), r_offset, P, S + A, G + GOT + A, + ZIG_GOT + A, target.name(elf_file), });