When I attach a GRUB loader, it doesn't check ELFCLASS at all. It just boots the kernel as expected in protected mode. Only Qemu does the extra check that I know of, but I cannot force your opinions on this. We can still continue to use a chainloader to avoid this problem. (Or worse, build a ELFCLASS32 64-bit kernel. Just kidding, of course.)
-gonzo ________________________________ From: Paolo Bonzini <pbonz...@redhat.com> Sent: Wednesday, December 5, 2018 1:20 PM To: Thomas Huth; Gonzo FWS; qemu-devel@nongnu.org Cc: Richard Henderson; Eduardo Habkost; Michael S. Tsirkin; Marcel Apfelbaum Subject: Re: [Qemu-devel] i386: don't require elf64 for multiboot kernel On 05/12/18 06:35, Thomas Huth wrote: > On 2018-12-04 17:55, Gonzo FWS wrote: >> Right now IncludeOS on x86_64 must use a chainloader for multiboot >> support. The chainloader is an ELF32 kernel that loads the real >> ELF64 kernel and jumps to it. As long as the ELF has the .multiboot >> section and conforms to the spec, meaning _start is be a 32-bit >> entry, it should be fine. >> >> By removing the extra check in multiboot.c, we can also boot ELF64 >> files. As can be seen here: >> https://cloud.fwsnet.net/index.php/s/XrkBkC8zy7MLa9p >> >> Signed-off-by: Alf-André Walla <fwsgo...@hotmail.com> I think a 64-bit multiboot specification doesn't exist, but if it existed, it would require an EM_X86_64 ELF file to be booted already in long mode. I don't think it's a good idea to allow booting into an EM_X86_64 ELF file with the processor in 32-bit mode. Paolo