[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Libunwind-devel] [PATCH 21/27] ARM: fix with-signal-frame local unw_res
From: |
Tommi Rantala |
Subject: |
[Libunwind-devel] [PATCH 21/27] ARM: fix with-signal-frame local unw_resume() |
Date: |
Wed, 22 Aug 2012 14:28:47 +0300 |
Make sure that the `sigcontext_addr' cursor member is pointing to the
`struct sigcontext' as expected in arm_local_resume().
---
src/arm/Gstep.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/arm/Gstep.c b/src/arm/Gstep.c
index 3b7bdbe..b96d5e2 100644
--- a/src/arm/Gstep.c
+++ b/src/arm/Gstep.c
@@ -1,6 +1,7 @@
/* libunwind - a platform-independent unwind library
Copyright (C) 2008 CodeSourcery
Copyright 2011 Linaro Limited
+ Copyright (C) 2012 Tommi Rantala <address@hidden>
This file is part of libunwind.
@@ -111,7 +112,6 @@ unw_handle_signal_frame (unw_cursor_t *cursor)
c->sigcontext_format = ARM_SCF_LINUX_OLD_SIGFRAME;
sc_addr = sp_addr;
}
- c->sigcontext_addr = sp_addr;
}
else if (ret == 2)
{
@@ -120,18 +120,19 @@ unw_handle_signal_frame (unw_cursor_t *cursor)
if (sp == sp_addr + 8)
{
c->sigcontext_format = ARM_SCF_LINUX_OLD_RT_SIGFRAME;
- c->sigcontext_addr = sp_addr + 8 + sizeof (siginfo_t);
+ sc_addr = sp_addr + 8 + sizeof (siginfo_t) + LINUX_UC_MCONTEXT_OFF;
}
else
{
c->sigcontext_format = ARM_SCF_LINUX_RT_SIGFRAME;
- c->sigcontext_addr = sp_addr + sizeof (siginfo_t);
+ sc_addr = sp_addr + sizeof (siginfo_t) + LINUX_UC_MCONTEXT_OFF;
}
- sc_addr = c->sigcontext_addr + LINUX_UC_MCONTEXT_OFF;
}
else
return -UNW_EUNSPEC;
+ c->sigcontext_addr = sc_addr;
+
/* Update the dwarf cursor.
Set the location of the registers to the corresponding addresses of the
uc_mcontext / sigcontext structure contents. */
--
1.7.9.5
- [Libunwind-devel] [PATCH 14/27] ARM: implement dwarf_to_unw_regnum() macro without table, (continued)
- [Libunwind-devel] [PATCH 14/27] ARM: implement dwarf_to_unw_regnum() macro without table, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 17/27] Use constants for ELF magic bytes in _UCD_create.c, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 23/27] Avoid -Wunused-value warning in tests/Gtest-exc.c, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 18/27] Remove unneeded length modifier from suppressed match in sscanf() format in tests/crasher.c, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 19/27] Fix memory leaks in unw_create_addr_space() wrong-endian error paths, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 16/27] Fix plain return from main() in tests/test-async-sig.c, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 22/27] test-resume-sig-rt: test unw_resume() in presence of "realtime" signal frame, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 25/27] Place `inline' at beginning of declaration of invalidate_edi(), Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 20/27] ARM: fix non-signal-frame local unw_resume() due to compiler optimization cleverness, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 21/27] ARM: fix with-signal-frame local unw_resume(),
Tommi Rantala <=
- [Libunwind-devel] [PATCH 24/27] Flush icache with __builtin___clear_cache() in tests when compiling with GCC, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 26/27] Fix function name duplication in Debug() output, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 27/27] Add missing newline to debug message in _UCD_access_reg_linux.c, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 02/27] HPPA: add `global_cache' member to unw_addr_space struct, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 09/27] Run `autoupdate' to stop using obsoleted macros in `configure.in', Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 01/27] HPPA: fix tdep_put_unwind_info() macro, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 06/27] Eliminate unused parameters in tests, Tommi Rantala, 2012/08/22
- [Libunwind-devel] [PATCH 07/27] Annotate unused parameters in tests, Tommi Rantala, 2012/08/22