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: Andrey Borzenkov
Subject: Re: [RFC PATCH 21/23] powerpc64 is not necessarily BigEndian anymore! :)
Date: Thu, 3 Apr 2014 23:54:46 +0400

В 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?

>                                                   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.



reply via email to

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