summaryrefslogtreecommitdiffstats
path: root/runtime/sym.h
diff options
context:
space:
mode:
authorTim Moore <timoore@redhat.com>2010-01-20 18:05:26 +0100
committerTim Moore <timoore@redhat.com>2010-01-20 18:05:26 +0100
commit0f33053e1ebb5931f9dfbb6268aec57b7ce003da (patch)
treed696072b903a90b28d9d8828c7e6ac99490f50b9 /runtime/sym.h
parent4e6d866ff635108634f8d0156d21c171e0d056f4 (diff)
downloadsystemtap-steved-0f33053e1ebb5931f9dfbb6268aec57b7ce003da.tar.gz
systemtap-steved-0f33053e1ebb5931f9dfbb6268aec57b7ce003da.tar.xz
systemtap-steved-0f33053e1ebb5931f9dfbb6268aec57b7ce003da.zip
use eh_frame_hdr table to speed up unwinding
* runtime/sym.h (_stp_module): add unwind_hdr_addr member. * runtime/unwind.c (read_ptr_sect): Modification of read_pointer that also handles offsets from text or "data" sections. (read_pointer): Use it. (_stp_search_unwind_hdr): Use read_ptr_sect to calculate values that are relative to the .eh_frame_hdr section. (unwind_frame): Search the frame header if this is an eh frame. * translate.cxx (get_unwind_data): Get the eh_frame_hdr too. (dump_unwindsyms): Write out eh_frame_hdr stuff.
Diffstat (limited to 'runtime/sym.h')
-rw-r--r--runtime/sym.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/runtime/sym.h b/runtime/sym.h
index ce6ab736..e7022877 100644
--- a/runtime/sym.h
+++ b/runtime/sym.h
@@ -49,6 +49,7 @@ struct _stp_module {
uint32_t eh_frame_len;
uint32_t unwind_hdr_len;
unsigned long eh_frame_addr; /* Orig load address (offset) .eh_frame */
+ unsigned long unwind_hdr_addr; /* same for .eh_frame_hdr */
/* build-id information */
unsigned char *build_id_bits;
unsigned long build_id_offset;