get_symbol_name: handle case where sys/moon.sym is not present in the initial ramdisk
This commit is contained in:
parent
f640e3d248
commit
57b330e907
@ -7,7 +7,7 @@
|
|||||||
extern int kernel_start;
|
extern int kernel_start;
|
||||||
extern int kernel_end;
|
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)
|
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)
|
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)
|
while (address >= (uintptr_t)&kernel_start && address <= (uintptr_t)&kernel_end)
|
||||||
{
|
{
|
||||||
char addr_as_str[60];
|
char addr_as_str[60];
|
||||||
|
Loading…
Reference in New Issue
Block a user