On 04.07.2015 08:46, Andrei Borzenkov wrote: > В Tue, 30 Jun 2015 21:34:10 +0200 > "Vladimir 'phcoder' Serbinenko" <phco...@gmail.com> пишет: > >> I think those flags disable only runtime libraries, not the code generation > > Yes, you are right. Clang seems to be built for the whole family, i.e. > PowerPC, which seems to automatically include all three versions (ppc, > ppc64, ppc64le) > > See below for details. > >> Le 30 juin 2015 20:29, "Andrei Borzenkov" <arvidj...@gmail.com> a écrit : >> >>> В Tue, 30 Jun 2015 15:05:46 -0300 >>> Paulo Flabiano Smorigo <pfsmor...@linux.vnet.ibm.com> пишет: >>> >>>> On 2015-06-30 11:33, Vladimir 'phcoder' Serbinenko wrote: >>>>> What about clang? >>>> >>>> Not good news about clang support. This is what the toolchain team said >>>> about it: >>>> >>>> The -mbig-endian option was added around April 10th, 2014. >>>> Unfortunately, those who implemented it only implemented it for ARM and >>>> one other architecture. >>>> >>>> The option is currently accepted on Power systems, but does not have any >>>> affect on the code generation for Power. >>>> > > Support for it looks rather trivial; see attached patch. Anyone has good > connection to clang development community? > Just send it to their ML. They usually have good response. If this patch is accepted we can probably simplify it in our code > Using this patch the > > clang --target=powerpc64le -mbig-endian -m32 produces code for PPC32 > BE, so just works: > > bor@opensuse:~/build/clang-ppc/bin> ./clang --target=powerpc64le -c > -mbig-endian -m32 /tmp/foo.c > /tmp/foo.c:1:1: warning: type specifier missing, defaults to 'int' > [-Wimplicit-int] > foo() > ^ > 1 warning generated. > bor@opensuse:~/build/clang-ppc/bin> file foo.o > foo.o: ELF 32-bit MSB relocatable, PowerPC or cisco 4500, version 1 (SYSV), > not stripped > > The problem is that in this case we do not really have any way to test > if it works in configure, so no way to fail gracefully. > Just check the defines. >>>> >>>> So, what can we do here? Maybe add a constrain in the configure file >>>> saying that it's not possible to build GRUB in a LE environment using >>> clang. >>> >>> If I understand it correctly, it is possible to build for big-endian >>> PowerPC using >>> >>> clang -target=powerpc >>> >>> but then we depend on clang being built with BE target support; and >>> e.g. openSUSE builds it with >>> > > Yes, that works too. But I'm not sure how we can test for it. Brute > force would of course be > > $TARGET_CC --version | grep clang && TARGET_CFLAGS=--target=powerpc > > Comments? I'm inclined to use this workaround. This still may have > issues when using external assembler, but here we can simply mandate > support for clang 3.6 at the minimum, which should use integrated > assembler on PPC by default. >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel