On 03.04.2014 21:54, Andrey Borzenkov wrote: > В Thu, 3 Apr 2014 12:26:57 -0700 > Ram Pai <linux...@us.ibm.com> пишет: > >>>>> >>>>>> 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
I see you have some outdated patches like btrfs ones, you shouldn't need them now (didn't really look in them). As for eliminating libgcc dependency I created branch phcoder/no-libgcc. For ppc only ucmpdi2 was needed actually. > 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. >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel