[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.
>
signature.asc
Description: OpenPGP digital signature
Re: [PATCH 1/2] Add powerpc little-endian (ppc64le) flags,
Vladimir 'φ-coder/phcoder' Serbinenko <=