base,sim: Add the SymbolType field to the Symbol object

Symbol type is part of the info provided by an ELF object's symtab.
It indicates whether a symbol is a file symbol, or a function symbol, etc.

Change-Id: I827e79f8439c47ac9e889734aaf354c653aff530
Signed-off-by: Hoa Nguyen <hn@hnpl.org>
This commit is contained in:
Hoa Nguyen
2023-10-29 03:20:47 +00:00
parent d0113185c6
commit 697cab0544
5 changed files with 305 additions and 107 deletions

View File

@@ -244,9 +244,10 @@ loadsymbol(ThreadContext *tc)
continue;
if (!tc->getSystemPtr()->workload->insertSymbol(
{ loader::Symbol::Binding::Global, symbol, addr })) {
continue;
}
{ loader::Symbol::Binding::Global,
loader::Symbol::SymbolType::Function, symbol, addr })) {
continue;
}
DPRINTF(Loader, "Loaded symbol: %s @ %#llx\n", symbol, addr);
@@ -270,9 +271,13 @@ addsymbol(ThreadContext *tc, Addr addr, Addr symbolAddr)
DPRINTF(Loader, "Loaded symbol: %s @ %#llx\n", symbol, addr);
tc->getSystemPtr()->workload->insertSymbol(
{ loader::Symbol::Binding::Global, symbol, addr });
{ loader::Symbol::Binding::Global,
loader::Symbol::SymbolType::Function, symbol, addr }
);
loader::debugSymbolTable.insert(
{ loader::Symbol::Binding::Global, symbol, addr });
{ loader::Symbol::Binding::Global,
loader::Symbol::SymbolType::Function, symbol, addr }
);
}
uint64_t