add public API

This commit is contained in:
Patrick Lipka 2025-08-18 17:09:59 +02:00
parent a72ba8066c
commit 7112c1cccf
1 changed files with 34 additions and 0 deletions

View File

@ -326,4 +326,38 @@ const char* rvprof_symbols_lookup(void* addr){
// fallback to addresses if we cannot resolve symbols
snprintf(g_tmp_func_name, sizeof(g_tmp_func_name), "func_%p", addr);
return g_tmp_func_name;
}
// public API
rvprof_error_t rvprof_symbols_init(const char* program_path){
// option 1: provided path
if (program_path && parse_elf_symbols(program_path) == 0){
return RVPROF_SUCCESS;
}
// option 2: try /proc/self/exe (Linux only)
if (parse_elf_symbols("/proc/self/exe") == 0){
return RVPROF_SUCCESS;
}
// option 3: try typical paths
const char* fallbacks[] = {
"a.out",
"./a.out",
NULL
};
for (int i=0; fallbacks[i]; i++){
if (parse_elf_symbols(fallbacks[i]) == 0){
return RVPROF_SUCCESS;
}
}
// symbol loading failed, fall back to addresses
return RVPROF_ERROR_SYMBOLS;
}
void rvprof_symbols_cleanup(void){
symbol_array_cleanup(&g_rvprof.symbols);
g_rvprof.symbols_loaded = 0;
}