Rev 2969 | Rev 2973 | 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 |