lib/tldr/src/formats/elf/liveness/groups.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

 1 const root = @import("../../../root.zig");
 2 const elf = @import("../root.zig");
 3 const state = @import("state.zig");
 4 
 5 const model = root.model;
 6 const ObjectFile = elf.parser.ObjectFile;
 7 const SectionRef = elf.parser.SectionRef;
 8 const State = state.State;
 9 
10 pub fn mark(
11     objects: []const ObjectFile,
12     group_memberships: *const elf.group.Index,
13     live: *State,
14     section_ref: SectionRef,
15 ) model.Error!void {
16     const object = objects[section_ref.object_index];
17     for (group_memberships.groupsForSection(section_ref)) |group_section_index| {
18         if (group_section_index >= object.sections.len) return error.MissingSection;
19         const group_bytes = try elf.group.bytes(object, object.sections[group_section_index]);
20         var member_iterator = elf.group.members(group_bytes);
21         while (member_iterator.next()) |member_index| {
22             try state.markSection(
23                 live,
24                 objects,
25                 .{
26                     .object_index = section_ref.object_index,
27                     .section_index = member_index,
28                 },
29             );
30         }
31     }
32 }