summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-02-29 10:45:25 -0500
committerFrank Ch. Eigler <fche@elastic.org>2008-02-29 10:45:25 -0500
commit378f9227b04b876ff06af099715e7d60cdc49903 (patch)
tree5a3a3bc2147cbb4740ea78888220b8c94cc6fbd4 /tapsets.cxx
parent9badcdf13130313c19a489e7703988effb4f7cea (diff)
parent9ceec314dfc92c5d69442966dd386aaefee90bea (diff)
downloadsystemtap-steved-378f9227b04b876ff06af099715e7d60cdc49903.tar.gz
systemtap-steved-378f9227b04b876ff06af099715e7d60cdc49903.tar.xz
systemtap-steved-378f9227b04b876ff06af099715e7d60cdc49903.zip
Merge branch 'master' of git://sources.redhat.com/git/systemtap
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx6
1 files changed, 6 insertions, 0 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index c5ed6ea1..52c14024 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -827,6 +827,7 @@ struct dwflpp
ptrdiff_t off = 0;
do
{
+ if (pending_interrupts) return;
off = dwfl_getmodules (dwfl, module_caching_callback,
& module_cache, off);
}
@@ -837,6 +838,7 @@ struct dwflpp
// Traverse the cache.
for (unsigned i = 0; i < module_cache.size(); i++)
{
+ if (pending_interrupts) return;
module_cache_entry& it = module_cache[i];
int rc = callback (it.mod, 0, it.name, it.addr, data);
if (rc != DWARF_CB_OK) break;
@@ -868,6 +870,7 @@ struct dwflpp
Dwarf_Off noff;
while (dwarf_nextcu (dw, off, &noff, &cuhl, NULL, NULL, NULL) == 0)
{
+ if (pending_interrupts) return;
Dwarf_Die die_mem;
Dwarf_Die *die;
die = dwarf_offdie (dw, off + cuhl, &die_mem);
@@ -878,6 +881,7 @@ struct dwflpp
for (unsigned i = 0; i < v->size(); i++)
{
+ if (pending_interrupts) return;
Dwarf_Die die = v->at(i);
int rc = (*callback)(& die, data);
if (rc != DWARF_CB_OK) break;
@@ -1057,6 +1061,7 @@ struct dwflpp
{
for (size_t i = 0; i < nsrcs; ++i)
{
+ if (pending_interrupts) return;
if (srcsp [i]) // skip over mismatched lines
callback (srcsp[i], data);
}
@@ -3012,6 +3017,7 @@ static int
query_cu (Dwarf_Die * cudie, void * arg)
{
dwarf_query * q = static_cast<dwarf_query *>(arg);
+ if (pending_interrupts) return DWARF_CB_ABORT;
try
{