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
> --- 

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

2017-06-29 Thread Joshua Kinard
On 06/28/2017 18:29, James Le Cuirot wrote:
> On Wed, 28 Jun 2017 17:52:26 -0400
> Mike Gilbert  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.
> 
>> A possible alternative would be to create a new USE_EXPAND variable
>> for this. That would allow for easier expansion in case we ever
>> support something other than big/little endian machines.
> 
> That way madness lies? Wikipedia talks about middle-endian as being the
> catch all for other random orderings that have appeared over the years
> but I don't think any of them were used on a system-wide basis. I can't
> imagine Linux ever supporting such a thing. Unless you're talking about
> dealing with soft vs hard float here too?

As far as I know, Linux only supports big-endian and little-endian systems,
along with supporting a fairly-wide variety of platforms and architectures,
beaten really only by NetBSD.  If NetBSD lacks anything for middle-endian, then
it's probably safe to ignore it.

That said, Wikipedia doesn't offer much on the nature of middle-endian (which
is called "PDP-endian"), except to state that "The ARM architecture can also
produce this format when writing a 32-bit word to an address 2 bytes from a
32-bit word alignment."
https://en.wikipedia.org/wiki/Endianness#Middle

And this resource:
http://unixpapa.com/incnote/byteorder.html

Recommends to ignore middle-endian, as it believes no processor was ever
implemented that stored integers in middle-endian format.

-- 
Joshua Kinard
Gentoo/MIPS
ku...@gentoo.org
6144R/F5C6C943 2015-04-27
177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943

"The past tempts us, the present confuses us, the future frightens us.  And our
lives slip away, moment by moment, lost in that vast, terrible in-between."

--Emperor Turhan, Centauri Republic