diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2017-02-14 13:35:11 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2017-05-08 12:52:36 +0000 |
commit | 9f6ffdc1b75fd69ecda219c9e9f1b2551f542b26 (patch) | |
tree | 17560623af820de8723e268f4c36cb892202888d /backends/Makefile.am | |
parent | 5c20064a9aff24b5e1120349e718c48bb7d9a028 (diff) |
Add frame pointer unwinding as fallback on arm
If we don't find any debug information for a given frame, we usually
cannot unwind any further. However, the binary in question might have
been compiled with frame pointers, in which case we can look up the
well known frame pointer locations in the stack snapshot and use them
to bridge the frames without debug information.
At the moment this works only for ARM code. THUMB code uses a
different mechanism for unwinding. Also, in order to figure out if
a function was compiled in ARM or in THUMB mode we need a symbol
table which might not be available (e.g. with JIT-compiled code).
Furthermore, there doesn't seem to be a fixed convention on the order in
which LR and FP are pushed to the stack on a new frame. The code assumes
FP is first and LR second. This is what QV4 does.
Change-Id: Iac732e11b7434043cd613d95d8cb2ac753b93920
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'backends/Makefile.am')
-rw-r--r-- | backends/Makefile.am | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/backends/Makefile.am b/backends/Makefile.am index 55ff871f..526fcb99 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -80,7 +80,8 @@ libebl_alpha_pic_a_SOURCES = $(alpha_SRCS) am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os) arm_SRCS = arm_init.c arm_symbol.c arm_regs.c arm_corenote.c \ - arm_auxv.c arm_attrs.c arm_retval.c arm_cfi.c arm_initreg.c + arm_auxv.c arm_attrs.c arm_retval.c arm_cfi.c arm_initreg.c \ + arm_unwind.c libebl_arm_pic_a_SOURCES = $(arm_SRCS) am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os) |