summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2010-12-02 15:14:07 +0000
committerJosé Fonseca <jfonseca@vmware.com>2010-12-02 15:14:58 +0000
commit50a52ba67e06fa00e06d19370a0478a85f9011be (patch)
tree2695235052f1cb1d9cf4b46fad5187d49b792dbd
parent744ef8721b5ce0f6ea7f5a82d437e48d731803e3 (diff)
util: __builtin_frame_address() doesn't work on mingw.
-rw-r--r--src/gallium/auxiliary/util/u_debug_stack.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/util/u_debug_stack.c b/src/gallium/auxiliary/util/u_debug_stack.c
index 528a1c394b..24e039fd22 100644
--- a/src/gallium/auxiliary/util/u_debug_stack.c
+++ b/src/gallium/auxiliary/util/u_debug_stack.c
@@ -48,7 +48,10 @@ debug_backtrace_capture(struct debug_stack_frame *backtrace,
if(!nr_frames)
return;
-#if defined(PIPE_CC_GCC)
+#if defined(PIPE_CC_GCC) && defined(PIPE_ARCH_X86)
+ __asm__ __volatile__("mov (%%ebp),%0": "=r" (frame_pointer));
+ frame_pointer = (const void **)frame_pointer[0];
+#elif defined(PIPE_CC_GCC)
frame_pointer = ((const void **)__builtin_frame_address(1));
#elif defined(PIPE_CC_MSVC) && defined(PIPE_ARCH_X86)
__asm {