zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 56645c1701b321e9da807dcbf7b8d61e0fc53117 (tree)
parent a217c764db0a1dae539c3b243ebc329350485eb5
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Fri,  2 Mar 2018 16:26:22 -0500

std.debug.dwarf supports line number version 4

fixes stack traces for llvm6 generated zig programs

Diffstat:
Mstd/debug/index.zig | 11+++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git 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();