Implement first intrinsics for output

This commit is contained in:
2024-03-20 17:56:38 +01:00
parent c210c55a17
commit a78e08521e
13 changed files with 221 additions and 214 deletions

View File

@ -204,22 +204,19 @@ namespace elna::riscv
for (auto& reference : _visitor.references)
{
ELFIO::Elf_Word relocated_symbol{ 0 };
ELFIO::Elf_Word relocated_symbol = lookup(syma, reference.name);
switch (reference.target)
{
case address_t::high20:
relocated_symbol = lookup(syma, reference.name);
rela.add_entry(reference.offset, relocated_symbol, 26 /* ELFIO::R_RISCV_HI20 */);
rela.add_entry(reference.offset, relocated_symbol, 51 /* ELFIO::R_RISCV_RELAX */);
break;
case address_t::lower12i:
relocated_symbol = lookup(syma, reference.name);
rela.add_entry(reference.offset, relocated_symbol, 27 /* ELFIO::R_RISCV_LO12_I */);
rela.add_entry(reference.offset, relocated_symbol, 51 /* ELFIO::R_RISCV_RELAX */);
break;
case address_t::text:
relocated_symbol = lookup(syma, "printf");
rela.add_entry(reference.offset, relocated_symbol, 18 /* ELFIO::R_RISCV_CALL */);
rela.add_entry(reference.offset, relocated_symbol, 51 /* ELFIO::R_RISCV_RELAX */);
break;