From 746f65f8b3ce11d67d8fd392aea8bc05a24adae6 Mon Sep 17 00:00:00 2001 From: Michael Dusan Date: Mon, 12 Apr 2021 06:10:02 -0400 Subject: [PATCH] dwarf: fix LineNumberProgram check - tolerate out-of-order DW_AT_ranges closes #8421 --- lib/std/dwarf.zig | 2 +- test/stack_traces.zig | 15 --------------- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/lib/std/dwarf.zig b/lib/std/dwarf.zig index 7df3a1bff6..2f3034b2d8 100644 --- a/lib/std/dwarf.zig +++ b/lib/std/dwarf.zig @@ -208,7 +208,7 @@ const LineNumberProgram = struct { } pub fn checkLineMatch(self: *LineNumberProgram) !?debug.LineInfo { - if (self.target_address >= self.prev_address and self.target_address < self.address) { + if (self.prev_address > 0 and self.target_address >= self.prev_address and self.target_address < self.address) { const file_entry = if (self.prev_file == 0) { return error.MissingDebugInfo; } else if (self.prev_file - 1 >= self.file_entries.items.len) { diff --git a/test/stack_traces.zig b/test/stack_traces.zig index 48b3963ce3..cb2cf94b70 100644 --- a/test/stack_traces.zig +++ b/test/stack_traces.zig @@ -20,11 +20,6 @@ pub fn addCases(cases: *tests.StackTracesContext) void { , }, .ReleaseSafe = .{ - .exclude = struct { - pub fn exclude() bool { - return if (std.builtin.object_format == .elf) true else false; - } - }, .exclude_os = .{ .windows, // segfault }, @@ -74,11 +69,6 @@ pub fn addCases(cases: *tests.StackTracesContext) void { , }, .ReleaseSafe = .{ - .exclude = struct { - pub fn exclude() bool { - return if (std.builtin.object_format == .elf) true else false; - } - }, .exclude_os = .{ .windows, // segfault }, @@ -145,11 +135,6 @@ pub fn addCases(cases: *tests.StackTracesContext) void { , }, .ReleaseSafe = .{ - .exclude = struct { - pub fn exclude() bool { - return if (std.builtin.object_format == .elf) true else false; - } - }, .exclude_os = .{ .windows, // segfault },