1
0
Fork 0
mirror of https://github.com/hermitcore/libhermit.git synced 2025-03-30 00:00:15 +01:00

fix image size calculation if app contains more than one load section

This commit is contained in:
Stefan Lankes 2018-06-10 10:32:51 +02:00
parent 916fd51879
commit 0da5a822b9

View file

@ -1126,8 +1126,8 @@ int load_kernel(uint8_t* mem, char* path)
Elf64_Ehdr hdr;
Elf64_Phdr *phdr = NULL;
size_t buflen;
size_t pstart = 0;
int fd, ret;
int first_load = 1;
fd = open(path, O_RDONLY);
if (fd == -1)
@ -1191,8 +1191,8 @@ int load_kernel(uint8_t* mem, char* path)
if (!mboot)
mboot = mem+paddr-GUEST_OFFSET;
if (first_load) {
first_load = 0;
if (!pstart) {
pstart = paddr;
// initialize kernel
*((uint64_t*) (mem+paddr-GUEST_OFFSET + 0x08)) = paddr; // physical start address
@ -1239,7 +1239,7 @@ int load_kernel(uint8_t* mem, char* path)
*((uint64_t*) (mem+paddr-GUEST_OFFSET + 0xbc)) = (uint64_t)guest_mem;
}
*((uint64_t*) (mem+paddr-GUEST_OFFSET + 0x38)) += memsz; // total kernel size
*((uint64_t*) (mem+pstart-GUEST_OFFSET + 0x38)) = paddr + memsz - pstart; // total kernel size
}
ret = 0;