Re: [gentoo-dev] [PATCH] Profile-enforced big-endian USE flag
On Thu, 29 Jun 2017 22:19:58 +0100 James Le Cuirotwrote: > 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
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
On Thu, 29 Jun 2017 14:37:49 -0700 Matt Turnerwrote: > 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
On Thu, Jun 29, 2017 at 2:19 PM, James Le Cuirotwrote: > 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 > ---