Subversion Repositories HelenOS

Rev

Rev 2980 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2980 Rev 2981
Line 50... Line 50...
50
{
50
{
51
    pcb_t *pcb;
51
    pcb_t *pcb;
52
    elf_info_t lib_info;
52
    elf_info_t lib_info;
53
    static module_t prog;
53
    static module_t prog;
54
    static module_t lib;
54
    static module_t lib;
-
 
55
    module_t *rtld;
55
    int rc;
56
    int rc;
56
 
57
 
57
    printf("Hello, world! (from rtld)\n");
58
    printf("Hello, world! (from rtld)\n");
58
    getchar();
59
    getchar();
59
 
60
 
-
 
61
    /* rtld_dynamic and rtld->bias were filled out by the bootstrap code */
-
 
62
    rtld = &runtime_env.rtld;
-
 
63
    dynamic_parse(runtime_env.rtld_dynamic, rtld->bias, &rtld->dyn);
-
 
64
 
60
    printf("Parse .dynamic section\n");
65
    printf("Parse .dynamic section\n");
61
    pcb = (pcb_t *)PCB_ADDRESS;
66
    pcb = (pcb_t *)PCB_ADDRESS;
62
    dynamic_parse(pcb->dynamic, 0, &prog.dyn);
67
    dynamic_parse(pcb->dynamic, 0, &prog.dyn);
63
    prog.bias = 0;
68
    prog.bias = 0;
64
    prog.dyn.soname = "[program]";
69
    prog.dyn.soname = "[program]";
Line 75... Line 80...
75
    lib.bias = 0x20000;
80
    lib.bias = 0x20000;
76
    printf("lib.bias=0x%x\n", lib.bias);
81
    printf("lib.bias=0x%x\n", lib.bias);
77
 
82
 
78
    runtime_env.program = &prog;
83
    runtime_env.program = &prog;
79
    runtime_env.libc = &lib;
84
    runtime_env.libc = &lib;
80
    runtime_env.rtld = NULL;
-
 
81
 
85
 
82
    /* Parse program's relocation tables */
86
    /* Parse program's relocation tables */
-
 
87
    printf("Resolve references in program\n");
83
    rel_table_process(&prog, prog.dyn.rel, prog.dyn.rel_sz);
88
    rel_table_process(&prog, prog.dyn.rel, prog.dyn.rel_sz);
84
    rel_table_process(&prog, prog.dyn.jmp_rel, prog.dyn.plt_rel_sz);
89
    rel_table_process(&prog, prog.dyn.jmp_rel, prog.dyn.plt_rel_sz);
85
 
90
 
-
 
91
    /* Parse lib's relocation tables */
-
 
92
    printf("Resolve references in library\n");
-
 
93
    rel_table_process(&lib, lib.dyn.rel, lib.dyn.rel_sz);
-
 
94
    rel_table_process(&lib, lib.dyn.jmp_rel, lib.dyn.plt_rel_sz);
-
 
95
 
86
    printf("lib.bias=0x%x\n", lib.bias);
96
    printf("lib.bias=0x%x\n", lib.bias);
87
 
97
 
88
    printf("Run program..\n");
98
    printf("Run program..\n");
89
    pcb->entry();
99
    pcb->entry();
90
}
100
}