diff options
Diffstat (limited to 'std')
| -rw-r--r-- | std/debug/index.zig | 11 | ||||
| -rw-r--r-- | std/special/compiler_rt/index.zig | 19 |
2 files changed, 27 insertions, 3 deletions
diff --git a/std/debug/index.zig b/std/debug/index.zig index 8d90a6aa07..b26800677f 100644 --- a/std/debug/index.zig +++ b/std/debug/index.zig @@ -791,14 +791,21 @@ fn getLineNumberInfo(st: &ElfStackTrace, compile_unit: &const CompileUnit, targe } const version = try in_stream.readInt(st.elf.endian, u16); - if (version != 2) return error.InvalidDebugInfo; + // TODO support 3 and 5 + if (version != 2 and version != 4) return error.InvalidDebugInfo; - const prologue_length = try in_stream.readInt(st.elf.endian, u32); + const prologue_length = if (is_64) try in_stream.readInt(st.elf.endian, u64) + else try in_stream.readInt(st.elf.endian, u32); const prog_start_offset = (try in_file.getPos()) + prologue_length; const minimum_instruction_length = try in_stream.readByte(); if (minimum_instruction_length == 0) return error.InvalidDebugInfo; + if (version >= 4) { + // maximum_operations_per_instruction + _ = try in_stream.readByte(); + } + const default_is_stmt = (try in_stream.readByte()) != 0; const line_base = try in_stream.readByteSigned(); diff --git a/std/special/compiler_rt/index.zig b/std/special/compiler_rt/index.zig index d12b0d2fd6..81fe1ffec1 100644 --- a/std/special/compiler_rt/index.zig +++ b/std/special/compiler_rt/index.zig @@ -127,7 +127,24 @@ fn isArmArch() bool { builtin.Arch.armv5, builtin.Arch.armv5te, builtin.Arch.armv4t, - builtin.Arch.armeb => true, + builtin.Arch.armebv8_2a, + builtin.Arch.armebv8_1a, + builtin.Arch.armebv8, + builtin.Arch.armebv8r, + builtin.Arch.armebv8m_baseline, + builtin.Arch.armebv8m_mainline, + builtin.Arch.armebv7, + builtin.Arch.armebv7em, + builtin.Arch.armebv7m, + builtin.Arch.armebv7s, + builtin.Arch.armebv7k, + builtin.Arch.armebv6, + builtin.Arch.armebv6m, + builtin.Arch.armebv6k, + builtin.Arch.armebv6t2, + builtin.Arch.armebv5, + builtin.Arch.armebv5te, + builtin.Arch.armebv4t => true, else => false, }; } |
