ARM EABI: fix stacktraces
Andrew Haley
aph-gcc@littlepinkcloud.COM
Wed Aug 29 15:54:00 GMT 2007
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 *
More information about the Java-patches
mailing list