[OE-core] [OE-Core][PATCH 05/13] arch-powerpc64.inc: Use elfv2 ABI when building with musl

Serhey Popovych serhe.popovych at gmail.com
Mon Dec 17 09:36:42 UTC 2018


Khem Raj wrote:
> On Fri, Dec 14, 2018 at 9:56 AM Serhey Popovych
> <serhe.popovych at gmail.com> wrote:
>>
>> Historically first PowerPC ABI was big-endian only (elfv1 currently). It
>> is standard ABI for both 32-bit ppc and 64-bit ppc64 architectures.
>>
>> With PowerPC little-endian support new ABI was introduced (elfv2) and it
>> is used primarily with ppc64le target only. While it has support for
>> big-endian it is not commonly used and elfv1 still preferred.
>>
>> Musl does support only elfv2 ABI for both LE and BE and does not have
>> any plans to support elfv1.
>>
>> Since then to build for powerpc64 with musl new ABI should be used. As
>> expected it is not compatible with elfv1 but that isn't problem as long
>> as there is no binary distributed software or assembly code written for
>> elfv1 ABI.
>>
>> Signed-off-by: Serhey Popovych <serhe.popovych at gmail.com>
>> ---
>>  meta/conf/machine/include/powerpc/arch-powerpc64.inc | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/meta/conf/machine/include/powerpc/arch-powerpc64.inc b/meta/conf/machine/include/powerpc/arch-powerpc64.inc
>> index f751c6b..d9916d4 100644
>> --- a/meta/conf/machine/include/powerpc/arch-powerpc64.inc
>> +++ b/meta/conf/machine/include/powerpc/arch-powerpc64.inc
>> @@ -7,6 +7,9 @@ TUNECONFLICTS[m64] = "m32 nf"
>>  TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'm64', ' -m64', '', d)}"
>>  TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', [ 'm64' ], 'powerpc64', '', d)}"
>>
>> +# musl only supports elfv2 ABI for ppc64
>> +TUNE_CCARGS .= "${@['', ' -mabi=elfv2']['libc-musl' in d.getVar('OVERRIDES').split(':')]}"
>> +
> 
> I wonder if we should change gcc to use this ABI by default when
> configured for ppc64/musl ?
> This would avoid us adding compiler options here, in bad cases it may
> be that other compilers
> call it out differently.

Good point. This should be easy to do with patch applied for libc-musl
override.

> 
>>  # user mode qemu doesn't support ppc64
>>  MACHINE_FEATURES_BACKFILL_CONSIDERED_append = " ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'qemu-usermode', '', d)}"
>>
>> --
>> 2.7.4
>>
>> --
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20181217/c457a13d/attachment.sig>


More information about the Openembedded-core mailing list