From: Robert Millan <rmh@aybabtu.com>
To: grub-devel@gnu.org
Subject: Re: [PATCH] grub-mkelfimage
Date: Thu, 14 Aug 2008 21:04:45 +0200 [thread overview]
Message-ID: <20080814190445.GA20140@thorin> (raw)
In-Reply-To: <20080803210435.GA24267@thorin>
Committed.
On Sun, Aug 03, 2008 at 11:04:35PM +0200, Robert Millan wrote:
>
> The elf version of grub-mkimage is multiplatform, so it makes no sense to
> keep it as arch-specific in the build system IMHO.
>
> This patch renames it to grub-mkelfimage, and arranges the build system &
> headers so that its build parameters are shared between i386-ieee1275 and
> i386-coreboot (and in the future, among powerpc-* platforms).
>
> Aside from making life easier for distributors (less duplicated space), the
> big advantage in doing this is that one can now install grub-coreboot at
> the same time as grub-pc without causing a file conflict.
>
> --
> Robert Millan
>
> The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
> how) you may access your data; but nobody's threatening your freedom: we
> still allow you to remove your data and not access it at all."
> Index: conf/common.rmk
> ===================================================================
> --- conf/common.rmk (revision 1767)
> +++ conf/common.rmk (working copy)
> @@ -1,5 +1,11 @@
> # -*- makefile -*-
>
> +# For grub-mkelfimage.
> +bin_UTILITIES += grub-mkelfimage
> +grub_mkelfimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \
> + util/resolve.c
> +util/elf/grub-mkimage.c_DEPENDENCIES = Makefile
> +
> # For grub-probe.
> sbin_UTILITIES += grub-probe
> util/grub-probe.c_DEPENDENCIES = grub_probe_init.h
> Index: conf/i386-coreboot.rmk
> ===================================================================
> --- conf/i386-coreboot.rmk (revision 1767)
> +++ conf/i386-coreboot.rmk (working copy)
> @@ -39,18 +39,11 @@
> /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
>
> # Utilities.
> -bin_UTILITIES = grub-mkimage
> sbin_UTILITIES = grub-mkdevicemap
> ifeq ($(enable_grub_emu), yes)
> sbin_UTILITIES += grub-emu
> endif
>
> -# For grub-mkimage.
> -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \
> - util/resolve.c
> -grub_mkimage_LDFLAGS = $(LIBLZO)
> -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile
> -
> # For grub-mkdevicemap.
> grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \
> util/i386/get_disk_name.c
> Index: conf/powerpc-ieee1275.rmk
> ===================================================================
> --- conf/powerpc-ieee1275.rmk (revision 1767)
> +++ conf/powerpc-ieee1275.rmk (working copy)
> @@ -28,17 +28,11 @@
> pkglib_PROGRAMS = kernel.elf
>
> # Utilities.
> -bin_UTILITIES = grub-mkimage
> sbin_UTILITIES = grub-mkdevicemap
> ifeq ($(enable_grub_emu), yes)
> sbin_UTILITIES += grub-emu
> endif
>
> -# For grub-mkimage.
> -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \
> - util/resolve.c
> -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile
> -
> # For grub-mkdevicemap.
> grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \
> util/ieee1275/get_disk_name.c
> Index: conf/i386-ieee1275.rmk
> ===================================================================
> --- conf/i386-ieee1275.rmk (revision 1767)
> +++ conf/i386-ieee1275.rmk (working copy)
> @@ -40,18 +40,11 @@
> /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
>
> # Utilities.
> -bin_UTILITIES = grub-mkimage
> sbin_UTILITIES = grub-mkdevicemap
> ifeq ($(enable_grub_emu), yes)
> sbin_UTILITIES += grub-emu
> endif
>
> -# For grub-mkimage.
> -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \
> - util/resolve.c
> -grub_mkimage_LDFLAGS = $(LIBLZO)
> -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile
> -
> # For grub-mkdevicemap.
> grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \
> util/i386/get_disk_name.c
> Index: kern/ieee1275/init.c
> ===================================================================
> --- kern/ieee1275/init.c (revision 1767)
> +++ kern/ieee1275/init.c (working copy)
> @@ -30,6 +30,7 @@
> #include <grub/time.h>
> #include <grub/machine/console.h>
> #include <grub/machine/kernel.h>
> +#include <grub/cpu/kernel.h>
> #include <grub/ieee1275/ofdisk.h>
> #include <grub/ieee1275/ieee1275.h>
>
> Index: kern/i386/ieee1275/startup.S
> ===================================================================
> --- kern/i386/ieee1275/startup.S (revision 1767)
> +++ kern/i386/ieee1275/startup.S (working copy)
> @@ -19,9 +19,9 @@
> #define ASM_FILE 1
>
> #include <grub/symbol.h>
> -#include <grub/machine/kernel.h>
> #include <grub/machine/memory.h>
> #include <grub/cpu/linux.h>
> +#include <grub/cpu/kernel.h>
> #include <multiboot.h>
> #include <multiboot2.h>
>
> @@ -45,7 +45,7 @@
> * This is a special data area at a fixed offset from the beginning.
> */
>
> - . = EXT_C(start) + GRUB_KERNEL_MACHINE_PREFIX
> + . = EXT_C(start) + GRUB_KERNEL_CPU_PREFIX
>
> VARIABLE(grub_prefix)
> /* to be filled by grub-mkimage */
> @@ -54,7 +54,7 @@
> * Leave some breathing room for the prefix.
> */
>
> - . = EXT_C(start) + GRUB_KERNEL_MACHINE_DATA_END
> + . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END
>
> codestart:
> movl %eax, EXT_C(grub_ieee1275_entry_fn)
> Index: kern/i386/linuxbios/startup.S
> ===================================================================
> --- kern/i386/linuxbios/startup.S (revision 1767)
> +++ kern/i386/linuxbios/startup.S (working copy)
> @@ -19,9 +19,9 @@
> #define ASM_FILE 1
>
> #include <grub/symbol.h>
> -#include <grub/machine/kernel.h>
> #include <grub/machine/memory.h>
> #include <grub/cpu/linux.h>
> +#include <grub/cpu/kernel.h>
> #include <multiboot.h>
> #include <multiboot2.h>
>
> @@ -44,7 +44,7 @@
> * This is a special data area at a fixed offset from the beginning.
> */
>
> - . = EXT_C(start) + GRUB_KERNEL_MACHINE_PREFIX
> + . = EXT_C(start) + GRUB_KERNEL_CPU_PREFIX
>
> VARIABLE(grub_prefix)
> /* to be filled by grub-mkimage */
> @@ -53,7 +53,7 @@
> * Leave some breathing room for the prefix.
> */
>
> - . = EXT_C(start) + GRUB_KERNEL_MACHINE_DATA_END
> + . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END
>
> #if 0
> /*
> Index: kern/i386/linuxbios/init.c
> ===================================================================
> --- kern/i386/linuxbios/init.c (revision 1767)
> +++ kern/i386/linuxbios/init.c (working copy)
> @@ -33,6 +33,7 @@
> #include <grub/time.h>
> #include <grub/symbol.h>
> #include <grub/cpu/io.h>
> +#include <grub/cpu/kernel.h>
>
> #define GRUB_FLOPPY_REG_DIGITAL_OUTPUT 0x3f2
>
> Index: include/grub/powerpc/ieee1275/kernel.h
> ===================================================================
> --- include/grub/powerpc/ieee1275/kernel.h (revision 1767)
> +++ include/grub/powerpc/ieee1275/kernel.h (working copy)
> @@ -21,13 +21,6 @@
>
> #include <grub/symbol.h>
>
> -#define GRUB_MOD_ALIGN 0x1000
> -
> -/* Minimal gap between _end and the start of the modules. It's a hack
> - for PowerMac to prevent "CLAIM failed" error. The real fix is to
> - rewrite grub-mkimage to generate valid ELF files. */
> -#define GRUB_MOD_GAP 0x8000
> -
> #ifndef ASM_FILE
>
> void EXPORT_FUNC (grub_reboot) (void);
> Index: include/grub/powerpc/kernel.h
> ===================================================================
> --- include/grub/powerpc/kernel.h (revision 0)
> +++ include/grub/powerpc/kernel.h (revision 0)
> @@ -0,0 +1,33 @@
> +/*
> + * GRUB -- GRand Unified Bootloader
> + * Copyright (C) 2005,2006,2007,2008 Free Software Foundation, Inc.
> + *
> + * GRUB is free software: you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation, either version 3 of the License, or
> + * (at your option) any later version.
> + *
> + * GRUB is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef GRUB_KERNEL_CPU_HEADER
> +#define GRUB_KERNEL_CPU_HEADER 1
> +
> +#define GRUB_MOD_ALIGN 0x1000
> +
> +/* Minimal gap between _end and the start of the modules. It's a hack
> + for PowerMac to prevent "CLAIM failed" error. The real fix is to
> + rewrite grub-mkimage to generate valid ELF files. */
> +#define GRUB_MOD_GAP 0x8000
> +
> +/* prefix not supported on powerpc yet. */
> +#define GRUB_KERNEL_CPU_PREFIX 0
> +#define GRUB_KERNEL_CPU_DATA_END 0
> +
> +#endif
> Index: include/grub/i386/ieee1275/kernel.h
> ===================================================================
> --- include/grub/i386/ieee1275/kernel.h (revision 1767)
> +++ include/grub/i386/ieee1275/kernel.h (working copy)
> @@ -1,4 +1 @@
> #include <grub/powerpc/ieee1275/kernel.h>
> -
> -#define GRUB_KERNEL_MACHINE_PREFIX 0x2
> -#define GRUB_KERNEL_MACHINE_DATA_END 0x42
> Index: include/grub/i386/kernel.h
> ===================================================================
> --- include/grub/i386/kernel.h (revision 0)
> +++ include/grub/i386/kernel.h (revision 0)
> @@ -0,0 +1,30 @@
> +/*
> + * GRUB -- GRand Unified Bootloader
> + * Copyright (C) 2005,2006,2007,2008 Free Software Foundation, Inc.
> + *
> + * GRUB is free software: you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation, either version 3 of the License, or
> + * (at your option) any later version.
> + *
> + * GRUB is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef GRUB_KERNEL_CPU_HEADER
> +#define GRUB_KERNEL_CPU_HEADER 1
> +
> +#define GRUB_MOD_ALIGN 0x1000
> +
> +/* Non-zero value is only needed for PowerMacs. */
> +#define GRUB_MOD_GAP 0x0
> +
> +#define GRUB_KERNEL_CPU_PREFIX 0x2
> +#define GRUB_KERNEL_CPU_DATA_END 0x42
> +
> +#endif
> Index: include/grub/i386/coreboot/kernel.h
> ===================================================================
> --- include/grub/i386/coreboot/kernel.h (revision 1767)
> +++ include/grub/i386/coreboot/kernel.h (working copy)
> @@ -21,16 +21,8 @@
>
> #include <grub/symbol.h>
>
> -#define GRUB_MOD_ALIGN 0x1000
> -
> -/* Non-zero value is only needed for some IEEE-1275 platforms. */
> -#define GRUB_MOD_GAP 0
> -
> #ifndef ASM_FILE
> extern char grub_prefix[];
> #endif
>
> -#define GRUB_KERNEL_MACHINE_PREFIX 0x2
> -#define GRUB_KERNEL_MACHINE_DATA_END 0x42
> -
> #endif /* ! GRUB_KERNEL_MACHINE_HEADER */
> Index: util/ieee1275/grub-install.in
> ===================================================================
> --- util/ieee1275/grub-install.in (revision 1767)
> +++ util/ieee1275/grub-install.in (working copy)
> @@ -34,7 +34,7 @@
> platform=@platform@
> pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}`
>
> -grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}`
> +grub_mkimage=${bindir}/`echo grub-mkelfimage | sed ${transform}`
> grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
> grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
> rootdir=
> @@ -182,7 +182,7 @@
> modules="$modules $fs_module $partmap_module $devabstraction_module"
>
> # Now perform the installation.
> -"$grub_mkimage" --output=${grubdir}/grub $modules || exit 1
> +"$grub_mkimage" --directory=${pkglibdir} --output=${grubdir}/grub $modules || exit 1
>
> if test $update_nvram = yes; then
> set $ofpathname dummy
> Index: util/elf/grub-mkimage.c
> ===================================================================
> --- util/elf/grub-mkimage.c (revision 1767)
> +++ util/elf/grub-mkimage.c (working copy)
> @@ -30,7 +30,7 @@
> #include <grub/util/misc.h>
> #include <grub/util/resolve.h>
> #include <grub/kernel.h>
> -#include <grub/machine/kernel.h>
> +#include <grub/cpu/kernel.h>
>
> #define GRUB_IEEE1275_NOTE_NAME "PowerPC"
> #define GRUB_IEEE1275_NOTE_TYPE 0x1275
> @@ -297,9 +297,9 @@
>
> if (prefix)
> {
> - if (GRUB_KERNEL_MACHINE_PREFIX + strlen (prefix) + 1 > GRUB_KERNEL_MACHINE_DATA_END)
> + if (GRUB_KERNEL_CPU_PREFIX + strlen (prefix) + 1 > GRUB_KERNEL_CPU_DATA_END)
> grub_util_error ("prefix too long");
> - grub_util_write_image_at (prefix, strlen (prefix) + 1, first_segment + GRUB_KERNEL_MACHINE_PREFIX, out);
> + grub_util_write_image_at (prefix, strlen (prefix) + 1, first_segment + GRUB_KERNEL_CPU_PREFIX, out);
> }
>
> free (phdrs);
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/grub-devel
--
Robert Millan
The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
how) you may access your data; but nobody's threatening your freedom: we
still allow you to remove your data and not access it at all."
prev parent reply other threads:[~2008-08-14 19:06 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-03 21:04 [PATCH] grub-mkelfimage Robert Millan
2008-08-05 10:10 ` Marco Gerards
2008-08-07 13:15 ` Robert Millan
2008-08-10 18:41 ` Robert Millan
2008-08-13 9:16 ` Marco Gerards
2008-08-14 19:04 ` Robert Millan [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080814190445.GA20140@thorin \
--to=rmh@aybabtu.com \
--cc=grub-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.