mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-20 22:48:22 +00:00
* grub-core/kern/elfXX.c (grub_elfXX_load): Handle
GRUB_ELF_LOAD_FLAGS_30BITS and GRUB_ELF_LOAD_FLAGS_62BITS. * grub-core/loader/powerpc/ieee1275/linux.c (grub_linux_load32), (grub_linux_load64): Mask out 2 high bits.
This commit is contained in:
1 parent
4eafa17565
commit
aeace7f71c
4 files changed
+27
-4
No files matched your search
+14
-2
@@ -101,8 +101,20 @@ grub_elfXX_load (grub_elf_t elf, const char *filename,
|
||||
continue;
|
||||
|
||||
load_addr = (grub_addr_t) phdr->p_paddr;
|
||||
if (load_flags & GRUB_ELF_LOAD_FLAGS_28BITS)
|
||||
load_addr &= 0xFFFFFFF;
|
||||
switch (load_flags & GRUB_ELF_LOAD_FLAGS_BITS)
|
||||
{
|
||||
case GRUB_ELF_LOAD_FLAGS_ALL_BITS:
|
||||
break;
|
||||
case GRUB_ELF_LOAD_FLAGS_28BITS:
|
||||
load_addr &= 0xFFFFFFF;
|
||||
break;
|
||||
case GRUB_ELF_LOAD_FLAGS_30BITS:
|
||||
load_addr &= 0x3FFFFFFF;
|
||||
break;
|
||||
case GRUB_ELF_LOAD_FLAGS_62BITS:
|
||||
load_addr &= 0x3FFFFFFFFFFFFFFFULL;
|
||||
break;
|
||||
}
|
||||
load_addr += (grub_addr_t) load_offset;
|
||||
|
||||
if (load_addr < load_base)
|
||||
|
||||
Reference in new issue
Block a user