summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authorStan Cox <scox@redhat.com>2008-07-18 09:44:07 -0400
committerStan Cox <scox@redhat.com>2008-07-18 09:44:07 -0400
commit6908711142cf34dc1b67d32a68a91998891af764 (patch)
tree7b3cc70eb77752a4668ef4b6b0c0b4b262688a0b /tapsets.cxx
parent9dba0d4d9226e87d758e2554cb7c69a05e95050b (diff)
downloadsystemtap-steved-6908711142cf34dc1b67d32a68a91998891af764.tar.gz
systemtap-steved-6908711142cf34dc1b67d32a68a91998891af764.tar.xz
systemtap-steved-6908711142cf34dc1b67d32a68a91998891af764.zip
Avoid statement wildcard lines without a unique address.
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx9
1 files changed, 6 insertions, 3 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index 05fda9bd..3d5af360 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -1282,7 +1282,7 @@ struct dwflpp
Dwarf_Addr line_addr;
dwarf_lineno (srcsp [0], &lineno);
line_probed = lines_probed.insert(lineno);
- if (lineno != l || line_probed.second == false)
+ if (lineno != l || line_probed.second == false || nsrcs > 1)
continue;
dwarf_lineaddr (srcsp [0], &line_addr);
if (dwarf_haspc (function, line_addr) != 1)
@@ -1347,8 +1347,11 @@ struct dwflpp
if (srcsp [i]) // skip over mismatched lines
callback (dwarf_line_t(srcsp[i]), data);
}
- if (line_type != WILDCARD || l == lines[1])
- break;
+
+ if (line_type == ABSOLUTE || line_type == RELATIVE)
+ break;
+ else if (line_type == RANGE && l == lines[1])
+ break;
}
}