cleanup
This commit is contained in:
@@ -171,22 +171,22 @@ static void do_backtrace( const void **buf, size_t size, const BacktraceContext
|
|||||||
get_readable_ranges( readable_begin, readable_end, 1024 );
|
get_readable_ranges( readable_begin, readable_end, 1024 );
|
||||||
|
|
||||||
/* Find the stack memory blocks. */
|
/* Find the stack memory blocks. */
|
||||||
const int stack_block1 = find_address( (void *) ctx->ebp, readable_begin, readable_end );
|
const int stack_block1 = find_address( ctx->ebp, readable_begin, readable_end );
|
||||||
const int stack_block2 = find_address( SavedStackPointer, readable_begin, readable_end );
|
const int stack_block2 = find_address( SavedStackPointer, readable_begin, readable_end );
|
||||||
|
|
||||||
/* This matches the layout of the stack. The frame pointer makes the
|
/* This matches the layout of the stack. The frame pointer makes the
|
||||||
* stack a linked list. */
|
* stack a linked list. */
|
||||||
struct StackFrame
|
struct StackFrame
|
||||||
{
|
{
|
||||||
StackFrame *link;
|
const StackFrame *link;
|
||||||
char *return_address;
|
const void *return_address;
|
||||||
};
|
};
|
||||||
|
|
||||||
StackFrame *frame = (StackFrame *) ctx->ebp;
|
const StackFrame *frame = (StackFrame *) ctx->ebp;
|
||||||
|
|
||||||
unsigned i=0;
|
unsigned i=0;
|
||||||
if( i < size-1 && ctx->eip ) // -1 for NULL
|
if( i < size-1 && ctx->eip ) // -1 for NULL
|
||||||
buf[i++] = (void *) ctx->eip;
|
buf[i++] = ctx->eip;
|
||||||
|
|
||||||
while( i < size-1 ) // -1 for NULL
|
while( i < size-1 ) // -1 for NULL
|
||||||
{
|
{
|
||||||
@@ -213,8 +213,8 @@ static void do_backtrace( const void **buf, size_t size, const BacktraceContext
|
|||||||
|
|
||||||
void GetSignalBacktraceContext( BacktraceContext *ctx, const ucontext_t *uc )
|
void GetSignalBacktraceContext( BacktraceContext *ctx, const ucontext_t *uc )
|
||||||
{
|
{
|
||||||
ctx->eip = (long) uc->uc_mcontext.gregs[REG_EIP];
|
ctx->eip = (void *) uc->uc_mcontext.gregs[REG_EIP];
|
||||||
ctx->ebp = (long) uc->uc_mcontext.gregs[REG_EBP];
|
ctx->ebp = (void *) uc->uc_mcontext.gregs[REG_EBP];
|
||||||
ctx->pid = GetCurrentThreadId();
|
ctx->pid = GetCurrentThreadId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,8 +227,8 @@ void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx )
|
|||||||
{
|
{
|
||||||
ctx = &CurrentCtx;
|
ctx = &CurrentCtx;
|
||||||
|
|
||||||
CurrentCtx.eip = 0;
|
CurrentCtx.eip = NULL;
|
||||||
CurrentCtx.ebp = (long) __builtin_frame_address(0);
|
CurrentCtx.ebp = __builtin_frame_address(0);
|
||||||
CurrentCtx.pid = GetCurrentThreadId();
|
CurrentCtx.pid = GetCurrentThreadId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
struct BacktraceContext
|
struct BacktraceContext
|
||||||
{
|
{
|
||||||
#if defined(LINUX)
|
#if defined(LINUX)
|
||||||
long eip, ebp;
|
const void *eip, *ebp;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -176,8 +176,8 @@ bool GetThreadBacktraceContext( int ThreadID, BacktraceContext *ctx )
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
ctx->pid = ThreadID;
|
ctx->pid = ThreadID;
|
||||||
ctx->eip = regs.eip;
|
ctx->eip = (void *) regs.eip;
|
||||||
ctx->ebp = regs.ebp;
|
ctx->ebp = (void *) regs.ebp;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user