From a72ba8066cdedd2e9e99851f2f8c71df6bcccdf7 Mon Sep 17 00:00:00 2001 From: Patrick Lipka Date: Mon, 18 Aug 2025 17:01:41 +0200 Subject: [PATCH] bugfixes --- src/rvprof_symbols.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/rvprof_symbols.c b/src/rvprof_symbols.c index d166897..4da63fe 100644 --- a/src/rvprof_symbols.c +++ b/src/rvprof_symbols.c @@ -14,7 +14,7 @@ static int g_base_address_calculated = 0; // base address calculatiion -static void calculate_base_address(void* known_runtime_addr, uintptr_t known_elf_addr){ +static void calculate_base_address_offset(void* known_runtime_addr, uintptr_t known_elf_addr){ if (g_base_address_calculated) return; uintptr_t runtime_addr = (uintptr_t)known_runtime_addr; @@ -94,7 +94,7 @@ static int parse_elf_symbols(const char* filepath){ } unsigned char* elf_data = (unsigned char*)mapped; - if (elf_data[0] != 0x7f || elf_data[1] != 'E' || elf_data[2] != 'L' || elf_data != 'F'){ + if (elf_data[0] != 0x7f || elf_data[1] != 'E' || elf_data[2] != 'L' || elf_data[3] != 'F'){ // not an ELF file munmap(mapped, st.st_size); return -1; @@ -227,7 +227,7 @@ static int parse_elf_symbols(const char* filepath){ // sort symbols by address for quick binary search if (g_rvprof.symbols.size > 0){ - qsort(g_rvprof.symbols.data, g_rvprof.symbols.size, sizeof(symbol_entry_t), symbol_compare); + qsort(g_rvprof.symbols.data, g_rvprof.symbols.size, sizeof(symbol_entry_t), compare_symbol); g_rvprof.symbols_loaded = 1; } @@ -309,21 +309,21 @@ const char* rvprof_symbols_lookup(void* addr){ // if symbol has size info, check if address is within range if (sym->size > 0) { if (adjusted_addr >= sym->addr && adjusted_addr < sym->addr + sym->size){ - strncpy(g_temp_func_name, sym->name, sizeof(g_temp_func_name) - 1); - g_temp_func_name[sizeof(g_temp_func_name) - 1] = '\0'; - return g_temp_func_name; + strncpy(g_tmp_func_name, sym->name, sizeof(g_tmp_func_name) - 1); + g_tmp_func_name[sizeof(g_tmp_func_name) - 1] = '\0'; + return g_tmp_func_name; } } else { // no size info, use 64 KB heuristic: must be within reasonable range if (adjusted_addr >= sym->addr && (adjusted_addr - sym->addr) < 0x10000){ - strncpy(g_temp_func_name, sym->name, sizeof(g_temp_func_name) - 1); - g_temp_func_name[sizeof(g_temp_func_name) - 1] = '\0'; - return g_temp_func_name; + strncpy(g_tmp_func_name, sym->name, sizeof(g_tmp_func_name) - 1); + g_tmp_func_name[sizeof(g_tmp_func_name) - 1] = '\0'; + return g_tmp_func_name; } } } // fallback to addresses if we cannot resolve symbols - snprintf(g_temp_func_name, sizeof(g_temp_func_name), "func_%p", addr); - return g_temp_func_name; + snprintf(g_tmp_func_name, sizeof(g_tmp_func_name), "func_%p", addr); + return g_tmp_func_name; } \ No newline at end of file