Skip to content
Snippets Groups Projects
Commit 0f81e7a0 authored by Byron Lathi's avatar Byron Lathi
Browse files

do elf loading a little better

parent 05f30526
No related branches found
No related tags found
No related merge requests found
......@@ -3,10 +3,6 @@
int main(int argc, char** argv)
{
printf("Hi\n");
printf("Hi, %d\n", 1);
int i;
for (i = 0; i < argc; i++) {
printf("Arg%d: %s\n", i, argv[i]);
......
......@@ -177,8 +177,10 @@ int32_t _sys_exec(uint8_t* cmd)
}
map_large(EXEC_BASE_ADDR, _8MB + pid * _4MB);
ext2_read_data(parsed_inode, 0, (uint16_t*)EXEC_LOAD_ADDR);
map_large(EXEC_BASE_ADDR, _8MB + pid * _4MB); //where program will be run
map_large(EXEC_TMP_ADDR, _8MB + (pid + 1) * _4MB); // program loaded temporarily here, then copied over
ext2_read_data(parsed_inode, 0, (uint16_t*)EXEC_TMP_ADDR);
printf("Loaded %s into %#x\n", name, EXEC_TMP_ADDR);
// what if you...
// read the program header to see how many bytes you needed to allocate and where
......@@ -188,10 +190,12 @@ int32_t _sys_exec(uint8_t* cmd)
printf("Program header %d type %x flags %x", i, p_header[i]->p_type, p_header[i]->p_flags);
printf(" offset %x vaddr %#x paddr %#x size %x\n",
p_header[i]->p_offset, p_header[i]->p_vaddr, p_header[i]->p_paddr, p_header[i]->p_filesz);
// so there are the two program segments that we need to load.
memccpy(p_header[i]->p_vaddr, EXEC_TMP_ADDR + p_header[i]->p_offset, p_header[i]->p_memsz);
}
ext2_read_sectors(parsed_inode, p_header[1]->p_offset/512, divhi(p_header[1]->p_memsz, 512), p_header[1]->p_vaddr);
unmap_large(EXEC_TMP_ADDR);
//ext2_read_sectors(parsed_inode, p_header[1]->p_offset/512, divhi(p_header[1]->p_memsz, 512), p_header[1]->p_vaddr);
*USER_ARGC = argc;
......
......@@ -10,6 +10,7 @@
#define EXEC_BASE_ADDR 0x08000000
#define EXEC_LOAD_ADDR 0x08048000
#define EXEC_TMP_ADDR 0x0C000000
#define USER_ARGC (uint32_t*)0x83ffff8
#define USER_ARGV (uint8_t***)0x83ffffc
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment