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:
parent
916fd51879
commit
0da5a822b9
1 changed files with 4 additions and 4 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue