From 61363eff0b1e49b76fdea4ba7835e1acbb10498e Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Wed, 29 Mar 2006 11:21:44 +0000 Subject: [PATCH] Use Frame*. --- .../src/archutils/Darwin/DarwinThreadHelpers.cpp | 2 +- stepmania/src/archutils/Unix/Backtrace.cpp | 12 ++++++------ stepmania/src/archutils/Unix/Backtrace.h | 6 +++++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/stepmania/src/archutils/Darwin/DarwinThreadHelpers.cpp b/stepmania/src/archutils/Darwin/DarwinThreadHelpers.cpp index dcdfd1514c..412436de43 100644 --- a/stepmania/src/archutils/Darwin/DarwinThreadHelpers.cpp +++ b/stepmania/src/archutils/Darwin/DarwinThreadHelpers.cpp @@ -35,7 +35,7 @@ bool GetThreadBacktraceContext( uint64_t iID, BacktraceContext *ctx ) if( thread_get_state(thread, PPC_THREAD_STATE, thread_state_t(&state), &count) ) return false; - ctx->FramePtr = (void *)state.r1; + ctx->FramePtr = (const Frame *)state.r1; ctx->PC = (void *)state.srr0; return true; #elif defined(__i386__) diff --git a/stepmania/src/archutils/Unix/Backtrace.cpp b/stepmania/src/archutils/Unix/Backtrace.cpp index b0dfa4c6ad..250cad36d1 100644 --- a/stepmania/src/archutils/Unix/Backtrace.cpp +++ b/stepmania/src/archutils/Unix/Backtrace.cpp @@ -421,17 +421,17 @@ void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx ) } #elif defined(BACKTRACE_METHOD_POWERPC_DARWIN) -typedef struct Frame +struct Frame { Frame *stackPointer; long conditionReg; void *linkReg; -} *FramePtr; +}; void GetSignalBacktraceContext( BacktraceContext *ctx, const ucontext_t *uc ) { - ctx->PC = (void *) uc->uc_mcontext->ss.srr0; - ctx->FramePtr = (void *) uc->uc_mcontext->ss.r1; + ctx->PC = (const void *) uc->uc_mcontext->ss.srr0; + ctx->FramePtr = (const Frame *) uc->uc_mcontext->ss.r1; } void InitializeBacktrace() { } @@ -445,11 +445,11 @@ void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx ) /* __builtin_frame_address is broken on OS X; it sometimes returns bogus results. */ register void *r1 __asm__ ("r1"); - CurrentCtx.FramePtr = (void *) r1; + CurrentCtx.FramePtr = (const Frame *) r1; CurrentCtx.PC = NULL; } - const Frame *frame = (Frame *) ctx->FramePtr; + const Frame *frame = ctx->FramePtr; unsigned i = 0; if( ctx->PC && i < size-1 ) diff --git a/stepmania/src/archutils/Unix/Backtrace.h b/stepmania/src/archutils/Unix/Backtrace.h index 5dac76a73e..cfa5e51a62 100644 --- a/stepmania/src/archutils/Unix/Backtrace.h +++ b/stepmania/src/archutils/Unix/Backtrace.h @@ -3,6 +3,9 @@ /* This API works like backtrace_pointers(), to retrieve a stack trace. */ +#if defined(CPU_PPC) +struct Frame; +#endif /* This contains the information necessary to backtrace a thread. */ struct BacktraceContext { @@ -15,7 +18,8 @@ struct BacktraceContext #endif #if defined(CPU_PPC) - void *FramePtr, *PC; + const Frame *FramePtr; + const void *PC; #endif };