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 | ||