diff --git a/lib/std/debug/MachOFile.zig b/lib/std/debug/MachOFile.zig index 158e908183715fd06876b1191d4cad0cf2cd5301..8b35d7541d05caae74e065d6146ebbffd4e8d3e4 100644 --- a/lib/std/debug/MachOFile.zig +++ b/lib/std/debug/MachOFile.zig @@ -504,8 +504,11 @@ fn loadOFile(gpa: Allocator, io: Io, o_file_name: []const u8) !OFile { if (!std.mem.eql(u8, "__DWARF", sect.segName())) continue; - const section_index: usize = inline for (@typeInfo(Dwarf.Section.Id).@"enum".field_names, 0..) |section_name, i| { - if (mem.eql(u8, "__" ++ section_name, sect.sectName())) break i; + const section_index: usize = inline for (@typeInfo(Dwarf.Section.Id).@"enum".field_names, 0..) |field_name, i| { + const section_name_long = "__" ++ field_name; + // Some dwarf section names don't fit in the `sectname` buffer, so they are truncated. + const section_name_trunc = section_name_long[0..@min(section_name_long.len, sect.sectname.len)]; + if (mem.eql(u8, section_name_trunc, sect.sectName())) break i; } else continue; if (mapped_ofile.len < sect.offset + sect.size) return error.InvalidMachO;