From 0f33053e1ebb5931f9dfbb6268aec57b7ce003da Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Wed, 20 Jan 2010 18:05:26 +0100 Subject: 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. --- runtime/sym.h | 1 + 1 file changed, 1 insertion(+) (limited to 'runtime/sym.h') 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; -- cgit