72 static void file_load_android(
struct machine *m,
struct memory *mem,
73 char *filename,
int flags,
74 uint64_t *entrypointp,
int arch,
int *byte_orderp)
79 uint32_t kernel_size, kernel_addr, kernel_pages;
80 uint32_t ramdisk_size, ramdisk_addr, ramdisk_pages;
81 uint32_t second_size, second_addr, second_pages;
83 unsigned char buf[65536];
85 f = fopen(filename,
"r");
93 fprintf(stderr,
"%s: not a complete Android boot.img file\n",
112 while (len_to_load != 0) {
113 int len = len_to_load >
sizeof(buf) ?
sizeof(buf) : len_to_load;
114 int len_read = fread(buf, 1, len,
f);
115 if (len != len_read) {
116 fprintf(stderr,
"could not read from %s\n", filename);
124 uint64_t vaddr1 = vaddr &
126 uint64_t vaddr2 = (vaddr +
128 if (vaddr2 < vaddr1) {
140 fatal(
"kernel_size = 0?\n");
150 fseek(
f,
page_size * (1 + kernel_pages), SEEK_SET);
155 while (len_to_load != 0) {
156 int len = len_to_load >
sizeof(buf) ?
sizeof(buf) : len_to_load;
157 int len_read = fread(buf, 1, len,
f);
158 if (len != len_read) {
159 fprintf(stderr,
"could not read from %s\n", filename);
167 uint64_t vaddr1 = vaddr &
169 uint64_t vaddr2 = (vaddr +
171 if (vaddr2 < vaddr1) {
190 fseek(
f,
page_size * (1 + kernel_pages + ramdisk_pages), SEEK_SET);
195 while (len_to_load != 0) {
196 int len = len_to_load >
sizeof(buf) ?
sizeof(buf) : len_to_load;
197 int len_read = fread(buf, 1, len,
f);
198 if (len != len_read) {
199 fprintf(stderr,
"could not read from %s\n", filename);
207 uint64_t vaddr1 = vaddr &
209 uint64_t vaddr2 = (vaddr +
211 if (vaddr2 < vaddr1) {
233 n_executables_loaded ++;