Revision 468f09746ae14ebd023500d62815c964e239aeda authored by Jeff Bezanson on 17 January 2018, 19:36:30 UTC, committed by Jeff Bezanson on 17 January 2018, 19:43:01 UTC
1 parent 78bc9c8
libunwind-arm-dyn.patch
From 8475f898b7f47b6e9f7193597dadb959dc5a02d2 Mon Sep 17 00:00:00 2001
From: Yichao Yu <yyc1992@gmail.com>
Date: Fri, 30 Sep 2016 04:11:03 +0000
Subject: [PATCH 1/3] Support dynamic unwind info on ARM
---
src/arm/Gstep.c | 10 ++++++++--
src/mi/Gdyn-extract.c | 1 +
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/arm/Gstep.c b/src/arm/Gstep.c
index 79f2dd2..5b2b329 100644
--- a/src/arm/Gstep.c
+++ b/src/arm/Gstep.c
@@ -45,8 +45,14 @@ arm_exidx_step (struct cursor *c)
/* mark PC unsaved */
c->dwarf.loc[UNW_ARM_R15] = DWARF_NULL_LOC;
- if ((ret = tdep_find_proc_info (&c->dwarf, c->dwarf.ip, 1)) < 0)
- return ret;
+ /* check dynamic info first --- it overrides everything else */
+ ret = unwi_find_dynamic_proc_info (c->dwarf.as, c->dwarf.ip, &c->dwarf.pi, 1,
+ c->dwarf.as_arg);
+ if (ret == -UNW_ENOINFO)
+ {
+ if ((ret = tdep_find_proc_info (&c->dwarf, c->dwarf.ip, 1)) < 0)
+ return ret;
+ }
if (c->dwarf.pi.format != UNW_INFO_FORMAT_ARM_EXIDX)
return -UNW_ENOINFO;
diff --git a/src/mi/Gdyn-extract.c b/src/mi/Gdyn-extract.c
index c8ae7a0..5f7682e 100644
--- a/src/mi/Gdyn-extract.c
+++ b/src/mi/Gdyn-extract.c
@@ -49,6 +49,7 @@ unwi_extract_dynamic_proc_info (unw_addr_space_t as, unw_word_t ip,
case UNW_INFO_FORMAT_TABLE:
case UNW_INFO_FORMAT_REMOTE_TABLE:
+ case UNW_INFO_FORMAT_ARM_EXIDX:
case UNW_INFO_FORMAT_IP_OFFSET:
#ifdef tdep_search_unwind_table
/* call platform-specific search routine: */
--
2.10.0
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...