diff options
author | Tim Moore <timoore@redhat.com> | 2010-01-20 18:05:26 +0100 |
---|---|---|
committer | Tim Moore <timoore@redhat.com> | 2010-01-20 18:05:26 +0100 |
commit | 0f33053e1ebb5931f9dfbb6268aec57b7ce003da (patch) | |
tree | d696072b903a90b28d9d8828c7e6ac99490f50b9 /runtime/sym.h | |
parent | 4e6d866ff635108634f8d0156d21c171e0d056f4 (diff) | |
download | systemtap-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.h | 1 |
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; |