grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 1/2] Add powerpc little-endian (ppc64le) flags


From: Vladimir 'φ-coder/phcoder' Serbinenko
Subject: Re: [PATCH 1/2] Add powerpc little-endian (ppc64le) flags
Date: Wed, 15 Jul 2015 19:36:35 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.7.0

On 04.07.2015 08:46, Andrei Borzenkov wrote:
> В Tue, 30 Jun 2015 21:34:10 +0200
> "Vladimir 'phcoder' Serbinenko" <address@hidden> пишет:
> 
>> 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" <address@hidden> a écrit :
>>
>>> В Tue, 30 Jun 2015 15:05:46 -0300
>>> Paulo Flabiano Smorigo <address@hidden> пишет:
>>>
>>>> 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:
> 
> address@hidden:~/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.
> address@hidden:~/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.
> 


Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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