Subversion Repositories HelenOS

Rev

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

Rev 2969 Rev 2972
Line 41... Line 41...
41
#include <as.h>
41
#include <as.h>
42
 
42
 
43
#include <elf.h>
43
#include <elf.h>
44
#include <elf_load.h>
44
#include <elf_load.h>
45
 
45
 
-
 
46
#define RTLD_BIAS 0x80000
-
 
47
 
46
int main(int argc, char *argv[])
48
int main(int argc, char *argv[])
47
{
49
{
48
    elf_info_t prog_info;
50
    elf_info_t prog_info;
49
    elf_info_t interp_info;
51
    elf_info_t interp_info;
50
    char *file_name;
52
    char *file_name;
Line 53... Line 55...
53
    printf("This is loader\n");
55
    printf("This is loader\n");
54
    getchar();
56
    getchar();
55
 
57
 
56
    printf("Load program\n");
58
    printf("Load program\n");
57
 
59
 
58
    rc = elf_load_file("/dltest", &prog_info);
60
    rc = elf_load_file("/dltest", 0, &prog_info);
59
    if (rc < 0) {
61
    if (rc < 0) {
60
        printf("failed to load program\n");
62
        printf("failed to load program\n");
61
        return 1;
63
        return 1;
62
    }
64
    }
63
 
65
 
Line 67... Line 69...
67
    getchar();
69
    getchar();
68
 
70
 
69
    printf("Load dynamic linker\n");
71
    printf("Load dynamic linker\n");
70
    file_name = "/rtld.so";
72
    file_name = "/rtld.so";
71
    printf("open and read '%s'...\n", file_name);
73
    printf("open and read '%s'...\n", file_name);
72
    rc = elf_load_file(file_name, &interp_info);
74
    rc = elf_load_file(file_name, RTLD_BIAS, &interp_info);
73
    if (rc < 0) {
75
    if (rc < 0) {
74
        printf("failed to load dynamic linker\n");
76
        printf("failed to load dynamic linker\n");
75
        return 1;
77
        return 1;
76
    }
78
    }
77
 
79