util: __builtin_frame_address() doesn't work on mingw.
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 2 Dec 2010 15:14:07 +0000 (15:14 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Thu, 2 Dec 2010 15:14:58 +0000 (15:14 +0000)
src/gallium/auxiliary/util/u_debug_stack.c

index 528a1c394befa0bf1dbb810f1c184cd968d9a5d7..24e039fd226aa2d5f3e6f5331808a9dc2a6f2a18 100644 (file)
@@ -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 {