summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/kjarna/interface.h13
-rw-r--r--service/arch/x86_64/dynamic.c43
2 files changed, 6 insertions, 50 deletions
diff --git a/api/kjarna/interface.h b/api/kjarna/interface.h
index 9c0d7fe..d13e5a5 100644
--- a/api/kjarna/interface.h
+++ b/api/kjarna/interface.h
@@ -5,21 +5,8 @@
#define SYSV_ABI __attribute__((sysv_abi))
-struct kjarna_interface
-{
- int (SYSV_ABI *open)(const char *, int, int);
- int (SYSV_ABI *close)(int);
- off_t (SYSV_ABI *lseek)(int, off_t, int);
- ssize_t (SYSV_ABI *read)(int, void *, size_t);
- ssize_t (SYSV_ABI *write)(int, const void *, size_t);
-
- void *(SYSV_ABI *mmap)(void *, size_t, int, int, int, off_t);
- int (SYSV_ABI *munmap)(void *, size_t);
-};
-
struct kjarna_entry_params
{
- struct kjarna_interface *interface;
int argc;
char **argv;
char **envp;
diff --git a/service/arch/x86_64/dynamic.c b/service/arch/x86_64/dynamic.c
index 02538ec..d338dce 100644
--- a/service/arch/x86_64/dynamic.c
+++ b/service/arch/x86_64/dynamic.c
@@ -65,49 +65,18 @@ void kc_dynamic_init(char *base, Elf64_Dyn *dyn)
void *kc_dynamic_link(struct elf64_dso_info *dso, int index)
{
- struct kjarna_interface *ftab = entry_params->interface;
-
+ /*
int symindex = ELF64_R_SYM(dso->jmprel.entries[index].r_info);
int strindex = dso->dynsym.entries[symindex].st_name;
const char *name = &dso->dynsym.strings[strindex];
uintptr_t *fixup = (uintptr_t *)(dso->base + dso->jmprel.entries[index].r_offset);
- // TODO: generate a symbol table for kjarna interface
- // TODO: implement symbol lookup (maybe hashed too)
- if (strcmp(name, "open") == 0)
- {
- *fixup = (uintptr_t)*ftab->open;
- }
- else if (strcmp(name, "close") == 0)
- {
- *fixup = (uintptr_t)*ftab->close;
- }
- else if (strcmp(name, "read") == 0)
- {
- *fixup = (uintptr_t)*ftab->read;
- }
- else if (strcmp(name, "write") == 0)
- {
- *fixup = (uintptr_t)*ftab->write;
- }
- else if (strcmp(name, "lseek") == 0)
- {
- *fixup = (uintptr_t)*ftab->lseek;
- }
- else if (strcmp(name, "mmap") == 0)
- {
- *fixup = (uintptr_t)*ftab->mmap;
- }
- else if (strcmp(name, "munmap") == 0)
- {
- *fixup = (uintptr_t)*ftab->munmap;
- }
- else
- {
- return nullptr;
- }
-
return fixup;
+ */
+
+ (void)dso;
+ (void)index;
+ return nullptr;
}
static void do_rela(char *base, Elf64_Rela *rela)