grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] New object format


From: Javier Martín
Subject: Re: [PATCH] New object format
Date: Wed, 22 Jul 2009 15:42:08 +0200

El mié, 22-07-2009 a las 21:34 +0800, Bean escribió:
> 2009/7/22 Javier Martín <address@hidden>:
> > El mié, 22-07-2009 a las 19:12 +0800, Bean escribió:
> >> Fix some wrong assumption in types.h and efi header files. For
> >> example, grub_efi_uint_t is defined as unsigned long, but it should be
> >> grub_uint64_t in 64-bit EFI, this problem won't show previously as
> >> unsigned long is 64-bit in elf64 gcc, but it's 32-bit in mingw-w64
> >> gcc.
> > I think you haven't corrected _all_ such assumptions. For example, in
> > your grub/types.h:
> >
> > #if GRUB_CPU_SIZEOF_VOID_P == 8
> > # define GRUB_ULONG_MAX 18446744073709551615UL
> > # define GRUB_LONG_MAX 9223372036854775807L
> > # define GRUB_LONG_MIN (-9223372036854775807L - 1)
> > #else
> > # define GRUB_ULONG_MAX 4294967295UL
> > # define GRUB_LONG_MAX 2147483647L
> > # define GRUB_LONG_MIN (-2147483647L - 1)
> > #endif
> >
> > In mingw64, sizeof(void*) = 8, but ULONG_MAX = 2^32-1.
> > grub/machine/types.h defines a GRUB_TARGET_SIZEOF_LONG that might be
> > suitable for this. Or am I mixing "target" with "host"?
> 
> Hi,
> 
> Oh, thanks for the note. In fact, we can use  GRUB_CPU_SIZEOF_LONG,
> its value is GRUB_TARGET_SIZEOF_LONG when building target, and
> SIZEOF_LONG when building utilities.
Wonderful idea. I'm researching this for a possible implementation of a
GRUB equivalent to the C99 fixed-length integers print specifiers like
PRIx64. It would most likely go into <grub/types.h>, so I'm paying
special attention to anyone working on that file.

> As GRUB_CPU_SIZEOF_LONG  doesn't necessary equal to
> GRUB_CPU_SIZEOF_VOID_P. (It actually avoid this by generating an
> #errror message when GRUB_CPU_SIZEOF_VOID_P != GRUB_CPU_SIZEOF_LONG).
I think you lost me here. This check is in the trunk GRUB, but not in
your "lib" branch, and actually it would make it impossible to build on
mingw64, where void* is 64-bit and long is 32-bit.

-- 
-- Lazy, Oblivious, Recurrent Disaster -- Habbit

Attachment: signature.asc
Description: Esto es una parte de mensaje firmado digitalmente


reply via email to

[Prev in Thread] Current Thread [Next in Thread]