From 57b330e907170720383a233c9b9920011c86065b Mon Sep 17 00:00:00 2001 From: apio Date: Sat, 24 Sep 2022 21:38:36 +0200 Subject: [PATCH] get_symbol_name: handle case where sys/moon.sym is not present in the initial ramdisk --- kernel/src/trace/Resolve.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/src/trace/Resolve.cpp b/kernel/src/trace/Resolve.cpp index ffae62dd..3afd9355 100644 --- a/kernel/src/trace/Resolve.cpp +++ b/kernel/src/trace/Resolve.cpp @@ -7,7 +7,7 @@ extern int kernel_start; extern int kernel_end; -static InitRD::File symbol_map = {"", 0, 0, 0}; +static InitRD::File symbol_map = {"", 0, 0, (void*)-1}; static size_t symbol_strlen(const char* symbol) { @@ -19,7 +19,8 @@ static size_t symbol_strlen(const char* symbol) void get_symbol_name(uintptr_t address, char* buffer) { - if (!symbol_map.addr) { symbol_map = InitRD::open("sys/moon.sym"); } + if (symbol_map.addr == (void*)-1) { symbol_map = InitRD::open("sys/moon.sym"); } + if (!symbol_map.addr) { strncpy(buffer, "(no symbols loaded)", 20); } while (address >= (uintptr_t)&kernel_start && address <= (uintptr_t)&kernel_end) { char addr_as_str[60];