On 07/13/2010 07:45 AM, Anton Blanchard wrote:
> Hi,
>
> PowerPC Linux kernels can now be built relocatable so we need to check
> for that in the loader.
>
> Anton
>
>
Is building as ET_DYN supported upstream? We previously had reports of
building system of some distros to be plainly borked and usualy the
distro fixed their building system pretty fast. If upstream supports
ET_DYN, then this patch is accepted with no further questions. But if
it's a borked building system it may have subtle bugs and allowing it
would probably just suppress an early symptom of other problems.
> --
>
> 2010-07-13 Anton Blanchard <[email protected]>
>
> * loader/powerpc/ieee1275/linux.c (grub_cmd_linux): Do not reject
> ET_DYN files.
>
> Index: grub/loader/powerpc/ieee1275/linux.c
> ===================================================================
> --- grub.orig/loader/powerpc/ieee1275/linux.c 2010-07-11 12:05:16.443242734 +1000
> +++ grub/loader/powerpc/ieee1275/linux.c 2010-07-12 14:56:20.301991065 +1000
> @@ -220,7 +220,7 @@ grub_cmd_linux (grub_command_t cmd __att
> if (! elf)
> goto out;
>
> - if (elf->ehdr.ehdr32.e_type != ET_EXEC)
> + if (elf->ehdr.ehdr32.e_type != ET_EXEC && elf->ehdr.ehdr32.e_type != ET_DYN)
> {
> grub_error (GRUB_ERR_UNKNOWN_OS,
> "this ELF file is not of the right type");
>
> _______________________________________________
> Grub-devel mailing list
> [email protected]
> http://lists.gnu.org/mailman/listinfo/grub-devel
>
>
--
Regards
Vladimir 'φ-coder/phcoder' Serbinenko
Hi,
> Is building as ET_DYN supported upstream? We previously had reports of
> building system of some distros to be plainly borked and usualy the
> distro fixed their building system pretty fast. If upstream supports
> ET_DYN, then this patch is accepted with no further questions. But if
> it's a borked building system it may have subtle bugs and allowing it
> would probably just suppress an early symptom of other problems.
This is supported upstream on a number of architectures, for example
the PowerPC configuration option is:
config RELOCATABLE
bool "Build a relocatable kernel"
help
This builds a kernel image that is capable of running anywhere
in the RMA (real memory area) at any 16k-aligned base address.
The kernel is linked as a position-independent executable (PIE)
and contains dynamic relocations which are processed early
in the bootup process.
One use is for the kexec on panic case where the recovery kernel
must live at a different physical address than the primary
kernel.
Regards,
Anton
> > 2010-07-13 Anton Blanchard <[email protected]>
> >
> > * loader/powerpc/ieee1275/linux.c (grub_cmd_linux): Do not reject
> > ET_DYN files.
> >
> > Index: grub/loader/powerpc/ieee1275/linux.c
> > ===================================================================
> > --- grub.orig/loader/powerpc/ieee1275/linux.c 2010-07-11 12:05:16.443242734 +1000
> > +++ grub/loader/powerpc/ieee1275/linux.c 2010-07-12 14:56:20.301991065 +1000
> > @@ -220,7 +220,7 @@ grub_cmd_linux (grub_command_t cmd __att
> > if (! elf)
> > goto out;
> >
> > - if (elf->ehdr.ehdr32.e_type != ET_EXEC)
> > + if (elf->ehdr.ehdr32.e_type != ET_EXEC && elf->ehdr.ehdr32.e_type != ET_DYN)
> > {
> > grub_error (GRUB_ERR_UNKNOWN_OS,
> > "this ELF file is not of the right type");