diff options
author | Stan Cox <scox@redhat.com> | 2008-07-18 09:44:07 -0400 |
---|---|---|
committer | Stan Cox <scox@redhat.com> | 2008-07-18 09:44:07 -0400 |
commit | 6908711142cf34dc1b67d32a68a91998891af764 (patch) | |
tree | 7b3cc70eb77752a4668ef4b6b0c0b4b262688a0b | |
parent | 9dba0d4d9226e87d758e2554cb7c69a05e95050b (diff) | |
download | systemtap-steved-6908711142cf34dc1b67d32a68a91998891af764.tar.gz systemtap-steved-6908711142cf34dc1b67d32a68a91998891af764.tar.xz systemtap-steved-6908711142cf34dc1b67d32a68a91998891af764.zip |
Avoid statement wildcard lines without a unique address.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | tapsets.cxx | 9 |
2 files changed, 11 insertions, 3 deletions
@@ -1,3 +1,8 @@ +2008-07-17 Stan Cox <scox@redhat.com> + + * tapsets.cxx (iterate_over_srcfile_lines): Avoid statement wildcard + lines without a unique address. + 2008-07-17 <anithra@linux.vnet.ibm.com> * main.cxx (handle_interrupt): Forward received signal to process 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; } } |