diff mbox series

[1/1] toolchain/toolchain-buildroot: PPC64 support in musl requires ALTIVEC

Message ID 20200131144106.18054-1-vfazio@xes-inc.com
State Superseded
Headers show
Series [1/1] toolchain/toolchain-buildroot: PPC64 support in musl requires ALTIVEC | expand

Commit Message

Vincent Fazio Jan. 31, 2020, 2:41 p.m. UTC
musl assumes all PPC64(LE) CPUs support ALTIVEC instructions. However,
the e5500 does not support ALTIVEC so builds targeting this CPU using
musl will generate illegal instructions.

Disable musl if the PPC64(LE) CPU does not support ALTIVEC instructions.

Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
---
 toolchain/toolchain-buildroot/Config.in | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Romain Naour Jan. 31, 2020, 2:55 p.m. UTC | #1
Hi Vincent,

Le 31/01/2020 à 15:41, Vincent Fazio a écrit :
> musl assumes all PPC64(LE) CPUs support ALTIVEC instructions. However,
> the e5500 does not support ALTIVEC so builds targeting this CPU using
> musl will generate illegal instructions.
> 
> Disable musl if the PPC64(LE) CPU does not support ALTIVEC instructions.

Thanks for this patch.

Can you add these two links from my toolchains-builder instance:
https://gitlab.com/kubu93/toolchains-builder/-/jobs/418092743
https://gitlab.com/kubu93/toolchains-builder/-/jobs/418092744

Also I'm adding Matt in Cc:

Best regards,
Romain

> 
> Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
> ---
>  toolchain/toolchain-buildroot/Config.in | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
> index a980f766ac..09a46822c9 100644
> --- a/toolchain/toolchain-buildroot/Config.in
> +++ b/toolchain/toolchain-buildroot/Config.in
> @@ -83,8 +83,10 @@ config BR2_TOOLCHAIN_BUILDROOT_MUSL
>  	bool "musl"
>  	depends on BR2_aarch64	   || BR2_arm   || BR2_armeb   || BR2_i386 || \
>  		   BR2_microblaze  || BR2_mips  || BR2_mipsel  || BR2_mips64 || \
> -		   BR2_mips64el    || BR2_or1k  || BR2_powerpc || BR2_powerpc64 || \
> -		   BR2_powerpc64le || BR2_RISCV_64 || BR2_sh   || BR2_x86_64
> +		   BR2_mips64el    || BR2_or1k  || BR2_powerpc || BR2_RISCV_64 || \
> +		   BR2_sh	   || BR2_x86_64 || \
> +		   ((BR2_powerpc64 || BR2_powerpc64le) && BR2_POWERPC_CPU_HAS_ALTIVEC)
> +		   # musl assumes all PPC64 targets support ALTIVEC instructions
>  	depends on !BR2_powerpc_SPE # not supported, build breaks
>  	# sh2 nommu is supported by musl, but we don't have support
>  	# for it in Buildroot.
>
Matt Weber Jan. 31, 2020, 3:11 p.m. UTC | #2
Vincent,

On Fri, Jan 31, 2020 at 8:56 AM Romain Naour <romain.naour@smile.fr> wrote:
>
> Hi Vincent,
>
> Le 31/01/2020 à 15:41, Vincent Fazio a écrit :
> > musl assumes all PPC64(LE) CPUs support ALTIVEC instructions. However,
> > the e5500 does not support ALTIVEC so builds targeting this CPU using
> > musl will generate illegal instructions.
> >
> > Disable musl if the PPC64(LE) CPU does not support ALTIVEC instructions.
>
> Thanks for this patch.

Thanks as well for the patch.  It actually applies to both LE and BE
e5500 targets

>
> Can you add these two links from my toolchains-builder instance:
> https://gitlab.com/kubu93/toolchains-builder/-/jobs/418092743
> https://gitlab.com/kubu93/toolchains-builder/-/jobs/418092744
>
> Also I'm adding Matt in Cc:
>
> Best regards,
> Romain
>
> >
> > Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
> > ---
> >  toolchain/toolchain-buildroot/Config.in | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
> > index a980f766ac..09a46822c9 100644
> > --- a/toolchain/toolchain-buildroot/Config.in
> > +++ b/toolchain/toolchain-buildroot/Config.in
> > @@ -83,8 +83,10 @@ config BR2_TOOLCHAIN_BUILDROOT_MUSL
> >       bool "musl"
> >       depends on BR2_aarch64     || BR2_arm   || BR2_armeb   || BR2_i386 || \
> >                  BR2_microblaze  || BR2_mips  || BR2_mipsel  || BR2_mips64 || \
> > -                BR2_mips64el    || BR2_or1k  || BR2_powerpc || BR2_powerpc64 || \
> > -                BR2_powerpc64le || BR2_RISCV_64 || BR2_sh   || BR2_x86_64
> > +                BR2_mips64el    || BR2_or1k  || BR2_powerpc || BR2_RISCV_64 || \
> > +                BR2_sh          || BR2_x86_64 || \
> > +                ((BR2_powerpc64 || BR2_powerpc64le) && BR2_POWERPC_CPU_HAS_ALTIVEC)
> > +                # musl assumes all PPC64 targets support ALTIVEC instructions
> >       depends on !BR2_powerpc_SPE # not supported, build breaks
> >       # sh2 nommu is supported by musl, but we don't have support
> >       # for it in Buildroot.
> >
>
Vincent Fazio Jan. 31, 2020, 3:17 p.m. UTC | #3
Matthew,

On 1/31/20 9:11 AM, Matthew Weber wrote:
> Vincent,
>
> On Fri, Jan 31, 2020 at 8:56 AM Romain Naour <romain.naour@smile.fr> wrote:
>> Hi Vincent,
>>
>> Le 31/01/2020 à 15:41, Vincent Fazio a écrit :
>>> musl assumes all PPC64(LE) CPUs support ALTIVEC instructions. However,
>>> the e5500 does not support ALTIVEC so builds targeting this CPU using
>>> musl will generate illegal instructions.
>>>
>>> Disable musl if the PPC64(LE) CPU does not support ALTIVEC instructions.
>> Thanks for this patch.
> Thanks as well for the patch.  It actually applies to both LE and BE
> e5500 targets
The config change takes this into account. The e5500 was an example CPU 
but the change is effective for any endianness of PPC64 that does not 
support ALTIVEC (in case a new scenario pops up). As far as i'm aware, 
the e5500 is big endian only.

I will update the commit message & title to be more clear.
>> Can you add these two links from my toolchains-builder instance:
>> https://gitlab.com/kubu93/toolchains-builder/-/jobs/418092743
>> https://gitlab.com/kubu93/toolchains-builder/-/jobs/418092744
>>
>> Also I'm adding Matt in Cc:
>>
>> Best regards,
>> Romain
>>
>>> Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
>>> ---
>>>   toolchain/toolchain-buildroot/Config.in | 6 ++++--
>>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
>>> index a980f766ac..09a46822c9 100644
>>> --- a/toolchain/toolchain-buildroot/Config.in
>>> +++ b/toolchain/toolchain-buildroot/Config.in
>>> @@ -83,8 +83,10 @@ config BR2_TOOLCHAIN_BUILDROOT_MUSL
>>>        bool "musl"
>>>        depends on BR2_aarch64     || BR2_arm   || BR2_armeb   || BR2_i386 || \
>>>                   BR2_microblaze  || BR2_mips  || BR2_mipsel  || BR2_mips64 || \
>>> -                BR2_mips64el    || BR2_or1k  || BR2_powerpc || BR2_powerpc64 || \
>>> -                BR2_powerpc64le || BR2_RISCV_64 || BR2_sh   || BR2_x86_64
>>> +                BR2_mips64el    || BR2_or1k  || BR2_powerpc || BR2_RISCV_64 || \
>>> +                BR2_sh          || BR2_x86_64 || \
>>> +                ((BR2_powerpc64 || BR2_powerpc64le) && BR2_POWERPC_CPU_HAS_ALTIVEC)
>>> +                # musl assumes all PPC64 targets support ALTIVEC instructions
>>>        depends on !BR2_powerpc_SPE # not supported, build breaks
>>>        # sh2 nommu is supported by musl, but we don't have support
>>>        # for it in Buildroot.
>>>
>
diff mbox series

Patch

diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
index a980f766ac..09a46822c9 100644
--- a/toolchain/toolchain-buildroot/Config.in
+++ b/toolchain/toolchain-buildroot/Config.in
@@ -83,8 +83,10 @@  config BR2_TOOLCHAIN_BUILDROOT_MUSL
 	bool "musl"
 	depends on BR2_aarch64	   || BR2_arm   || BR2_armeb   || BR2_i386 || \
 		   BR2_microblaze  || BR2_mips  || BR2_mipsel  || BR2_mips64 || \
-		   BR2_mips64el    || BR2_or1k  || BR2_powerpc || BR2_powerpc64 || \
-		   BR2_powerpc64le || BR2_RISCV_64 || BR2_sh   || BR2_x86_64
+		   BR2_mips64el    || BR2_or1k  || BR2_powerpc || BR2_RISCV_64 || \
+		   BR2_sh	   || BR2_x86_64 || \
+		   ((BR2_powerpc64 || BR2_powerpc64le) && BR2_POWERPC_CPU_HAS_ALTIVEC)
+		   # musl assumes all PPC64 targets support ALTIVEC instructions
 	depends on !BR2_powerpc_SPE # not supported, build breaks
 	# sh2 nommu is supported by musl, but we don't have support
 	# for it in Buildroot.