aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/symbolizer
diff options
context:
space:
mode:
authorJiao, Joey <quic_jiangenj@quicinc.com>2025-03-21 08:00:28 +0530
committerTaras Madan <tarasmadan@google.com>2025-03-26 12:29:28 +0000
commit19e40f4864c7f49f6b216de33b25a5401a507b8d (patch)
tree2a4afed3abe3b59db3d6d60b3eb4507c0538d5bb /pkg/symbolizer
parentd5bfdebb6df694be20ae584476f8e895ff350444 (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.go5
-rw-r--r--pkg/symbolizer/addr2line_test.go15
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" +