From: Robert Millan Date: Sun, 13 Dec 2009 18:29:15 +0000 (+0000) Subject: 2009-12-13 Robert Millan X-Git-Tag: 1.98~314^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=616da3a1546560057c2b790047af2c06af9e9ab4;p=thirdparty%2Fgrub.git 2009-12-13 Robert Millan * loader/i386/multiboot_elfxx.c (CONCAT(grub_multiboot_load_elf, XX)): Fix `grub_multiboot_payload_eip' initialization. --- diff --git a/ChangeLog.relocators b/ChangeLog.relocators index c402ac2db..d64ef24f8 100644 --- a/ChangeLog.relocators +++ b/ChangeLog.relocators @@ -1,3 +1,9 @@ +2009-12-13 Robert Millan + + * loader/i386/multiboot_elfxx.c + (CONCAT(grub_multiboot_load_elf, XX)): Fix `grub_multiboot_payload_eip' + initialization. + 2009-11-28 Vladimir Serbinenko Relocator framework diff --git a/loader/i386/multiboot_elfxx.c b/loader/i386/multiboot_elfxx.c index 0b9820dcc..80db25144 100644 --- a/loader/i386/multiboot_elfxx.c +++ b/loader/i386/multiboot_elfxx.c @@ -138,7 +138,8 @@ CONCAT(grub_multiboot_load_elf, XX) (grub_file_t file, void *buffer) if (phdr(i)->p_vaddr <= ehdr->e_entry && phdr(i)->p_vaddr + phdr(i)->p_memsz > ehdr->e_entry) { - grub_multiboot_payload_eip = ehdr->e_entry; + grub_multiboot_payload_eip = grub_multiboot_payload_dest + + (ehdr->e_entry - phdr(i)->p_vaddr) + (phdr(i)->p_paddr - phdr(lowest_segment)->p_paddr); break; }