| ... | @@ -2287,9 +2287,11 @@ fn allocateSections(self: *MachO) !void { | ... | @@ -2287,9 +2287,11 @@ fn allocateSections(self: *MachO) !void { |
| 2287 | | 2287 | |
| 2288 | const page_size = self.getPageSize(); | 2288 | const page_size = self.getPageSize(); |
| 2289 | const slice = self.sections.slice(); | 2289 | const slice = self.sections.slice(); |
| | 2290 | const last_index = for (slice.items(.header), 0..) |header, i| { |
| | 2291 | if (mem.indexOf(u8, header.segName(), "ZIG")) |_| break i; |
| | 2292 | } else slice.items(.header).len; |
| 2290 | | 2293 | |
| 2291 | for (slice.items(.header), slice.items(.segment_id)) |*header, curr_seg_id| { | 2294 | for (slice.items(.header)[0..last_index], slice.items(.segment_id)[0..last_index]) |*header, curr_seg_id| { |
| 2292 | if (mem.indexOf(u8, header.segName(), "ZIG")) |_| continue; | | |
| 2293 | if (prev_seg_id != curr_seg_id) { | 2295 | if (prev_seg_id != curr_seg_id) { |
| 2294 | const prev_seg = &self.segments.items[prev_seg_id]; | 2296 | const prev_seg = &self.segments.items[prev_seg_id]; |
| 2295 | const curr_seg = &self.segments.items[curr_seg_id]; | 2297 | const curr_seg = &self.segments.items[curr_seg_id]; |
| ... | @@ -2325,8 +2327,7 @@ fn allocateSections(self: *MachO) !void { | ... | @@ -2325,8 +2327,7 @@ fn allocateSections(self: *MachO) !void { |
| 2325 | // TODO iterate over sections again, but consider only zig sections | 2327 | // TODO iterate over sections again, but consider only zig sections |
| 2326 | // and move them if they are allocated in file below page-aligned fileoff | 2328 | // and move them if they are allocated in file below page-aligned fileoff |
| 2327 | fileoff = mem.alignForward(u32, fileoff, page_size); | 2329 | fileoff = mem.alignForward(u32, fileoff, page_size); |
| 2328 | for (slice.items(.header), slice.items(.segment_id)) |*header, seg_id| { | 2330 | for (slice.items(.header)[last_index..], slice.items(.segment_id)[last_index..]) |*header, seg_id| { |
| 2329 | if (mem.indexOf(u8, header.segName(), "ZIG") == null) continue; | | |
| 2330 | if (header.isZerofill()) continue; | 2331 | if (header.isZerofill()) continue; |
| 2331 | if (header.offset < fileoff) { | 2332 | if (header.offset < fileoff) { |
| 2332 | const existing_size = header.size; | 2333 | const existing_size = header.size; |