grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] RFC: allow compilation without target libc


From: Vladimir 'phcoder' Serbinenko
Subject: Re: [PATCH] RFC: allow compilation without target libc
Date: Sat, 30 May 2009 17:13:06 +0200

Hello. I like this patch
On Sat, May 23, 2009 at 1:33 AM, Pavel Roskin <address@hidden> wrote:
> ChangeLog:
>
>        * configure.ac: Define GRUB_SOURCE to identify GRUB sources
>        in include/multiboot2.h.  Use "-nostdlib" when testing target
>        compiler.
>        * include/multiboot2.h: Use GRUB types and definitions.  Provide
>        compatibility layer when GRUB_SOURCE is not defined.
I'm not sure about this part since multiboot isn't necessarily tied to
grub. Perhaps
#ifdef GRUB_SOURCE
typedef grub_uint32_t multiboot_uint32_t;
#else
typedef uint32_t multiboot_uint32_t;
#endif
would make more sense?
>        * loader/i386/pc/multiboot2.c: Include multiboot2.h last to make
>        sure that config.h was included first.
>        * loader/multiboot2.c: Likewise.
>        * loader/multiboot_loader.c: Likewise.
> ---
>
>  configure.ac                |    3 ++-
>  include/multiboot2.h        |   24 +++++++++++++++---------
>  loader/i386/pc/multiboot2.c |    2 +-
>  loader/multiboot2.c         |    2 +-
>  loader/multiboot_loader.c   |    2 +-
>  5 files changed, 20 insertions(+), 13 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 98cd841..af60603 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -161,6 +161,7 @@ test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
>
>  AC_GNU_SOURCE
>  AC_SYS_LARGEFILE
> +AC_DEFINE([GRUB_SOURCE], [1], [Define when compiling GRUB sources.])
>
>  # Identify characteristics of the host architecture.
>  AC_C_BIGENDIAN
> @@ -366,7 +367,7 @@ AC_SUBST(TARGET_LDFLAGS)
>
>  # Set them to their new values for the tests below.
>  CC="$TARGET_CC"
> -CFLAGS="$TARGET_CFLAGS"
> +CFLAGS="$TARGET_CFLAGS -nostdlib"
>  CPPFLAGS="$TARGET_CPPFLAGS"
>  LDFLAGS="$TARGET_LDFLAGS"
>
> diff --git a/include/multiboot2.h b/include/multiboot2.h
> index 0f2b0cf..e8fe425 100644
> --- a/include/multiboot2.h
> +++ b/include/multiboot2.h
> @@ -34,25 +34,31 @@
>
>  #ifndef ASM_FILE
>
> -#include "stdint.h"
> +#ifdef GRUB_SOURCE
> +#include <grub/types.h>
> +#else
> +#include <stdint.h>
> +typedef uint32_t grub_uint32_t;
> +typedef uint64_t grub_uint64_t;
> +#define GRUB_TARGET_SIZEOF_VOID_P (__WORDSIZE / 8)
> +#endif
>
> -/* XXX not portable? */
> -#if __WORDSIZE == 64
> -typedef uint64_t multiboot_word;
> +#if GRUB_TARGET_SIZEOF_VOID_P == 8
> +typedef grub_uint64_t multiboot_word;
>  #else
> -typedef uint32_t multiboot_word;
> +typedef grub_uint32_t multiboot_word;
>  #endif
>
>  struct multiboot_header
>  {
> -  uint32_t magic;
> -  uint32_t flags;
> +  grub_uint32_t magic;
> +  grub_uint32_t flags;
>  };
>
>  struct multiboot_tag_header
>  {
> -  uint32_t key;
> -  uint32_t len;
> +  grub_uint32_t key;
> +  grub_uint32_t len;
>  };
>
>  #define MULTIBOOT2_TAG_RESERVED1 0
> diff --git a/loader/i386/pc/multiboot2.c b/loader/i386/pc/multiboot2.c
> index 2c14ee2..25ef150 100644
> --- a/loader/i386/pc/multiboot2.c
> +++ b/loader/i386/pc/multiboot2.c
> @@ -17,7 +17,6 @@
>  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
>  */
>
> -#include <multiboot2.h>
>  #include <grub/multiboot2.h>
>  #include <grub/elf.h>
>  #include <grub/err.h>
> @@ -25,6 +24,7 @@
>  #include <grub/mm.h>
>  #include <grub/multiboot.h>
>  #include <grub/cpu/multiboot.h>
> +#include <multiboot2.h>
>
>  grub_err_t
>  grub_mb2_arch_elf32_hook (Elf32_Phdr *phdr, UNUSED grub_addr_t *addr)
> diff --git a/loader/multiboot2.c b/loader/multiboot2.c
> index fd82828..34e42c1 100644
> --- a/loader/multiboot2.c
> +++ b/loader/multiboot2.c
> @@ -17,7 +17,6 @@
>  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
>  */
>
> -#include <multiboot2.h>
>  #include <grub/loader.h>
>  #include <grub/machine/loader.h>
>  #include <grub/multiboot2.h>
> @@ -28,6 +27,7 @@
>  #include <grub/mm.h>
>  #include <grub/misc.h>
>  #include <grub/gzio.h>
> +#include <multiboot2.h>
>
>  static grub_addr_t entry;
>  extern grub_dl_t my_mod;
> diff --git a/loader/multiboot_loader.c b/loader/multiboot_loader.c
> index 11ba666..654508e 100644
> --- a/loader/multiboot_loader.c
> +++ b/loader/multiboot_loader.c
> @@ -17,7 +17,6 @@
>  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
>  */
>
> -#include <multiboot2.h>
>  #include <grub/machine/machine.h>
>  #include <grub/multiboot.h>
>  #include <grub/multiboot2.h>
> @@ -29,6 +28,7 @@
>  #include <grub/misc.h>
>  #include <grub/gzio.h>
>  #include <grub/command.h>
> +#include <multiboot2.h>
>
>  grub_dl_t my_mod;
>
>
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/grub-devel
>



-- 
Regards
Vladimir 'phcoder' Serbinenko




reply via email to

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