summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Sharma <aruns@google.com>2009-04-24 11:10:08 -0700
committerArun Sharma <aruns@google.com>2009-04-24 11:10:08 -0700
commit4b8404d153c58b95cb4420fc7603fdae62489a31 (patch)
tree9e698d05394b9391a310e6a95b5c4511f213d5cd
parentb483ea3f0e16760c75045042f25372a50527d30f (diff)
downloadlibunwind-v0.99-stable.tar.gz
Remove the special casing of ia64 for GetIPInfo()v0.99v0.99-stable
This rule (no IP adjustment on ia64) may be correct for locating the right FDE. Unfortunately the same adjusted/unadjusted return address is being used also by __gxx_personality_v0() to locate the right call-site (the try {} block) for unwinding. And this case is already sensitive for off-by-one PC values. Unlike the FDE location where the function prologue + epilogue make it immune against off-by-one PC calculations. Therefore suggesting to unify it with non-ia64 case. Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
-rw-r--r--src/Makefile.am9
-rw-r--r--src/ia64/unwind_GetIPInfo.c43
2 files changed, 2 insertions, 50 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index c08fb4a6..e6e3b330 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -69,13 +69,8 @@ libunwind_la_SOURCES_local_unwind = \
unwind/GetGR.c unwind/GetIP.c unwind/GetLanguageSpecificData.c \
unwind/GetRegionStart.c unwind/GetTextRelBase.c \
unwind/RaiseException.c unwind/Resume.c \
- unwind/Resume_or_Rethrow.c unwind/SetGR.c unwind/SetIP.c
-
-if ARCH_IA64
-libunwind_la_SOURCES_local_unwind += ia64/unwind_GetIPInfo.c
-else
-libunwind_la_SOURCES_local_unwind += unwind/GetIPInfo.c
-endif # ARCH_IA64
+ unwind/Resume_or_Rethrow.c unwind/SetGR.c unwind/SetIP.c \
+ unwind/GetIPInfo.c
# _ReadULEB()/_ReadSLEB() are needed for Intel C++ 8.0 compatibility
libunwind_la_SOURCES_os_linux_local = mi/_ReadULEB.c mi/_ReadSLEB.c
diff --git a/src/ia64/unwind_GetIPInfo.c b/src/ia64/unwind_GetIPInfo.c
deleted file mode 100644
index dfdf5e83..00000000
--- a/src/ia64/unwind_GetIPInfo.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* libunwind - a platform-independent unwind library
- Copyright (C) 2009 Red Hat
- Contributed by Jan Kratochvil <jan.kratochvil@redhat.com>
-
-This file is part of libunwind.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-
-#include "../unwind/unwind-internal.h"
-
-/* gcc/unwind-dw2.c: Retrieve the return address and flag whether that IP is
- before or after first not yet fully executed instruction.
- IP_BEFORE_INSN ensures leaving IP intact as was designed for ia64. */
-
-PROTECTED unsigned long
-_Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn)
-{
- unw_word_t val;
-
- unw_get_reg (&context->cursor, UNW_REG_IP, &val);
- *ip_before_insn = 1;
- return val;
-}
-
-unsigned long __libunwind_Unwind_GetIPInfo (struct _Unwind_Context *, int *)
- ALIAS (_Unwind_GetIPInfo);