This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
ARM EABI: fix stacktraces
- From: Andrew Haley <aph-gcc at littlepinkcloud dot COM>
- To: java-patches at gcc dot gnu dot org
- Date: Wed, 29 Aug 2007 16:53:59 +0100
- Subject: ARM EABI: fix stacktraces
This is, I hope, the last libgcj patch before merging EABI gcj support
to trunk.
Andrew.
2007-08-29 Andrew Haley <aph@redhat.com>
* gnu/classpath/natVMStackWalker.cc (VMStackWalker::getCallingClass):
Make sure we're not sibcalled.
(GET_CALLING_CLASS): Define for ARM EABI.
Index: gnu/classpath/natVMStackWalker.cc
===================================================================
--- gnu/classpath/natVMStackWalker.cc (revision 127733)
+++ gnu/classpath/natVMStackWalker.cc (working copy)
@@ -45,8 +45,10 @@
\
klass; \
})
-#else
-#define GET_CALLING_CLASS(PC) NULL
+#else // __ARM_EABI_UNWINDER__
+// ARM EABI doesn't support _Unwind_FindEnclosingFunction.
+#define GET_CALLING_CLASS(PC) \
+ (_Jv_StackTrace::GetStackWalkerCallingClass ())
#endif
JArray<jclass> *
@@ -63,14 +65,18 @@
gnu::classpath::VMStackWalker::getCallingClass(void)
{
_Jv_InitClass (&::gnu::classpath::VMStackWalker::class$);
- return _Jv_StackTrace::GetStackWalkerCallingClass ();
+ jclass result = _Jv_StackTrace::GetStackWalkerCallingClass ();
+ __asm__ __volatile__ ("" : : "g" (result));
+ return result;
}
jclass
gnu::classpath::VMStackWalker::getCallingClass(::gnu::gcj::RawData *pc)
{
_Jv_InitClass (&::gnu::classpath::VMStackWalker::class$);
- return GET_CALLING_CLASS(pc);
+ jclass result = GET_CALLING_CLASS(pc);
+ __asm__ __volatile__ ("" : : "g" (result));
+ return result;
}
::java::lang::ClassLoader *