Module: Mesa Branch: debug-refcnt-2 Commit: 9b907e118acf20bf7bfbab9692f8de5bf7de98fa URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9b907e118acf20bf7bfbab9692f8de5bf7de98fa
Author: Luca Barbieri <l...@luca-barbieri.com> Date: Wed Aug 18 00:38:19 2010 +0200 u_debug_symbol: support getting a string without output --- src/gallium/auxiliary/util/u_debug_symbol.c | 36 +++++++++++++++++--------- src/gallium/auxiliary/util/u_debug_symbol.h | 3 ++ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/gallium/auxiliary/util/u_debug_symbol.c b/src/gallium/auxiliary/util/u_debug_symbol.c index 6e25057..1f71c1d 100644 --- a/src/gallium/auxiliary/util/u_debug_symbol.c +++ b/src/gallium/auxiliary/util/u_debug_symbol.c @@ -33,6 +33,7 @@ */ #include "pipe/p_compiler.h" +#include "u_string.h" #include "u_debug.h" #include "u_debug_symbol.h" @@ -113,8 +114,8 @@ BOOL WINAPI j_SymGetSymFromAddr(HANDLE hProcess, DWORD Address, PDWORD Displacem } -static INLINE boolean -debug_symbol_print_imagehlp(const void *addr) +static INLINE void +debug_symbol_name_imagehlp(const void *addr, char* buf, unsigned size) { HANDLE hProcess; BYTE symbolBuffer[1024]; @@ -133,23 +134,32 @@ debug_symbol_print_imagehlp(const void *addr) } if(!j_SymGetSymFromAddr(hProcess, (DWORD)addr, &dwDisplacement, pSymbol)) - return FALSE; - - debug_printf("\t%s\n", pSymbol->Name); - - return TRUE; - + buf[0] = 0; + else + { + strncpy(buf, pSymbol->Name, size); + buf[size - 1] = 0; + } } #endif - void -debug_symbol_print(const void *addr) +debug_symbol_name(const void *addr, char* buf, unsigned size) { #if defined(PIPE_SUBSYSTEM_WINDOWS_USER) && defined(PIPE_ARCH_X86) - if(debug_symbol_print_imagehlp(addr)) + debug_symbol_name_imagehlp(addr, buf, size); + if(buf[0]) return; #endif - - debug_printf("\t%p\n", addr); + + util_snprintf(buf, size, "%p", addr); + buf[size - 1] = 0; +} + +void +debug_symbol_print(const void *addr) +{ + char buf[1024]; + debug_symbol_name(addr, buf, sizeof(buf)); + debug_printf("\t%s\n", buf); } diff --git a/src/gallium/auxiliary/util/u_debug_symbol.h b/src/gallium/auxiliary/util/u_debug_symbol.h index 0215869..5e283e5 100644 --- a/src/gallium/auxiliary/util/u_debug_symbol.h +++ b/src/gallium/auxiliary/util/u_debug_symbol.h @@ -43,6 +43,9 @@ extern "C" { void +debug_symbol_name(const void *addr, char* buf, unsigned size); + +void debug_symbol_print(const void *addr); _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit