Espresso 0.0.2c
This commit is contained in:
@ -13,10 +13,10 @@
|
||||
|
||||
elf_executable_t* load_elf32(void* elf_data)
|
||||
{
|
||||
/*Elf32_Ehdr* ehdr = (Elf32_Ehdr*)elf_data;*/
|
||||
Elf32_Ehdr* ehdr = (Elf32_Ehdr*)elf_data;
|
||||
|
||||
/* Check ELF magic */
|
||||
/*if (memcmp(ehdr->e_ident, (uint8_t*)("\x7F""ELF"), 4) != 0)
|
||||
if (memcmp(ehdr->e_ident, (uint8_t*)("\x7F""ELF"), 4) != 0)
|
||||
{
|
||||
printf("Invalid ELF file\n");
|
||||
return NULL;
|
||||
@ -30,7 +30,8 @@ elf_executable_t* load_elf32(void* elf_data)
|
||||
|
||||
Elf32_Phdr* phdrs = (Elf32_Phdr*)((uint8_t*)elf_data + ehdr->e_phoff);
|
||||
|
||||
for (int i = 0; i < ehdr->e_phnum; i++) {
|
||||
for (int i = 0; i < ehdr->e_phnum; i++)
|
||||
{
|
||||
Elf32_Phdr* phdr = &phdrs[i];
|
||||
if (phdr->p_type != PT_LOAD)
|
||||
{
|
||||
@ -43,7 +44,7 @@ elf_executable_t* load_elf32(void* elf_data)
|
||||
|
||||
for (uint32_t page = 0; page < segment_pages; page++)
|
||||
{
|
||||
void* phys = alloc_page();
|
||||
void* phys = pmm_alloc_page();
|
||||
void* virt = (void*)(vaddr_start + page * PAGE_SIZE);
|
||||
map_page(phys, virt);
|
||||
memset(virt, 0, PAGE_SIZE);
|
||||
@ -53,12 +54,15 @@ elf_executable_t* load_elf32(void* elf_data)
|
||||
void* src = (uint8_t*)elf_data + phdr->p_offset;
|
||||
memcpy(dest, src, phdr->p_filesz);
|
||||
|
||||
printf("Mapped segment %d: 0x%08x–0x%08x (memsz: %u, filesz: %u)\n", i, phdr->p_vaddr, phdr->p_vaddr + phdr->p_memsz, phdr->p_memsz, phdr->p_filesz);
|
||||
#ifdef _DEBUG
|
||||
printf("Mapped segment %d: ", i);
|
||||
printf("0x%x - 0x%x (memsz: %u, filesz: %u)\n", phdr->p_vaddr, phdr->p_vaddr + phdr->p_memsz, phdr->p_memsz, phdr->p_filesz);
|
||||
#endif
|
||||
}
|
||||
|
||||
elf_executable_t* result = malloc(sizeof(elf_executable_t));
|
||||
result->entry_point = (void*)(uintptr_t)ehdr->e_entry;
|
||||
return result;*/
|
||||
result->entry_point = (elf_entry_t)(uintptr_t)ehdr->e_entry;
|
||||
return result;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user