static drsym_error_t drsym_enumerate_symbols_local(const char *modpath, drsym_enumerate_cb callback, drsym_enumerate_ex_cb callback_ex, size_t info_size, void *data, uint flags) { void *mod; drsym_error_t r; if (modpath == NULL || (callback == NULL && callback_ex == NULL)) return DRSYM_ERROR_INVALID_PARAMETER; dr_recurlock_lock(symbol_lock); mod = lookup_or_load(modpath); if (mod == NULL) { dr_recurlock_unlock(symbol_lock); return DRSYM_ERROR_LOAD_FAILED; } recursive_context = true; r = drsym_unix_enumerate_symbols(mod, callback, callback_ex, info_size, data, flags); recursive_context = false; dr_recurlock_unlock(symbol_lock); return r; }
static drsym_error_t drsym_enumerate_symbols_local(const char *modpath, drsym_enumerate_cb callback, void *data, uint flags) { void *mod; drsym_error_t r; if (modpath == NULL || callback == NULL) return DRSYM_ERROR_INVALID_PARAMETER; dr_mutex_lock(symbol_lock); mod = lookup_or_load(modpath); if (mod == NULL) { dr_mutex_unlock(symbol_lock); return DRSYM_ERROR_LOAD_FAILED; } r = drsym_unix_enumerate_symbols(mod, callback, data, flags); dr_mutex_unlock(symbol_lock); return r; }