arch-riscv: Correct BootloaderKernelWorkload symbol table (#511)

Currently, the kernel's symbols are shifted by `kernel_paddr_offset`,
which is where the kernel is located in the physcial address space.
However, the symbols are mapped to virtual addresses, which stay the
same even though the physical address space is shifted.

This patch removes the offset for the kernel's symbols virtual
addresses.

Change-Id: I7c35f925777220f56bd8c69bba14c267d2048ade

Signed-off-by: Hoa Nguyen <hn@hnpl.org>
This commit is contained in:
Hoa Nguyen
2023-10-30 09:56:10 -07:00
committed by GitHub
parent d131ff488e
commit 0218103162

View File

@@ -96,11 +96,10 @@ void
BootloaderKernelWorkload::loadKernelSymbolTable()
{
if (params().kernel_filename != "") {
Addr kernel_paddr_offset = params().kernel_addr;
kernel = loader::createObjectFile(params().kernel_filename);
kernelSymbolTable = kernel->symtab();
auto renamedKernelSymbolTable = \
kernelSymbolTable.offset(kernel_paddr_offset)->rename(
kernelSymbolTable.rename(
[](std::string &name) {
name = "kernel." + name;
}