summaryrefslogtreecommitdiffstats
path: root/runtime/unwind.c
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-07-04 16:59:48 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-07-04 16:59:48 -0400
commit1b94bf6d310cf41041d0a6c24be85a892d443708 (patch)
tree458edfc3cee3e295e70ae3a61e358a87237dd01c /runtime/unwind.c
parent3c02e16c39aa0fd5b291faf610d9d71023392a2e (diff)
downloadsystemtap-steved-1b94bf6d310cf41041d0a6c24be85a892d443708.tar.gz
systemtap-steved-1b94bf6d310cf41041d0a6c24be85a892d443708.tar.xz
systemtap-steved-1b94bf6d310cf41041d0a6c24be85a892d443708.zip
emit all symbol tables at compile time; don't do any module munging; new unwinder still disabled
Diffstat (limited to 'runtime/unwind.c')
-rw-r--r--runtime/unwind.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/runtime/unwind.c b/runtime/unwind.c
index aa270cad..21ea4559 100644
--- a/runtime/unwind.c
+++ b/runtime/unwind.c
@@ -108,7 +108,6 @@ static void _stp_create_unwind_hdr(struct _stp_module *m)
header = _stp_vmalloc(hdrSize);
if (header == NULL)
return;
- m->allocated.unwind_hdr = 1;
}
header->version = 1;
@@ -156,17 +155,10 @@ static void _stp_create_unwind_hdr(struct _stp_module *m)
bad:
dbug_unwind(1, "unwind data for %s is unacceptable. Freeing.", m->name);
if (header) {
- if (m->allocated.unwind_hdr) {
- m->allocated.unwind_hdr = 0;
- _stp_vfree(header);
- } else
- _stp_kfree(header);
+ _stp_vfree(header);
}
if (m->unwind_data) {
- if (m->allocated.unwind_data)
- _stp_vfree(m->unwind_data);
- else
- _stp_kfree(m->unwind_data);
+ _stp_vfree(m->unwind_data);
m->unwind_data = NULL;
m->unwind_data_len = 0;
}
@@ -691,7 +683,7 @@ int unwind(struct unwind_frame_info *frame)
if (UNW_PC(frame) == 0)
return -EINVAL;
- m = _stp_get_unwind_info(pc);
+ m = NULL /*_stp_get_unwind_info(pc) */;
if (unlikely(m == NULL)) {
dbug_unwind(1, "No module found for pc=%lx", pc);
return -EINVAL;
@@ -940,21 +932,18 @@ int unwind(struct unwind_frame_info *frame)
break;
}
}
- read_unlock(&m->lock);
dbug_unwind(1, "returning 0 (%lx)\n", UNW_PC(frame));
return 0;
copy_failed:
dbug_unwind(1, "_stp_read_address failed to access memory\n");
err:
- read_unlock(&m->lock);
return -EIO;
done:
/* PC was in a range convered by a module but no unwind info */
/* found for the specific PC. This seems to happen only for kretprobe */
/* trampolines and at the end of interrupt backtraces. */
- read_unlock(&m->lock);
return 1;
#undef CASES
#undef FRAME_REG