Re: [gentoo-dev] [PATCH] Profile-enforced big-endian USE flag

2017-07-01 Thread James Le Cuirot
On Thu, 29 Jun 2017 22:19:58 +0100
James Le Cuirot  wrote:

> On Wed, 28 Jun 2017 23:29:03 +0100
> James Le Cuirot  wrote:
> 
> > > On Tue, Jun 27, 2017 at 6:44 PM, James Le Cuirot  
> > > wrote:
> > > > I am therefore proposing a new global big-endian flag. This could be
> > > > masked by default and unmasked + forced in the relevant profiles under
> > > > arch. I will apply this according to the mapping defined in tc-endian of
> > > > toolchain-funcs.eclass.  
> > 
> > I've just been putting the patch together. I made it slightly simpler
> > by masking *and* forcing it by default so that it only needs to be
> > unmasked were necessary.  
> 
> Feedback seems positive so here is the patch. I'll apply it late next
> week as I don't need it immediately and I will be away until then.
> 
> ---
> 
> diff --git a/profiles/arch/powerpc/use.mask b/profiles/arch/powerpc/use.mask
> index 6f993c6628c0..02e97b16f06d 100644
> --- a/profiles/arch/powerpc/use.mask
> +++ b/profiles/arch/powerpc/use.mask
> @@ -1,6 +1,13 @@
> +# Copyright 1999-2017 Gentoo Foundation
> +# Distributed under the terms of the GNU General Public License v2
> +
>  # PPC Specific use flags
>  #
>  
> +# James Le Cuirot  (29 Jun 2017)
> +# Forced and masked by default. Unmask where necessary.
> +big-endian
> +
>  # Matt Turner  (24 Mar 2017)
>  # virtual/opencl is not keyworded
>  opencl

Just noticed a copy/pasta fail here. Obviously should be -big-endian.


pgpqC_NlS_M57.pgp
Description: OpenPGP digital signature


Re: [gentoo-dev] [PATCH] Profile-enforced big-endian USE flag

2017-07-01 Thread Tobias Klausmann
Hi! 

On Thu, 29 Jun 2017, James Le Cuirot wrote:
> > No. Alpha is little endian.
> 
> Wikipedia says it is bi. tc-native() reports alpha* as big so I guess
> that's the only variant we support? Then again, this page says it is
> usually little. Is tc-native() wrong?
> 
> https://kernelnewbies.org/EndianIssues

For the purposes of explanation, let's distinguish
Alpha-the-processor from Alpha-the-systems here.

Yes, the AtP can be switched between big- and little-endianess.

AtS can't. That is, once built, hardware-wise, it has to be
either, but can never switch. Even the firmware has to be
different between LE and BE systems.

There are a lot of LE Alpha systems, in essence, everything that
was ever sold as an Alpha system by DEC, Compaq, HP and sundry
others (like Samsung, who made the UP1500 and related systems).
As a guideline: if it ever ran True64, OSF/1 or digital alpha
UNIX, it is little-endian.

The machines that run Alpha CPUs in big-endian mode are
exclusively Cray supercomputers like the Cray T3D and T3E series.

Linux only ever supported parts of the former group (e.g. the
high-end Alpha server GS1280 series from Compaq is definitely not,
despite running in little-endian mode). The big endian Crays were
never even close to be supported.

tl;dr: Alpha is little-endian only for (our) practical purposes.

Regards,
Tobias

PS: There may be obscure one-off or developer boards for Alphas
which can switch, but the tl;dr still stands.


-- 
Sent from aboard the Culture ship
GSV (Range Class) Ethics Gradient



Re: [gentoo-dev] [PATCH] Profile-enforced big-endian USE flag

2017-06-29 Thread James Le Cuirot
On Thu, 29 Jun 2017 14:37:49 -0700
Matt Turner  wrote:

> On Thu, Jun 29, 2017 at 2:19 PM, James Le Cuirot  wrote:
> > On Wed, 28 Jun 2017 23:29:03 +0100
> > James Le Cuirot  wrote:
> >  
> >> > On Tue, Jun 27, 2017 at 6:44 PM, James Le Cuirot  
> >> > wrote:  
> >> > > I am therefore proposing a new global big-endian flag. This could be
> >> > > masked by default and unmasked + forced in the relevant profiles under
> >> > > arch. I will apply this according to the mapping defined in tc-endian 
> >> > > of
> >> > > toolchain-funcs.eclass.  
> >>
> >> I've just been putting the patch together. I made it slightly simpler
> >> by masking *and* forcing it by default so that it only needs to be
> >> unmasked were necessary.  
> >
> > Feedback seems positive so here is the patch. I'll apply it late next
> > week as I don't need it immediately and I will be away until then.
> >
> > ---
> >
> > diff --git a/profiles/arch/alpha/use.mask b/profiles/arch/alpha/use.mask
> > index d488fe8a09f4..b17afe9d9d4d 100644
> > --- a/profiles/arch/alpha/use.mask
> > +++ b/profiles/arch/alpha/use.mask
> > @@ -1,6 +1,10 @@
> >  # Copyright 1999-2017 Gentoo Foundation.
> >  # Distributed under the terms of the GNU General Public License, v2
> >
> > +# James Le Cuirot  (29 Jun 2017)
> > +# Unmask as this profile is big endian.
> > +-big-endian  
> 
> No. Alpha is little endian.

Wikipedia says it is bi. tc-native() reports alpha* as big so I guess
that's the only variant we support? Then again, this page says it is
usually little. Is tc-native() wrong?

https://kernelnewbies.org/EndianIssues

> > --- /dev/null
> > +++ b/profiles/arch/mips/mipsel/use.mask
> > @@ -0,0 +1,6 @@
> > +# Copyright 1999-2017 Gentoo Foundation
> > +# Distributed under the terms of the GNU General Public License v2
> > +
> > +# James Le Cuirot  (29 Jun 2017)
> > +# Remask as this profile is little endian.
> > +big-endian
> > diff --git a/profiles/arch/mips/use.mask b/profiles/arch/mips/use.mask
> > index 09ac8ca4b2cc..6caff81617cb 100644
> > --- a/profiles/arch/mips/use.mask
> > +++ b/profiles/arch/mips/use.mask
> > @@ -4,6 +4,10 @@
> >  # Unmask the flag which corresponds to ARCH.
> >  -mips
> >
> > +# James Le Cuirot  (29 Jun 2017)
> > +# Unmask as this profile is big endian.
> > +-big-endian  
> 
> I'm not sure if this one is correct. arch/mips/mipsel's 'parent' file
> contains '..'
> 
> I think if you re-mask big-endian in arch/mips/mipsel it'll work, and
> that seems like the best way to solve it.

That's what I did?


pgpusFUoTbJJb.pgp
Description: OpenPGP digital signature


Re: [gentoo-dev] [PATCH] Profile-enforced big-endian USE flag

2017-06-29 Thread Matt Turner
On Thu, Jun 29, 2017 at 2:19 PM, James Le Cuirot  wrote:
> On Wed, 28 Jun 2017 23:29:03 +0100
> James Le Cuirot  wrote:
>
>> > On Tue, Jun 27, 2017 at 6:44 PM, James Le Cuirot  wrote:
>> > > I am therefore proposing a new global big-endian flag. This could be
>> > > masked by default and unmasked + forced in the relevant profiles under
>> > > arch. I will apply this according to the mapping defined in tc-endian of
>> > > toolchain-funcs.eclass.
>>
>> I've just been putting the patch together. I made it slightly simpler
>> by masking *and* forcing it by default so that it only needs to be
>> unmasked were necessary.
>
> Feedback seems positive so here is the patch. I'll apply it late next
> week as I don't need it immediately and I will be away until then.
>
> ---
>
> From e6aaee518b5e7eab735116a2ea57d538a8e26c19 Mon Sep 17 00:00:00 2001
> From: James Le Cuirot 
> Date: Thu, 29 Jun 2017 22:11:49 +0100
> Subject: [PATCH] profiles: Add profile-enforced global big-endian USE flag
>
> The flag is forced and masked by default and then unmasked where
> necessary. Note that there are some big endian host values listed in
> tc-endian() that we do not have profiles for.
> ---
>  profiles/arch/alpha/use.mask  | 4 
>  profiles/arch/arm64/big-endian/use.mask   | 6 ++
>  profiles/arch/base/use.force  | 6 ++
>  profiles/arch/base/use.mask   | 4 
>  profiles/arch/hppa/use.mask   | 4 
>  profiles/arch/m68k/use.mask   | 7 +++
>  profiles/arch/mips/mipsel/use.mask| 6 ++
>  profiles/arch/mips/use.mask   | 4 
>  profiles/arch/powerpc/ppc64/64le/use.mask | 4 
>  profiles/arch/powerpc/use.mask| 7 +++
>  profiles/arch/s390/use.mask   | 7 +++
>  profiles/arch/sparc/use.mask  | 4 
>  profiles/use.desc | 3 ++-
>  13 files changed, 65 insertions(+), 1 deletion(-)
>  create mode 100644 profiles/arch/arm64/big-endian/use.mask
>  create mode 100644 profiles/arch/base/use.force
>  create mode 100644 profiles/arch/mips/mipsel/use.mask
>
> diff --git a/profiles/arch/alpha/use.mask b/profiles/arch/alpha/use.mask
> index d488fe8a09f4..b17afe9d9d4d 100644
> --- a/profiles/arch/alpha/use.mask
> +++ b/profiles/arch/alpha/use.mask
> @@ -1,6 +1,10 @@
>  # Copyright 1999-2017 Gentoo Foundation.
>  # Distributed under the terms of the GNU General Public License, v2
>
> +# James Le Cuirot  (29 Jun 2017)
> +# Unmask as this profile is big endian.
> +-big-endian

No. Alpha is little endian.

> +
>  # Tobias Klausmann  (03 March 2017)
>  # There is no luajit support on alpha. Bugs #554376, #608322.
>  luajit
> diff --git a/profiles/arch/arm64/big-endian/use.mask 
> b/profiles/arch/arm64/big-endian/use.mask
> new file mode 100644
> index ..0a4af0711f5c
> --- /dev/null
> +++ b/profiles/arch/arm64/big-endian/use.mask
> @@ -0,0 +1,6 @@
> +# Copyright 1999-2017 Gentoo Foundation.
> +# Distributed under the terms of the GNU General Public License, v2
> +
> +# James Le Cuirot  (29 Jun 2017)
> +# Unmask as this profile is big endian.
> +-big-endian
> diff --git a/profiles/arch/base/use.force b/profiles/arch/base/use.force
> new file mode 100644
> index ..7f213b9dd017
> --- /dev/null
> +++ b/profiles/arch/base/use.force
> @@ -0,0 +1,6 @@
> +# Copyright 1999-2017 Gentoo Foundation
> +# Distributed under the terms of the GNU General Public License v2
> +
> +# James Le Cuirot  (29 Jun 2017)
> +# Forced and masked by default. Unmask where necessary.
> +big-endian
> diff --git a/profiles/arch/base/use.mask b/profiles/arch/base/use.mask
> index 1a4a39cefc13..2ea1fb3d89fa 100644
> --- a/profiles/arch/base/use.mask
> +++ b/profiles/arch/base/use.mask
> @@ -1,6 +1,10 @@
>  # Copyright 1999-2017 Gentoo Foundation
>  # Distributed under the terms of the GNU General Public License v2
>
> +# James Le Cuirot  (29 Jun 2017)
> +# Forced and masked by default. Unmask where necessary.
> +big-endian
> +
>  # Sven Wegener  (31 May 2017)
>  # libvirt is only supported on specific architectures
>  libvirt
> diff --git a/profiles/arch/hppa/use.mask b/profiles/arch/hppa/use.mask
> index 7361e2c52af2..bd158162a449 100644
> --- a/profiles/arch/hppa/use.mask
> +++ b/profiles/arch/hppa/use.mask
> @@ -3,6 +3,10 @@
>  # NOTE: When masking a USE flag due to missing keywords, please file a 
> keyword
>  # request bug for the hppa arch.
>
> +# James Le Cuirot  (29 Jun 2017)
> +# Unmask as this profile is big endian.
> +-big-endian
> +
>  # Andreas Sturmlechner  (25 Feb 2017)
>  # kwallet integration split from kde to distinct flag
>  kwallet
> diff --git a/profiles/arch/m68k/use.mask b/profiles/arch/m68k/use.mask
> index aac0e46e97c2..646567111d56 100644
> ---