authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-09-11 12:25:00+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-09-11 12:25:00+02:00
log054fe96bcd84cc4f0536696636531b192224df48
tree05382c88920cf92f7eda0b6c3814c68263a3df67
parent31dcb0dde71e7c6968a9ee902782783b139c4900

macho: enable tracy in more places within the linker


3 files changed, 23 insertions(+), 0 deletions(-)

src/link/MachO.zig+9
...@@ -2579,6 +2579,9 @@ fn resolveDyldStubBinder(self: *MachO) !void {...@@ -2579,6 +2579,9 @@ fn resolveDyldStubBinder(self: *MachO) !void {
2579}2579}
25802580
2581fn parseObjectsIntoAtoms(self: *MachO) !void {2581fn parseObjectsIntoAtoms(self: *MachO) !void {
2582 const tracy = trace(@src());
2583 defer tracy.end();
2584
2582 var parsed_atoms = Object.ParsedAtoms.init(self.base.allocator);2585 var parsed_atoms = Object.ParsedAtoms.init(self.base.allocator);
2583 defer parsed_atoms.deinit();2586 defer parsed_atoms.deinit();
25842587
...@@ -3933,6 +3936,9 @@ fn findFreeSpace(self: MachO, segment_id: u16, alignment: u64, start: ?u64) u64...@@ -3933,6 +3936,9 @@ fn findFreeSpace(self: MachO, segment_id: u16, alignment: u64, start: ?u64) u64
3933}3936}
39343937
3935fn growSection(self: *MachO, match: MatchingSection, new_size: u32) !void {3938fn growSection(self: *MachO, match: MatchingSection, new_size: u32) !void {
3939 const tracy = trace(@src());
3940 defer tracy.end();
3941
3936 const seg = &self.load_commands.items[match.seg].Segment;3942 const seg = &self.load_commands.items[match.seg].Segment;
3937 const sect = &seg.sections.items[match.sect];3943 const sect = &seg.sections.items[match.sect];
39383944
...@@ -4081,6 +4087,9 @@ fn getSectionMaxAlignment(self: *MachO, segment_id: u16, start_sect_id: u16) !u3...@@ -4081,6 +4087,9 @@ fn getSectionMaxAlignment(self: *MachO, segment_id: u16, start_sect_id: u16) !u3
4081}4087}
40824088
4083fn allocateAtom(self: *MachO, atom: *Atom, new_atom_size: u64, alignment: u64, match: MatchingSection) !u64 {4089fn allocateAtom(self: *MachO, atom: *Atom, new_atom_size: u64, alignment: u64, match: MatchingSection) !u64 {
4090 const tracy = trace(@src());
4091 defer tracy.end();
4092
4084 const seg = &self.load_commands.items[match.seg].Segment;4093 const seg = &self.load_commands.items[match.seg].Segment;
4085 const sect = &seg.sections.items[match.sect];4094 const sect = &seg.sections.items[match.sect];
4086 var free_list = self.atom_free_lists.get(match).?;4095 var free_list = self.atom_free_lists.get(match).?;
src/link/MachO/Atom.zig+7
...@@ -10,6 +10,7 @@ const macho = std.macho;...@@ -10,6 +10,7 @@ const macho = std.macho;
10const math = std.math;10const math = std.math;
11const mem = std.mem;11const mem = std.mem;
12const meta = std.meta;12const meta = std.meta;
13const trace = @import("../../tracy.zig").trace;
1314
14const Allocator = mem.Allocator;15const Allocator = mem.Allocator;
15const Arch = std.Target.Cpu.Arch;16const Arch = std.Target.Cpu.Arch;
...@@ -701,6 +702,9 @@ fn initRelocFromObject(rel: macho.relocation_info, context: RelocContext) !Reloc...@@ -701,6 +702,9 @@ fn initRelocFromObject(rel: macho.relocation_info, context: RelocContext) !Reloc
701}702}
702703
703pub fn parseRelocs(self: *Atom, relocs: []macho.relocation_info, context: RelocContext) !void {704pub fn parseRelocs(self: *Atom, relocs: []macho.relocation_info, context: RelocContext) !void {
705 const tracy = trace(@src());
706 defer tracy.end();
707
704 const filtered_relocs = filterRelocs(relocs, context.base_offset, context.base_offset + self.size);708 const filtered_relocs = filterRelocs(relocs, context.base_offset, context.base_offset + self.size);
705 var it = RelocIterator{709 var it = RelocIterator{
706 .buffer = filtered_relocs,710 .buffer = filtered_relocs,
...@@ -1141,6 +1145,9 @@ fn parseLoad(self: Atom, rel: macho.relocation_info, out: *Relocation) void {...@@ -1141,6 +1145,9 @@ fn parseLoad(self: Atom, rel: macho.relocation_info, out: *Relocation) void {
1141}1145}
11421146
1143pub fn resolveRelocs(self: *Atom, macho_file: *MachO) !void {1147pub fn resolveRelocs(self: *Atom, macho_file: *MachO) !void {
1148 const tracy = trace(@src());
1149 defer tracy.end();
1150
1144 for (self.relocs.items) |rel| {1151 for (self.relocs.items) |rel| {
1145 log.debug("relocating {}", .{rel});1152 log.debug("relocating {}", .{rel});
11461153
src/link/MachO/Object.zig+7
...@@ -14,6 +14,7 @@ const sort = std.sort;...@@ -14,6 +14,7 @@ const sort = std.sort;
14const commands = @import("commands.zig");14const commands = @import("commands.zig");
15const segmentName = commands.segmentName;15const segmentName = commands.segmentName;
16const sectionName = commands.sectionName;16const sectionName = commands.sectionName;
17const trace = @import("../../tracy.zig").trace;
1718
18const Allocator = mem.Allocator;19const Allocator = mem.Allocator;
19const Atom = @import("Atom.zig");20const Atom = @import("Atom.zig");
...@@ -344,6 +345,9 @@ const AtomParser = struct {...@@ -344,6 +345,9 @@ const AtomParser = struct {
344 pub fn next(self: *AtomParser, context: Context) !?*Atom {345 pub fn next(self: *AtomParser, context: Context) !?*Atom {
345 if (self.index == self.nlists.len) return null;346 if (self.index == self.nlists.len) return null;
346347
348 const tracy = trace(@src());
349 defer tracy.end();
350
347 var aliases = std.ArrayList(NlistWithIndex).init(context.allocator);351 var aliases = std.ArrayList(NlistWithIndex).init(context.allocator);
348 defer aliases.deinit();352 defer aliases.deinit();
349353
...@@ -465,6 +469,9 @@ pub fn parseIntoAtoms(...@@ -465,6 +469,9 @@ pub fn parseIntoAtoms(
465 object_id: u16,469 object_id: u16,
466 macho_file: *MachO,470 macho_file: *MachO,
467) !ParsedAtoms {471) !ParsedAtoms {
472 const tracy = trace(@src());
473 defer tracy.end();
474
468 var parsed_atoms = ParsedAtoms.init(allocator);475 var parsed_atoms = ParsedAtoms.init(allocator);
469 const seg = self.load_commands.items[self.segment_cmd_index.?].Segment;476 const seg = self.load_commands.items[self.segment_cmd_index.?].Segment;
470477