| ... | ... | @@ -2170,8 +2170,7 @@ fn initSegments(self: *MachO) !void { |
| 2170 | 2170 | for (slice.items(.header)) |header| { |
| 2171 | 2171 | const segname = header.segName(); |
| 2172 | 2172 | if (self.getSegmentByName(segname) == null) { |
| 2173 | | const flags: u32 = if (mem.startsWith(u8, segname, "__DATA_CONST")) macho.SG_READ_ONLY else 0; |
| 2174 | | _ = try self.addSegment(segname, .{ .prot = getSegmentProt(segname), .flags = flags }); |
| 2173 | _ = try self.addSegment(segname, .{ .prot = getSegmentProt(segname) }); |
| 2175 | 2174 | } |
| 2176 | 2175 | } |
| 2177 | 2176 | |
| ... | ... | @@ -2247,6 +2246,12 @@ fn initSegments(self: *MachO) !void { |
| 2247 | 2246 | segment.nsects += 1; |
| 2248 | 2247 | seg_id.* = segment_id; |
| 2249 | 2248 | } |
| 2249 | |
| 2250 | // Set __DATA_CONST as READ_ONLY |
| 2251 | if (self.getSegmentByName("__DATA_CONST")) |seg_id| { |
| 2252 | const seg = &self.segments.items[seg_id]; |
| 2253 | seg.flags |= macho.SG_READ_ONLY; |
| 2254 | } |
| 2250 | 2255 | } |
| 2251 | 2256 | |
| 2252 | 2257 | fn allocateSections(self: *MachO) !void { |
| ... | ... | @@ -3727,7 +3732,6 @@ pub fn addSegment(self: *MachO, name: []const u8, opts: struct { |
| 3727 | 3732 | fileoff: u64 = 0, |
| 3728 | 3733 | filesize: u64 = 0, |
| 3729 | 3734 | prot: macho.vm_prot_t = macho.PROT.NONE, |
| 3730 | | flags: u32 = 0, |
| 3731 | 3735 | }) error{OutOfMemory}!u8 { |
| 3732 | 3736 | const gpa = self.base.comp.gpa; |
| 3733 | 3737 | const index = @as(u8, @intCast(self.segments.items.len)); |