Rev 3677 | Rev 3690 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3677 | Rev 3681 | ||
---|---|---|---|
Line 57... | Line 57... | ||
57 | #include <as.h> |
57 | #include <as.h> |
58 | 58 | ||
59 | #include <elf.h> |
59 | #include <elf.h> |
60 | #include <elf_load.h> |
60 | #include <elf_load.h> |
61 | 61 | ||
- | 62 | void program_run(void *entry, pcb_t *pcb); |
|
- | 63 | ||
62 | /** Pathname of the file that will be loaded */ |
64 | /** Pathname of the file that will be loaded */ |
63 | static char *pathname = NULL; |
65 | static char *pathname = NULL; |
64 | 66 | ||
65 | /** The Program control block */ |
67 | /** The Program control block */ |
66 | static pcb_t pcb; |
68 | static pcb_t pcb; |
Line 274... | Line 276... | ||
274 | printf("run dynamic linker\n"); |
276 | printf("run dynamic linker\n"); |
275 | printf("entry point: 0x%lx\n", interp_info.entry); |
277 | printf("entry point: 0x%lx\n", interp_info.entry); |
276 | close_console(); |
278 | close_console(); |
277 | 279 | ||
278 | ipc_answer_0(rid, EOK); |
280 | ipc_answer_0(rid, EOK); |
279 | elf_run(&interp_info, &pcb); |
281 | program_run(interp_info.entry, &pcb); |
280 | 282 | ||
281 | } else { |
283 | } else { |
282 | /* Statically linked program */ |
284 | /* Statically linked program */ |
283 | close_console(); |
285 | close_console(); |
284 | ipc_answer_0(rid, EOK); |
286 | ipc_answer_0(rid, EOK); |
285 | elf_run(&prog_info, &pcb); |
287 | program_run(prog_info.entry, &pcb); |
286 | } |
288 | } |
287 | 289 | ||
288 | /* Not reached */ |
290 | /* Not reached */ |
289 | } |
291 | } |
290 | 292 |