Rev 841 | Rev 872 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 841 | Rev 869 | ||
|---|---|---|---|
| Line 34... | Line 34... | ||
| 34 | { |
34 | { |
| 35 | printf("Error: %s\n", msg); |
35 | printf("Error: %s\n", msg); |
| 36 | exit(2); |
36 | exit(2); |
| 37 | } |
37 | } |
| 38 | 38 | ||
| 39 | #define ELF_VMA (0x88/sizeof(unsigned long long)) |
39 | #define ELF_VMA (0x50/sizeof(unsigned long long)) |
| 40 | #define ELF_LMA (0x90/sizeof(unsigned long long)) |
40 | #define ELF_LMA (0x58/sizeof(unsigned long long)) |
| - | 41 | #define ELF_ENTRY (0x18/sizeof(unsigned long long)) |
|
| 41 | 42 | ||
| 42 | #define LENGTH 0x98 |
43 | #define LENGTH 0x98 |
| 43 | 44 | ||
| 44 | int main(int argc, char *argv[]) |
45 | int main(int argc, char *argv[]) |
| 45 | { |
46 | { |
| 46 | int fd; |
47 | int fd; |
| 47 | unsigned long long vma, lma; |
48 | unsigned long long vma, lma,entry; |
| 48 | unsigned long long *elf; |
49 | unsigned long long *elf; |
| 49 | 50 | ||
| 50 | if (argc != 2) |
51 | if (argc != 2) |
| 51 | syntax(argv[0]); |
52 | syntax(argv[0]); |
| 52 | 53 | ||
| Line 56... | Line 57... | ||
| 56 | 57 | ||
| 57 | elf = mmap(NULL, LENGTH, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); |
58 | elf = mmap(NULL, LENGTH, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); |
| 58 | if ((void *) elf == (void *) -1) |
59 | if ((void *) elf == (void *) -1) |
| 59 | error("map failed"); |
60 | error("map failed"); |
| 60 | 61 | ||
| 61 | vma = elf[ELF_VMA]; |
62 | /*vma = elf[ELF_VMA];*/ |
| 62 | lma = elf[ELF_LMA]; |
63 | lma = elf[ELF_LMA]; |
| 63 | elf[ELF_VMA] = lma; |
64 | elf[ELF_VMA] = lma; |
| - | 65 | entry = elf[ELF_ENTRY]; |
|
| - | 66 | entry &= ((~0LL)>>3); |
|
| - | 67 | elf[ELF_ENTRY] = entry; |
|
| - | 68 | elf[ELF_ENTRY] = 0x100000; |
|
| 64 | elf[ELF_LMA] = vma; |
69 | /*elf[ELF_LMA] = vma;*/ |
| 65 | 70 | ||
| 66 | if (munmap(elf, LENGTH) == -1) |
71 | if (munmap(elf, LENGTH) == -1) |
| 67 | error("munmap failed"); |
72 | error("munmap failed"); |
| 68 | 73 | ||
| 69 | if (close(fd) == -1) |
74 | if (close(fd) == -1) |