At Thu, 1 Jun 2006 17:39:13 +0200, Yoshinori K. Okuji wrote: > > On Wednesday 31 May 2006 23:00, Jeroen Dekkers wrote: > > It's actually a necessary feature for GRUB on amd64. On amd64 you have > > 64-bit executables but GRUB will run in 32-bit mode. > > > > When trying to compile on amd64 I already ran into some problems > > related to that. First of all on amd64 all binaries are run in 64-bit > > mode, so the host CFLAGS variable shouldn't have -m32. Secondly LIBS > > is for the host only and shouldn't be defined when running target > > tests. As last we set CFLAGS, CC, etc. to the TARGET_*, then we run > > some checks and change the TARGET_* flags without updating CC, CFLAGS, > > etc to the new version. > > > > The attached patch should fix those problems. I've tested it on i386-pc > > and x86_64. > > It looks good. Please check it in.
Now I actually booted GRUB 2 in qemu, I found another bug. :-) We are still using grub_host_* types in grub/kernel.h, but the types of those changed. We should use grub_target_* types there. As I didn't see any other use of grub_host_* types, I just renamed those to grub_target_* and changed the #ifdef. See the patch below. Jeroen Dekkers 2006-06-07 Jeroen Dekkers <[EMAIL PROTECTED]> * include/grub/types.h (grub_host_addr_t): Rename to grub_target_addr_t. (grub_host_off_t): Rename to grub_target_off_t. (grub_host_size_t): Rename to grub_target_size_t. (grub_host_ssize_t): Rename to grub_target_ssize_t. Refer to GRUB_TARGET_SIZEOF_VOID_P to define those variables. * include/grub/kernel.h (struct grub_module_header): Change type of OFFSET to grub_target_off_t and type of SIZE to grub_target_size_t. (grub_module_info): Likewise. Index: include/grub/kernel.h =================================================================== RCS file: /cvsroot/grub/grub2/include/grub/kernel.h,v retrieving revision 1.8 diff -u -p -r1.8 kernel.h --- include/grub/kernel.h 25 Apr 2006 20:08:31 -0000 1.8 +++ include/grub/kernel.h 7 Jun 2006 11:12:39 -0000 @@ -26,9 +26,9 @@ struct grub_module_header { /* The offset of object code. */ - grub_host_off_t offset; + grub_target_off_t offset; /* The size of object code plus this header. */ - grub_host_size_t size; + grub_target_size_t size; }; /* "gmim" (GRUB Module Info Magic). */ @@ -39,9 +39,9 @@ struct grub_module_info /* Magic number so we know we have modules present. */ grub_uint32_t magic; /* The offset of the modules. */ - grub_host_off_t offset; + grub_target_off_t offset; /* The size of all modules plus this header. */ - grub_host_size_t size; + grub_target_size_t size; }; extern grub_addr_t grub_arch_modules_addr (void); Index: include/grub/types.h =================================================================== RCS file: /cvsroot/grub/grub2/include/grub/types.h,v retrieving revision 1.9 diff -u -p -r1.9 types.h --- include/grub/types.h 4 Jun 2006 15:56:54 -0000 1.9 +++ include/grub/types.h 7 Jun 2006 11:12:39 -0000 @@ -69,16 +69,16 @@ typedef unsigned long long grub_uint64_t #endif /* Misc types. */ -#if SIZEOF_VOID_P == 8 -typedef grub_uint64_t grub_host_addr_t; -typedef grub_uint64_t grub_host_off_t; -typedef grub_uint64_t grub_host_size_t; -typedef grub_int64_t grub_host_ssize_t; +#if GRUB_TARGET_SIZEOF_VOID_P == 8 +typedef grub_uint64_t grub_target_addr_t; +typedef grub_uint64_t grub_target_off_t; +typedef grub_uint64_t grub_target_size_t; +typedef grub_int64_t grub_target_ssize_t; #else -typedef grub_uint32_t grub_host_addr_t; -typedef grub_uint32_t grub_host_off_t; -typedef grub_uint32_t grub_host_size_t; -typedef grub_int32_t grub_host_ssize_t; +typedef grub_uint32_t grub_target_addr_t; +typedef grub_uint32_t grub_target_off_t; +typedef grub_uint32_t grub_target_size_t; +typedef grub_int32_t grub_target_ssize_t; #endif #if GRUB_CPU_SIZEOF_VOID_P == 8 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel