grub-devel
[Top][All Lists]
Advanced

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

Re: [RFC PATCH 21/23] powerpc64 is not necessarily BigEndian anymore! :)


From: Vladimir 'phcoder' Serbinenko
Subject: Re: [RFC PATCH 21/23] powerpc64 is not necessarily BigEndian anymore! :)
Date: Thu, 3 Apr 2014 23:41:26 +0200


On 3 Apr 2014 22:33, "Ram Pai" <address@hidden> wrote:
>
> On Thu, Apr 03, 2014 at 11:54:46PM +0400, Andrey Borzenkov wrote:
> > В Thu, 3 Apr 2014 12:26:57 -0700
> > Ram Pai <address@hidden> пишет:
> >
> > > > > >
> > > > > > > Well. that is the issue.  Various distros have varied support for
> > > > > > > cross-compilation (multi-arch support). If the distro does not
> > > > > > > have 32bit BE libraries natively installed (out-of-the-box), they
> > > > > > > wont be able to generate a 32bit BE grub loader.
> > > > > >
> > > > > > We speak only about target code that runs at boot time. This code does
> > > > > > not use any library.
> > > > >
> > > > > I am not a compiler/toolchain expert. But dont we need all the necessary
> > > > > tools and libraries in /lib/<arch>-<dist>-linux/ directory for cross
> > > > > compilation; even to generate static executables?
> > > > >
> > > > > > It only needs compiler support. GRUB does not
> > > > > > support anything besides gcc and recently some clang support was added.
> > > > > > Do you have real life example of distribution which does not support
> > > > > > -mbig gcc option to produce big-endian *code*?
> > > > >
> > > > > This is ideally what I want too. But it is not possible
> > > > > **out-of-the-box** on any distro for power arch.  I am told
> > > > > that debian has a new multi-arch support added which makes this
> > > > > work out-of-the-box, but it is still in early stages to work
> > > > > seemlessly **out-of-the-box**. I may be wrong.
> > > > >
> > > >
> > > > If distribution is capable of building Linux kernel, it should be
> > > > capable of compiling 32 bit big-endian code. Linux startup code on
> > > > PowerPC is built as 32 bit big-endian:
> > > >
> > > > BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
> > > >                  -fno-strict-aliasing -Os -msoft-float -pipe \
> > > >                  -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \
> > > >                  -isystem $(shell $(CROSS32CC) -print-file-name=include) \
> > > >                  -mbig-endian
> > >
> > >
> > > But that is different though. Yes it is possible to cross compile for
> > > any target on any arch.  But the key is that the environment needs to be
> > > setup to do so.
> > >
> > > We are talking about generating crosscompiled grub boot loader by an
> > > uninitiated/not-so-expert adminstrator. If the distribution makes it
> > > easy for that administrator to be able to cross-compile, than life is
> > > easy.  But that is not generally the case though.
> >
> > E-h-h ... could you be more specific? You need exactly the same tool
> > set to compile 32 bit big-endian grub as to compile Linux kernel. So
> > it follows that generally it is impossible to compile Linux kernel on
> > distributions for ppc64le. Is it what you mean?
>
> It is not possible to generate a ppc64be kernel on a ppc64le distro.
> Toolchain does not support it.  Vice-versa is possible.
>
>
No. Ppc64le kernel has some BE code. If you can compile ppc64le kernel you can compile ppc32be GRUB
> >
> > >                                                   The administrator has
> > > to scramble around to find the right cross-compilation setup installed
> > > on her system to achieve the end result.
> > >
> >
> > I try to understand what exactly is required beyond what is needed to
> > compile Linux kernel? I do not consider need to install a couple of
> > RPMs as high burden.
> >
> > Here is what grub2 on SUSE needs:
> >
> > %ifarch x86_64 ppc64
> > BuildRequires:  gcc-32bit
> > BuildRequires:  glibc-32bit
> > BuildRequires:  glibc-devel-32bit
> > %else
> > BuildRequires:  gcc
> > BuildRequires:  glibc-devel
> > %ifarch s390x
> > BuildRequires:  glibc-static
> > %endif
> > %endif
> >
> > See https://build.opensuse.org/package/show/Base:System/grub2 for
> > details. It simply forces -m32 -big-endian for powerpc. It also includes
> > brute-force patche to work around libgcc issue that probably may be
> > done differently, but otherwise it is amazingly small change.
>
> They generate a 32bit BE grub binary  on a LE system?  No. I dont think
> so. Because the cross-compile tool chain is not enabled do so.
>
> --
> Ram Pai
>
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel


reply via email to

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