* @author Jose Fonseca <jfonseca@vmware.com>
*/
-#include "u_debug.h"
+#include "util/u_debug.h"
#include "u_debug_symbol.h"
#include "u_debug_stack.h"
procname[1] = 0;
}
- asprintf(&name, "%s%s", procname, ret == -UNW_ENOMEM ? "..." : "");
-
+ if (asprintf(&name, "%s%s", procname, ret == -UNW_ENOMEM ? "..." : "") == -1)
+ name = "??";
util_hash_table_set(symbols_hash, addr, (void*)name);
}
mtx_unlock(&symbols_mutex);
frame_ip(&backtrace[i]));
}
}
-
+#elif defined(ANDROID)
+ /* Not implemented here; see u_debug_stack_android.cpp */
#else /* ! HAVE_LIBUNWIND */
#if defined(PIPE_OS_WINDOWS)
}
#endif
-#if defined(PIPE_CC_GCC)
+#if defined(PIPE_CC_GCC) && (PIPE_CC_GCC_VERSION > 404) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wframe-address"
frame_pointer = ((const void **)__builtin_frame_address(1));
+#pragma GCC diagnostic pop
#elif defined(PIPE_CC_MSVC) && defined(PIPE_ARCH_X86)
__asm {
mov frame_pointer, ebp