mirror of
https://github.com/ziglang/zig.git
synced 2026-02-14 21:38:33 +00:00
macho: actually set SG_READ_ONLY on __DATA_CONST segment
This commit is contained in:
parent
aa39e98d90
commit
d7276c1527
@ -2170,8 +2170,7 @@ fn initSegments(self: *MachO) !void {
|
||||
for (slice.items(.header)) |header| {
|
||||
const segname = header.segName();
|
||||
if (self.getSegmentByName(segname) == null) {
|
||||
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 });
|
||||
_ = try self.addSegment(segname, .{ .prot = getSegmentProt(segname) });
|
||||
}
|
||||
}
|
||||
|
||||
@ -2247,6 +2246,12 @@ fn initSegments(self: *MachO) !void {
|
||||
segment.nsects += 1;
|
||||
seg_id.* = segment_id;
|
||||
}
|
||||
|
||||
// Set __DATA_CONST as READ_ONLY
|
||||
if (self.getSegmentByName("__DATA_CONST")) |seg_id| {
|
||||
const seg = &self.segments.items[seg_id];
|
||||
seg.flags |= macho.SG_READ_ONLY;
|
||||
}
|
||||
}
|
||||
|
||||
fn allocateSections(self: *MachO) !void {
|
||||
@ -3727,7 +3732,6 @@ 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));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user