summaryrefslogtreecommitdiff
path: root/include/tdep-arm
diff options
context:
space:
mode:
authorLassi Tuura <lat@cern.ch>2011-03-31 23:47:20 -0700
committerArun Sharma <asharma@fb.com>2011-04-01 00:00:39 -0700
commit5f38f35d5d6c78aafa6da20845d9ceff74af00f8 (patch)
treef2d1f0dd3ad2bc2fdb21bc981fe9e6b3c6f44e7e /include/tdep-arm
parent50bc12afba900c478d5d760966ef5b6f32229c99 (diff)
downloadlibunwind-5f38f35d5d6c78aafa6da20845d9ceff74af00f8.tar.gz
Drop a call frame in tdep_trace and avoid a call to unw_step.
Dropping the extra frame for unw_backtrace itself using unw_step is approximately 15% slower than skipping the frame in tdep_trace. So drop the frame in the latter, and make the function a private implementation detail for libunwind, not an exported interface. Also moves unw_getcontext call back into unw_backtrace to avoid an extra call frame in case slow_backtrace does not get inlined into unw_backtrace.
Diffstat (limited to 'include/tdep-arm')
-rw-r--r--include/tdep-arm/libunwind_i.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/tdep-arm/libunwind_i.h b/include/tdep-arm/libunwind_i.h
index 0cb4a719..cd18292e 100644
--- a/include/tdep-arm/libunwind_i.h
+++ b/include/tdep-arm/libunwind_i.h
@@ -36,6 +36,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
#include "dwarf.h"
#include "ex_tables.h"
+typedef struct
+ {
+ /* no arm-specific fast trace */
+ }
+unw_tdep_frame_t;
+
struct unw_addr_space
{
struct unw_accessors acc;
@@ -222,6 +228,7 @@ dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
#define tdep_cache_frame(c,rs) do {} while(0)
#define tdep_reuse_frame(c,rs) do {} while(0)
#define tdep_stash_frame(c,rs) do {} while(0)
+#define tdep_trace(cur,addr,n) (-UNW_ENOINFO)
#ifdef UNW_LOCAL_ONLY
# define tdep_find_proc_info(c,ip,n) \