/branches/dynload/uspace/srv/loader/main.c |
---|
225,6 → 225,8 |
{ |
int rc; |
printf("Load program '%s'\n", pathname); |
rc = elf_load_file(pathname, 0, 0, &prog_info); |
if (rc < 0) { |
printf("Failed to load executable '%s'.\n", pathname); |
232,11 → 234,17 |
return 1; |
} |
printf("Create PCB\n"); |
elf_create_pcb(&prog_info, &pcb); |
printf("Fill args\n"); |
pcb.argc = argc; |
pcb.argv = argv; |
printf("Check interp\n"); |
if (prog_info.interp == NULL) { |
/* Statically linked program */ |
is_dyn_linked = false; |
282,6 → 290,7 |
program_run(interp_info.entry, &pcb); |
} else { |
printf("Run static program\n"); |
/* Statically linked program */ |
close_console(); |
ipc_answer_0(rid, EOK); |
/branches/dynload/uspace/srv/loader/elf_load.c |
---|
306,10 → 306,13 |
printf("dynamic section found at 0x%x\n", |
(uintptr_t)elf->info->dynamic); |
break; |
case 0x70000000: |
/* FIXME: MIPS reginfo */ |
break; |
case PT_SHLIB: |
case PT_NOTE: |
case PT_LOPROC: |
case PT_HIPROC: |
// case PT_LOPROC: |
// case PT_HIPROC: |
default: |
printf("segment p_type %d unknown\n", entry->p_type); |
return EE_UNSUPPORTED; |
374,7 → 377,8 |
a = as_area_create((uint8_t *)base + bias, mem_sz, |
AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE); |
if (a == (void *)(-1)) { |
printf("memory mapping failed\n"); |
printf("memory mapping failed (0x%x, %d)\n", |
base+bias, mem_sz); |
return EE_MEMORY; |
} |