How to traceback call stack on MIPS arch?
Andrew Haley
aph@redhat.com
Tue Jan 8 21:25:00 GMT 2008
PRC writes:
> Gcc saves the frame pointer to fp(s8) register at the beginning of
> each function if compiling source with -O0. But it won't do so if
> compiling source with -O2. Without frame pointers, can I trace back
> call stacks in current function context? Or is there any option
> which forces gcc to save frame pointers for MIPS arch?
You need to use the unwinder.
#include <unwind.h>
#include <stdio.h>
static _Unwind_Reason_Code
backtrace_helper (struct _Unwind_Context *ctx, void *a)
{
void *ip = (void*)_Unwind_GetIP (ctx);
fprintf (stdout, " %p\n", ip);
return _URC_NO_REASON;
}
void
print_backtrace (void)
{
_Unwind_Backtrace (backtrace_helper, NULL);
}
int
main (int argc, char **argv)
{
print_backtrace ();
return 0;
}
--
Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 1TE, UK
Registered in England and Wales No. 3798903
More information about the Gcc-help
mailing list