motiejus/zig

fork of https://codeberg.org/ziglang/zig
git clone https://git.jakstys.lt/motiejus/zig.git
Log | Tree | Refs | README | LICENSE

commit 0fd0b765fa84a40446663928db1d3f9a63b7a98d (tree)
parent 5226705b321a2bb6aa63e3b20f5fd272e79441f2
Author: Jakub Konka <kubkon@jakubkonka.com>
Date:   Wed, 24 Jan 2024 12:48:22 +0100

macho: set __DATA_CONST* segments flags to SG_READ_ONLY

Diffstat:
Msrc/link/MachO.zig | 4+++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/link/MachO.zig b/src/link/MachO.zig @@ -2243,7 +2243,8 @@ fn initSegments(self: *MachO) !void { for (slice.items(.header)) |header| { const segname = header.segName(); if (self.getSegmentByName(segname) == null) { - _ = try self.addSegment(segname, .{ .prot = getSegmentProt(segname) }); + const flags: u32 = if (mem.startsWith(u8, segname, "__DATA_CONST")) macho.SG_READ_ONLY else 0; + _ = try self.addSegment(segname, .{ .prot = getSegmentProt(segname), .flags = flags }); } } @@ -3543,6 +3544,7 @@ pub fn addSegment(self: *MachO, name: []const u8, opts: struct { fileoff: u64 = 0, filesize: u64 = 0, prot: macho.vm_prot_t = macho.PROT.NONE, + flags: u32 = 0, }) error{OutOfMemory}!u8 { const gpa = self.base.comp.gpa; const index = @as(u8, @intCast(self.segments.items.len));