From 14e9e8c64c32b788fa463ea94ff9b0d8cdccf1b3 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 22 Oct 2004 22:16:49 +0000 Subject: [PATCH] make x86-64 backtracing work --- stepmania/src/archutils/Unix/Backtrace.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/stepmania/src/archutils/Unix/Backtrace.cpp b/stepmania/src/archutils/Unix/Backtrace.cpp index 6b6a40cce7..4655240545 100644 --- a/stepmania/src/archutils/Unix/Backtrace.cpp +++ b/stepmania/src/archutils/Unix/Backtrace.cpp @@ -366,6 +366,7 @@ static void do_backtrace( const void **buf, size_t size, const BacktraceContext buf[i] = NULL; } +#if defined(CPU_X86) void GetSignalBacktraceContext( BacktraceContext *ctx, const ucontext_t *uc ) { ctx->ip = (void *) uc->uc_mcontext.gregs[REG_EIP]; @@ -373,6 +374,17 @@ void GetSignalBacktraceContext( BacktraceContext *ctx, const ucontext_t *uc ) ctx->sp = (void *) uc->uc_mcontext.gregs[REG_ESP]; ctx->pid = GetCurrentThreadId(); } +#elif defined(CPU_X86_64) +void GetSignalBacktraceContext( BacktraceContext *ctx, const ucontext_t *uc ) +{ + ctx->ip = (void *) uc->uc_mcontext.gregs[REG_RIP]; + ctx->bp = (void *) uc->uc_mcontext.gregs[REG_RBP]; + ctx->sp = (void *) uc->uc_mcontext.gregs[REG_RSP]; + ctx->pid = GetCurrentThreadId(); +} +#else +#error +#endif void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx ) {