diff options
| author | Jiao, Joey <quic_jiangenj@quicinc.com> | 2025-03-21 08:00:28 +0530 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2025-03-26 12:29:28 +0000 |
| commit | 19e40f4864c7f49f6b216de33b25a5401a507b8d (patch) | |
| tree | 2a4afed3abe3b59db3d6d60b3eb4507c0538d5bb /pkg/symbolizer | |
| parent | d5bfdebb6df694be20ae584476f8e895ff350444 (diff) | |
pkg/symbolizer: retain the frame if line number is 0
There are numerous line_entries with a line number of 0 for
__sanitizer_cov_trace_pc.
Currently, if only one program counter (PC) is hit in the function and
the line number is 0 for that PC, the frame is ignored.
To accurately report function coverage, we should include the function
in such cases.
Diffstat (limited to 'pkg/symbolizer')
| -rw-r--r-- | pkg/symbolizer/addr2line.go | 5 | ||||
| -rw-r--r-- | pkg/symbolizer/addr2line_test.go | 15 |
2 files changed, 19 insertions, 1 deletions
diff --git a/pkg/symbolizer/addr2line.go b/pkg/symbolizer/addr2line.go index 5187f72ed..bb4e4a3fa 100644 --- a/pkg/symbolizer/addr2line.go +++ b/pkg/symbolizer/addr2line.go @@ -163,9 +163,12 @@ func parse(interner *Interner, s *bufio.Scanner) ([]Frame, error) { } file := ln[:colon] line, err := strconv.Atoi(ln[colon+1 : lineEnd]) - if err != nil || fn == "" || fn == "??" || file == "" || file == "??" || line <= 0 { + if err != nil || fn == "" || fn == "??" || file == "" || file == "??" || line < 0 { continue } + if line == 0 { + line = -1 + } frames = append(frames, Frame{ PC: pc, Func: interner.Do(fn), diff --git a/pkg/symbolizer/addr2line_test.go b/pkg/symbolizer/addr2line_test.go index f6445367e..dbb29de6d 100644 --- a/pkg/symbolizer/addr2line_test.go +++ b/pkg/symbolizer/addr2line_test.go @@ -73,6 +73,21 @@ func TestParse(t *testing.T) { }, }, { + 0xffffffff82fdbe1b, + "0xffffffff82fdbe1b\n" + + "fbcon_invert_region\n" + + "drivers/video/console/fbcon.c:0\n", + []Frame{ + { + PC: 0xffffffff82fdbe1b, + Func: "fbcon_invert_region", + File: "drivers/video/console/fbcon.c", + Line: -1, + Inline: false, + }, + }, + }, + { 0x123124, "0x0000000000123124\n" + "??\n" + |
