49,6 → 49,7 |
pcb_t *pcb; |
elf_info_t lib_info; |
static module_t prog; |
static module_t lib; |
int rc; |
|
printf("Hello, world! (from rtld)\n"); |
57,6 → 58,7 |
printf("Parse .dynamic section\n"); |
pcb = (pcb_t *)PCB_ADDRESS; |
dynamic_parse(pcb->dynamic, 0, &prog.dyn); |
prog.bias = 0; |
|
printf("Program requested library '%s'\n", prog.dyn.needed); |
|
66,9 → 68,12 |
return; |
} |
|
dynamic_parse(lib_info.dynamic, 0x20000, &lib.dyn); |
lib.bias = 0x20000; |
|
/* Parse program's relocation tables */ |
rel_table_process(&prog, prog.dyn.rel, prog.dyn.rel_sz); |
rel_table_process(&prog, prog.dyn.jmp_rel, prog.dyn.plt_rel_sz); |
rel_table_process(&prog, prog.dyn.rel, prog.dyn.rel_sz, &lib); |
rel_table_process(&prog, prog.dyn.jmp_rel, prog.dyn.plt_rel_sz, &lib); |
|
printf("Run program..\n"); |
pcb->entry(); |