#include "util/u_debug.h"
#include "u_debug_symbol.h"
-#include "u_hash_table.h"
+#include "util/hash_table.h"
#if defined(PIPE_OS_WINDOWS)
if (GetModuleFileNameA(hModule, buffer, sizeof buffer) == sizeof buffer) {
return FALSE;
}
- util_snprintf(buf, size, "%p at %s+0x%lx",
- addr, buffer,
- (unsigned long)((uintptr_t)addr - (uintptr_t)hModule));
+ snprintf(buf, size, "%p at %s+0x%lx",
+ addr, buffer,
+ (unsigned long)((uintptr_t)addr - (uintptr_t)hModule));
return TRUE;
}
}
if (Line.FileName) {
- util_snprintf(buf, size, "%s at %s:%lu", pSymbol->Name, Line.FileName, Line.LineNumber);
+ snprintf(buf, size, "%s at %s:%lu", pSymbol->Name, Line.FileName, Line.LineNumber);
} else {
- util_snprintf(buf, size, "%s", pSymbol->Name);
+ snprintf(buf, size, "%s", pSymbol->Name);
}
return TRUE;
if (!syms) {
return FALSE;
}
- strncpy(buf, syms[0], size);
+ strncpy(buf, syms[0], size - 1);
buf[size - 1] = 0;
free(syms);
return TRUE;
}
#endif /* defined(HAVE_EXECINFO_H) */
- util_snprintf(buf, size, "%p", addr);
+ snprintf(buf, size, "%p", addr);
buf[size - 1] = 0;
}
debug_printf("\t%s\n", buf);
}
-struct util_hash_table* symbols_hash;
+static struct hash_table* symbols_hash;
+#ifdef PIPE_OS_WINDOWS
+static mtx_t symbols_mutex;
+#else
static mtx_t symbols_mutex = _MTX_INITIALIZER_NP;
-
-static unsigned hash_ptr(void* p)
-{
- return (unsigned)(uintptr_t)p;
-}
-
-static int compare_ptr(void* a, void* b)
-{
- if(a == b)
- return 0;
- else if(a < b)
- return -1;
- else
- return 1;
-}
+#endif
const char*
debug_symbol_name_cached(const void *addr)
{
const char* name;
-#ifdef PIPE_SUBSYSTEM_WINDOWS_USER
+#ifdef PIPE_OS_WINDOWS
static boolean first = TRUE;
if (first) {
mtx_lock(&symbols_mutex);
if(!symbols_hash)
- symbols_hash = util_hash_table_create(hash_ptr, compare_ptr);
- name = util_hash_table_get(symbols_hash, (void*)addr);
- if(!name)
- {
+ symbols_hash = _mesa_pointer_hash_table_create(NULL);
+ struct hash_entry *entry = _mesa_hash_table_search(symbols_hash, addr);
+ if (!entry) {
char buf[1024];
debug_symbol_name(addr, buf, sizeof(buf));
- name = util_strdup(buf);
+ name = strdup(buf);
- util_hash_table_set(symbols_hash, (void*)addr, (void*)name);
+ entry = _mesa_hash_table_insert(symbols_hash, addr, (void*)name);
}
mtx_unlock(&symbols_mutex);
- return name;
+ return entry->data;
}