X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=libjava%2Fstacktrace.cc;h=d8d1f38ae6c8b2be22a2258727f51dfb202881a4;hb=5b5b0fa908dc2042ef1b837d31b44560ee7420a8;hp=5751e29b5f1e0c59c069de3052b6760b2d5ff73e;hpb=97b8365cafc3a344a22d3980b8ed885f5c6d8357;p=gcc.git diff --git a/libjava/stacktrace.cc b/libjava/stacktrace.cc index 5751e29b5f1..d8d1f38ae6c 100644 --- a/libjava/stacktrace.cc +++ b/libjava/stacktrace.cc @@ -39,6 +39,10 @@ using namespace java::lang::reflect; using namespace java::util; using namespace gnu::gcj::runtime; +#ifdef __ARM_EABI_UNWINDER__ +#define _URC_NORMAL_STOP _URC_FAILURE +#endif + // Maps ncode values to their containing native class. // NOTE: Currently this Map contradicts class GC for native classes. This map // (and the "new class stack") will need to use WeakReferences in order to @@ -131,21 +135,23 @@ _Jv_StackTrace::UnwindTraceFn (struct _Unwind_Context *context, void *state_ptr) if (func_addr == UNWRAP_FUNCTION_DESCRIPTOR (interp_run)) { state->frames[pos].type = frame_interpreter; - state->frames[pos].interp.meth = state->interp_frame->self; + _Jv_Frame *frame = static_cast<_Jv_Frame *> (state->interp_frame); + state->frames[pos].interp.meth + = static_cast<_Jv_InterpMethod *> (frame->self); state->frames[pos].interp.pc = state->interp_frame->pc; - state->interp_frame = state->interp_frame->next; + state->interp_frame = state->interp_frame->next_interp; } else -#endif // We handle proxies in the same way as interpreted classes if (_Jv_is_proxy (func_addr)) { state->frames[pos].type = frame_proxy; state->frames[pos].proxyClass = state->interp_frame->proxyClass; state->frames[pos].proxyMethod = state->interp_frame->proxyMethod; - state->interp_frame = state->interp_frame->next; + state->interp_frame = state->interp_frame->next_interp; } else +#endif { #ifdef HAVE_GETIPINFO _Unwind_Ptr ip;