Gentoo Archives: gentoo-dev

From: "Manuel RĂ¼ger" <mrueg@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] splitting out arm keywords
Date: Wed, 09 Jul 2014 16:10:33
Message-Id: 53BD696C.8040904@gentoo.org
In Reply to: Re: [gentoo-dev] splitting out arm keywords by "Anthony G. Basile"
1 On 07/09/2014 01:40 PM, Anthony G. Basile wrote:
2 > On 07/09/14 05:09, Joshua Kinard wrote:
3 >> On 07/08/2014 21:48, Matthew Thode wrote:
4 >>> arm has a historical problem with stabilization, while keywording
5 >>> doesn't require access to all arm sub-arches the problem with the
6 >>> stabilization slowness causes running a full ~arm to become hard. By
7 >>> that I mean that if someone keywords something for arm because it works
8 >>> on armv7 and I run ~arm because stabilization takes forever then my
9 >>> system may break because of both non-stabilized packages and because I
10 >>> could be running armv6.
11 >>>
12 >>> In any case I propose splitting out arm into armv4, armv5, armv6 and
13 >>> armv7. armv8 seems to be here already as arm64.
14 >> Couldn't this be better handled with some profile work? These sound like
15 >> versions of Instruction Set Architectures. In the MIPS world, you
16 >> have your
17 >> original ISAs, mips1 through mips4, then you have the newer variants of
18 >> mips32r* (branches from mips2) and mips64r* (branches from mips4).
19 >> Anything
20 >> supporting mips4 could also support earlier ISAs. Throw in our three
21 >> supported ABIs (o32, n32, n64), and machine-specific curiosities (SGI,
22 >> Cobalt, Yeelong/Loongson, etc), and life can be quite fun. But we can
23 >> cover
24 >> all of this with just a single 'mips' keyword in the tree.
25 >
26 > Yes, this should be done via the profiles. Code requiring later ISAs
27 > and/or with extensions like thumb and neon will probably break on lower
28 > ISAs. These should be masked on the profiles.
29 >
30 >> Is that similar to how these ARM variants work? Can an armv7 run code
31 >> for
32 >> armv6 and earlier?
33 >
34 > Its a bit more complicated that MIPS. You can test for yourself. I did
35 > this via a chromebook (cortex-a15) using my hardened stages
36 > (march=armv7a) available at <mirror>/experimental/arm/hardened, so you
37 > can test too:
38 >
39 > chrome ~ # echo "int main() { return 0; }" > test.c
40 > chrome ~ # gcc -march=armv7-a -o test test.c
41 > chrome ~ # gcc -march=armv6 -o test test.c
42 > chrome ~ # gcc -march=armv5 -o test test.c
43 > chrome ~ # gcc -march=armv4 -o test test.c
44 > chrome ~ # gcc -march=armv3 -o test test.c
45 > /tmp/ccZjsI2O.s: Assembler messages:
46 > /tmp/ccZjsI2O.s:45: Error: selected processor does not support ARM mode
47 > `bx lr'
48 > chrome ~ # gcc -march=armv3m -o test test.c
49 > /tmp/cc1o59kQ.s: Assembler messages:
50 > /tmp/cc1o59kQ.s:45: Error: selected processor does not support ARM mode
51 > `bx lr'
52 > chrome ~ # gcc -march=armv2 -o test test.c
53 > /tmp/ccmTNSyh.s: Assembler messages:
54 > /tmp/ccmTNSyh.s:45: Error: selected processor does not support ARM mode
55 > `bx lr'
56 > chrome ~ # gcc -march=armv2a -o test test.c
57 > /tmp/ccTIXZ46.s: Assembler messages:
58 > /tmp/ccTIXZ46.s:45: Error: selected processor does not support ARM mode
59 > `bx lr'
60 > chrome ~ # gcc --version
61 > gcc (Gentoo Hardened 4.7.3-r1 p1.4, pie-0.5.5) 4.7.3
62 > Copyright (C) 2012 Free Software Foundation, Inc.
63 > This is free software; see the source for copying conditions. There is NO
64 > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
65 >
66 >
67 > So it looks like gcc can emit compat code back to armv4. This doesn't
68 > necessarily mean that armv2 code won't run on an armv7a, but that
69 > gcc-4.7.3-r1 can't produce such code, which is sufficient for our
70 > purposes of masking.
71 >
72 >
73 >>
74 >> Splitting 'arm' into four new keywords, on top of 'arm64' is just
75 >> going to
76 >> give you guys major headaches later. You might even consider
77 >> dedicated USE
78 >> flags for the arm subvariants and use those to control things in an
79 >> ebuild
80 >> where applicable.
81 >
82 > arm64 might as well be a totally different arch. There is no
83 > compatibility between 32-bit and 64-bit arm variants --- at least not
84 > that I know of, its a new arch that I'm just now getting familiar with.
85 > On the other hand ppc and ppc64 should never have been split, but that's
86 > another story.
87 >
88 > We do not want keywords for every subarch otherwise we'll go crazy
89 > stabilizing. We could adopt a policy of stabilizing on armv7a and when
90 > a package doesn't build on a lower ISA, just mask it in the profiles.
91 >
92 >>
93 >>> I think this would be beneficial because of not all developers that want
94 >>> to help with arm have or what all the sub-arches necessary. It also
95 >>> allows us to move faster on stabilization because most of us have access
96 >>> to armv7 a bit easier. This would take some pressure off of the people
97 >>> doing stabilization for older sub-arches, but not much.
98 >> What's the support status of Gentoo on the older variants, such as
99 >> armv4 and
100 >> armv5 stuff? How fast is the CPU clock on those? Do they include L2/L3
101 >> cache? Lots of memory? Generally, anything that could be a
102 >> bottleneck or
103 >> severely increase the build time should be weighed against the potential
104 >> number of users and possibly support dropped if there aren't enough
105 >> developers or contributing users to maintain it.
106 >>
107 >> I.e., w/ MIPS, we don't support anything under the mips3 ISA, which
108 >> includes
109 >> DECStations (Debian does support those). Build times would just be
110 >> tremendously slow and I haven't seen a lot of desire to support those.
111 >>
112 >
113 > Regarding MIPS, this isn't totally true. I'm willing to support mips-I
114 > for embedded systems, although right now I'm just doing mipsel3 and
115 > mip32r2. I used to have mips-I big endian uclibc stages. Also, you
116 > don't have to hit slow build times because you can build mips-I on any
117 > mips system of the same endianness.
118 >
119 >
120
121 I think arm64 is getting keyworded using qemu, because nobody owns any
122 hardware yet. Can't we use qemu for armv5, too?
123 You won't need any additional hardware to handle stabilization. Just
124 test on armv7 hw and in your qemu instance.
125
126
127 Cheers
128
129 Manuel

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies

Subject Author
Re: [gentoo-dev] splitting out arm keywords Mikle Kolyada <zlogene@g.o>