aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-01-24 12:48:22 +0100
committerJakub Konka <kubkon@jakubkonka.com>2024-01-24 12:48:22 +0100
commit0fd0b765fa84a40446663928db1d3f9a63b7a98d (patch)
treea4bb41d3e608d9a5f93d0c4521bf083a3d925e25 /src
parent5226705b321a2bb6aa63e3b20f5fd272e79441f2 (diff)
downloadzig-0fd0b765fa84a40446663928db1d3f9a63b7a98d.tar.gz
zig-0fd0b765fa84a40446663928db1d3f9a63b7a98d.zip
macho: set __DATA_CONST* segments flags to SG_READ_ONLY
Diffstat (limited to 'src')
-rw-r--r--src/link/MachO.zig4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index d4d684cde6..c9f655fd19 100644
--- 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));