| ... | @@ -2667,8 +2667,16 @@ fn parseTextBlocks(self: *MachO) !void { | ... | @@ -2667,8 +2667,16 @@ fn parseTextBlocks(self: *MachO) !void { |
| 2667 | metadata.size, | 2667 | metadata.size, |
| 2668 | metadata.alignment, | 2668 | metadata.alignment, |
| 2669 | }); | 2669 | }); |
| | 2670 | |
| | 2671 | const sect_size = if (self.blocks.get(match)) |last| blk: { |
| | 2672 | const last_atom_sym = self.locals.items[last.local_sym_index]; |
| | 2673 | break :blk last_atom_sym.n_value + last.size - sect.addr; |
| | 2674 | } else 0; |
| | 2675 | |
| 2670 | sect.@"align" = math.max(sect.@"align", metadata.alignment); | 2676 | sect.@"align" = math.max(sect.@"align", metadata.alignment); |
| 2671 | try self.growSection(match, @intCast(u32, metadata.size)); | 2677 | const needed_size = @intCast(u32, metadata.size + sect_size); |
| | 2678 | try self.growSection(match, needed_size); |
| | 2679 | sect.size = needed_size; |
| 2672 | | 2680 | |
| 2673 | var base_vaddr = if (self.blocks.get(match)) |last| blk: { | 2681 | var base_vaddr = if (self.blocks.get(match)) |last| blk: { |
| 2674 | const last_atom_sym = self.locals.items[last.local_sym_index]; | 2682 | const last_atom_sym = self.locals.items[last.local_sym_index]; |