Небольшие исправления

This commit is contained in:
Aren Elchinyan 2024-08-01 15:18:29 +03:00
parent 230eecc911
commit ac3e6705d4
3 changed files with 15 additions and 7 deletions

View File

@ -1,3 +1,3 @@
#define VERSION_MAJOR 0
#define VERSION_MINOR 2
#define VERSION_BUILD 94
#define VERSION_BUILD 96

View File

@ -9,6 +9,7 @@
#include <mod.h>
#include <stdint.h>
elf64_header_t *elf64_get_header(void *data) {
return (elf64_header_t *)(data);
}
@ -70,10 +71,12 @@ void *elf_entry(void *module_bin) {
LOG("\t\tОшибка! Модуль неправильно собран!\n");
for (;;) { asm volatile("pause"); }
}
elf_parse((elf64_header_t *)module_bin);
void *h = elf_parse((elf64_header_t *)module_bin);
if (h == NULL) { return NULL; }
// Возвращаем указатель на точку входа
return (void *)((uint64_t)elf_header->e_entry + (uint64_t)module_bin);
return (void *)((uint64_t)h + (uint64_t)module_bin);
}
void import_test( ) {
@ -86,7 +89,7 @@ void *elf_parse(elf64_header_t *head) {
if (head->e_ident[0] != ELFMAG0 || head->e_ident[1] != ELFMAG1 || head->e_ident[2] != ELFMAG2 ||
head->e_ident[3] != ELFMAG3) {
LOG("Ошибка: Неправильный формат!\n");
return -1;
return NULL;
}
// LOG("Точка входа: 0x%x\n", head->e_entry);
@ -121,7 +124,7 @@ void *elf_parse(elf64_header_t *head) {
if (tool_strcmp(string_table + sym->st_name, "import_test") == 0) {
log_printf("0x%x\n", head + sym->st_value);
void (*imp)( ) = (void *)head + sym->st_value;
*imp = &import_test;
// imp = &import_test;
}
break;
case STT_FUNC: log_printf("объект кода\n"); break;
@ -139,5 +142,5 @@ void *elf_parse(elf64_header_t *head) {
LOG("Таблица символов не найдена!\n");
}
return (void *)0;
return (void *)head->e_entry;
}

View File

@ -117,7 +117,12 @@ void mod_init( ) {
continue;
}
module_info_t (*module_init)(env_t *env) = (module_info_t(*)(env_t * env)) elf_entry(module_ptr->address);
module_info_t (*module_init)(env_t * env) = (module_info_t(*)(env_t * env)) elf_entry(module_ptr->address);
if (module_init == NULL) {
LOG("Модуль %s неисправен\n", module_ptr->cmdline);
continue;
}
// LOG("\t->Точка входа: 0x%x\n", module_init);