authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-01-24 12:48:22+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-01-24 12:48:22+01:00
log0fd0b765fa84a40446663928db1d3f9a63b7a98d
treea4bb41d3e608d9a5f93d0c4521bf083a3d925e25
parent5226705b321a2bb6aa63e3b20f5fd272e79441f2

macho: set __DATA_CONST* segments flags to SG_READ_ONLY


1 files changed, 3 insertions(+), 1 deletions(-)

src/link/MachO.zig+3-1
......@@ -2243,7 +2243,8 @@ fn initSegments(self: *MachO) !void {
22432243 for (slice.items(.header)) |header| {
22442244 const segname = header.segName();
22452245 if (self.getSegmentByName(segname) == null) {
2246 _ = try self.addSegment(segname, .{ .prot = getSegmentProt(segname) });
2246 const flags: u32 = if (mem.startsWith(u8, segname, "__DATA_CONST")) macho.SG_READ_ONLY else 0;
2247 _ = try self.addSegment(segname, .{ .prot = getSegmentProt(segname), .flags = flags });
22472248 }
22482249 }
22492250
......@@ -3543,6 +3544,7 @@ pub fn addSegment(self: *MachO, name: []const u8, opts: struct {
35433544 fileoff: u64 = 0,
35443545 filesize: u64 = 0,
35453546 prot: macho.vm_prot_t = macho.PROT.NONE,
3547 flags: u32 = 0,
35463548}) error{OutOfMemory}!u8 {
35473549 const gpa = self.base.comp.gpa;
35483550 const index = @as(u8, @intCast(self.segments.items.len));