[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Libunwind-devel] [PATCH 4/8] Prefer to unwind using DWARF info on ARM.
From: |
Ken Werner |
Subject: |
[Libunwind-devel] [PATCH 4/8] Prefer to unwind using DWARF info on ARM. |
Date: |
Wed, 23 Mar 2011 15:55:02 +0000 |
DWARF expressions are more powerful than the ARM specific unwind tables.
Therefore DWARF should be the preferred unwind method.
Signed-off-by: Ken Werner <address@hidden>
---
src/arm/Gstep.c | 23 +++++++++++++----------
1 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/arm/Gstep.c b/src/arm/Gstep.c
index 1b4b135..f036093 100644
--- a/src/arm/Gstep.c
+++ b/src/arm/Gstep.c
@@ -76,16 +76,7 @@ unw_step (unw_cursor_t *cursor)
Debug (1, "(cursor=%p)\n", c);
- if (UNW_TRY_METHOD (UNW_ARM_METHOD_EXIDX))
- {
- ret = arm_exidx_step (c);
- if (ret >= 0)
- return 1;
- if (ret == -UNW_ESTOPUNWIND)
- return 0;
- }
-
- /* Next, try DWARF-based unwinding. */
+ /* First, try DWARF-based unwinding. */
if (UNW_TRY_METHOD(UNW_ARM_METHOD_DWARF))
{
ret = dwarf_step (&c->dwarf);
@@ -101,6 +92,18 @@ unw_step (unw_cursor_t *cursor)
}
}
+ /* Next, try extbl-based unwinding. */
+ if (UNW_TRY_METHOD (UNW_ARM_METHOD_EXIDX))
+ {
+ ret = arm_exidx_step (c);
+ if (ret >= 0)
+ return 1;
+ if (ret == -UNW_ESTOPUNWIND)
+ return 0;
+ }
+
+ /* Fall back on APCS frame parsing.
+ Note: This won't work in case the ARM EABI is used. */
if (unlikely (ret < 0))
{
if (UNW_TRY_METHOD(UNW_ARM_METHOD_FRAME))
--
1.7.4.1
- [Libunwind-devel] [PATCH 0/8] ARM extbl enhancements and fixes, Ken Werner, 2011/03/23
- [Libunwind-devel] [PATCH 4/8] Prefer to unwind using DWARF info on ARM.,
Ken Werner <=
- [Libunwind-devel] [PATCH 3/8] ARM extbl cleanup., Ken Werner, 2011/03/23
- [Libunwind-devel] [PATCH 8/8] Add test-static-link to the .gitignore file., Ken Werner, 2011/03/23
- [Libunwind-devel] [PATCH 1/8] Have the ARM extbtl-parser operate on the DWARF model directly., Ken Werner, 2011/03/23
- [Libunwind-devel] [PATCH 2/8] Remove the arm-extbl-test., Ken Werner, 2011/03/23
- [Libunwind-devel] [PATCH 6/8] Remove the ARM_EXIDX_TABLE_MALLOC code path., Ken Werner, 2011/03/23
- [Libunwind-devel] [PATCH 7/8] ARM: Return the dwarf.cfa in case the user requests SP/R13., Ken Werner, 2011/03/23
- [Libunwind-devel] [PATCH 5/8] Remove the appname string of the ARM extbl parser., Ken Werner, 2011/03/23