authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-01-10 21:33:25+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-01-13 23:56:05+01:00
log212814932578f5916bff2dd04d501e1d30be740c
tree8477de646121c223dad7cf30c6c90bfda92fb89c
parent4ffa8952ccaef106ef4dfcdb4369960816337ba3

macho: update DebugSymbols to include DATA_CONST seg


1 files changed, 11 insertions(+), 0 deletions(-)

src/link/MachO/DebugSymbols.zig+11
......@@ -39,6 +39,8 @@ load_commands: std.ArrayListUnmanaged(LoadCommand) = .{},
3939pagezero_segment_cmd_index: ?u16 = null,
4040/// __TEXT segment
4141text_segment_cmd_index: ?u16 = null,
42/// __DATA_CONST segment
43data_const_segment_cmd_index: ?u16 = null,
4244/// __DATA segment
4345data_segment_cmd_index: ?u16 = null,
4446/// __LINKEDIT segment
......@@ -171,6 +173,15 @@ pub fn populateMissingMetadata(self: *DebugSymbols, allocator: *Allocator) !void
171173 self.header_dirty = true;
172174 self.load_commands_dirty = true;
173175 }
176 if (self.data_const_segment_cmd_index == null) outer: {
177 if (self.base.data_const_segment_cmd_index == null) break :outer; // __DATA_CONST is optional
178 self.data_const_segment_cmd_index = @intCast(u16, self.load_commands.items.len);
179 const base_cmd = self.base.load_commands.items[self.base.data_const_segment_cmd_index.?].Segment;
180 const cmd = try self.copySegmentCommand(allocator, base_cmd);
181 try self.load_commands.append(allocator, .{ .Segment = cmd });
182 self.header_dirty = true;
183 self.load_commands_dirty = true;
184 }
174185 if (self.data_segment_cmd_index == null) outer: {
175186 if (self.base.data_segment_cmd_index == null) break :outer; // __DATA is optional
176187 self.data_segment_cmd_index = @intCast(u16, self.load_commands.items.len);