From bd5969fc876a10b18613302db7087ef3c40f18e1 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Thu, 7 Mar 2024 17:28:00 -0500 Subject: lib: Add mlibc Signed-off-by: Ian Moffett --- lib/mlibc/options/rtdl/riscv64/elf.hpp | 37 ++++++++++++++++++++++++++++++++ lib/mlibc/options/rtdl/riscv64/entry.S | 11 ++++++++++ lib/mlibc/options/rtdl/riscv64/runtime.S | 5 +++++ 3 files changed, 53 insertions(+) create mode 100644 lib/mlibc/options/rtdl/riscv64/elf.hpp create mode 100644 lib/mlibc/options/rtdl/riscv64/entry.S create mode 100644 lib/mlibc/options/rtdl/riscv64/runtime.S (limited to 'lib/mlibc/options/rtdl/riscv64') diff --git a/lib/mlibc/options/rtdl/riscv64/elf.hpp b/lib/mlibc/options/rtdl/riscv64/elf.hpp new file mode 100644 index 0000000..5d7039a --- /dev/null +++ b/lib/mlibc/options/rtdl/riscv64/elf.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include + +#define ELF_CLASS ELFCLASS64 +#define ELF_MACHINE EM_RISCV + +using elf_ehdr = Elf64_Ehdr; +using elf_phdr = Elf64_Phdr; +using elf_dyn = Elf64_Dyn; +using elf_rel = Elf64_Rel; +using elf_rela = Elf64_Rela; +using elf_relr = Elf64_Relr; +using elf_sym = Elf64_Sym; +using elf_addr = Elf64_Addr; + +using elf_info = Elf64_Xword; +using elf_addend = Elf64_Sxword; + +#define ELF_R_SYM ELF64_R_SYM +#define ELF_R_TYPE ELF64_R_TYPE +#define ELF_ST_BIND ELF64_ST_BIND + +#define R_NONE R_RISCV_NONE +#define R_JUMP_SLOT R_RISCV_JUMP_SLOT +#define R_ABSOLUTE R_RISCV_64 +#define R_GLOB_DAT R_RISCV_64 +#define R_RELATIVE R_RISCV_RELATIVE +#define R_IRELATIVE R_RISCV_IRELATIVE +// #define R_OFFSET +#define R_COPY R_RISCV_COPY +#define R_TLS_DTPMOD R_RISCV_TLS_DTPMOD64 +#define R_TLS_DTPREL R_RISCV_TLS_DTPREL64 +#define R_TLS_TPREL R_RISCV_TLS_TPREL64 +#define R_TLSDESC R_RISCV_TLSDESC + +#define TP_TCB_OFFSET 0 diff --git a/lib/mlibc/options/rtdl/riscv64/entry.S b/lib/mlibc/options/rtdl/riscv64/entry.S new file mode 100644 index 0000000..b7cf854 --- /dev/null +++ b/lib/mlibc/options/rtdl/riscv64/entry.S @@ -0,0 +1,11 @@ +.global _start +_start: + call relocateSelf + + mv a0, sp + call interpreterMain + + jr a0 + +.section .note.GNU-stack,"",%progbits + diff --git a/lib/mlibc/options/rtdl/riscv64/runtime.S b/lib/mlibc/options/rtdl/riscv64/runtime.S new file mode 100644 index 0000000..5128fd3 --- /dev/null +++ b/lib/mlibc/options/rtdl/riscv64/runtime.S @@ -0,0 +1,5 @@ +.global pltRelocateStub +pltRelocateStub: + unimp // TODO +.section .note.GNU-stack,"",%progbits + -- cgit v1.2.3