Gentoo Archives: gentoo-mips

From: "Anthony G. Basile" <blueness@g.o>
To: gentoo-mips@l.g.o
Subject: Re: [gentoo-mips] multilib problems on mips64 profiles
Date: Sun, 21 Sep 2014 21:55:33
Message-Id: 541F4951.4000409@gentoo.org
In Reply to: Re: [gentoo-mips] multilib problems on mips64 profiles by "Anthony G. Basile"
1 On 09/17/14 16:19, Anthony G. Basile wrote:
2 > On 09/17/14 16:13, Markos Chandras wrote:
3 >> -----BEGIN PGP SIGNED MESSAGE-----
4 >> Hash: SHA512
5 >>
6 >> On 09/17/2014 08:52 PM, Anthony G. Basile wrote:
7 >>> On 09/17/14 15:41, Markos Chandras wrote: On 09/17/2014 08:13 PM,
8 >>> Anthony G. Basile wrote:
9 >>>>>> On 09/17/14 13:50, Markos Chandras wrote: On 09/17/2014 02:38
10 >>>>>> PM, Ian Stakenvicius wrote:
11 >>>>>>>>> On 17/09/14 04:31 AM, Micha³ Górny wrote:
12 >>>>>>>>>> Dnia 2014-09-13, o godz. 10:47:49 Markos Chandras
13 >>>>>>>>>> <hwoarang@g.o> napisa³(a):
14 >>>>>>>>>>> Here is some weirdness with eg mips64/n32 multilib
15 >>>>>>>>>>> profile when trying a world update
16 >>>>>>>>>>>
17 >>>>>>>>>>> [ebuild U ] sys-devel/libtool-2.4.2-r1:2
18 >>>>>>>>>>> [2.4.2:2] USE="-static-libs {-test} -vanilla"
19 >>>>>>>>>>> ABI_MIPS="(n32%*) o32%* -n64%" 0 kB
20 >>>>>>>>>>>
21 >>>>>>>>>>> As you can see n32 and o32 are enabled but n64 is
22 >>>>>>>>>>> not. Obviously this is not full mips64 multilib.
23 >>>>>>>>>>> This is probably due the portage profile
24 >>>>>>>>>>> stacking/inheritance problems on mips64, where the
25 >>>>>>>>>>> mips64/multilib profiles inherit the default o32
26 >>>>>>>>>>> one. Michal (multilib CC'd) can provide more
27 >>>>>>>>>>> information on what exactly goes wrong since he
28 >>>>>>>>>>> understands the problem better than me. Michal
29 >>>>>>>>>>> also said that on amd64, the multilib profiles
30 >>>>>>>>>>> defaults to 64-bit only. I believe this contradicts
31 >>>>>>>>>>> with what someone expects from MIPS64 where all
32 >>>>>>>>>>> three ABIs need to be present *by default* unless
33 >>>>>>>>>>> you override the ABI_MIPS variable in make.conf.
34 >>>>>>>>>>> Correct?
35 >>>>>>>>>> Well, long story short we inherit from 'top-level'
36 >>>>>>>>>> profile that has some o32 settings inside. I believe
37 >>>>>>>>>> that it could be saner to move those from
38 >>>>>>>>>> arch/mips/mips64 -> arch/mips/mips64/o32 (like we
39 >>>>>>>>>> have /n32 and /n64 there), so that instead of having
40 >>>>>>>>>> to unset them, we'd just have them set for the
41 >>>>>>>>>> relevant real profiles. However, I'm not sure if this
42 >>>>>>>>>> doesn't come with some pitfalls.
43 >>>>>>>>> Blueness and I talked about this (proper n32 / n64 /
44 >>>>>>>>> o32 defaults and forces/masks) in #gentoo-dev two or
45 >>>>>>>>> three weeks ago; I thought we worked out the correct
46 >>>>>>>>> modifications to profiles to get it right and he had
47 >>>>>>>>> already pushed the fixes... ??
48 >>>>>> I can't see anything. Did you actually push them? What was
49 >>>>>> decided as the plan for action?
50 >>>>>>
51 >>>>>>> I did not have time to get to them. I was going to play
52 >>>>>>> with two different approaches. One is simply turning off
53 >>>>>>> o32 at multilib/../n32 level, the other was to restructure
54 >>>>>>> the profiles entirely and put o32, n32 and 64 on par, not
55 >>>>>>> inherit from a hire level "default" profile. I'm leaning
56 >>>>>>> towards that approach, but I'm worried it might play havoc
57 >>>>>>> on our users.
58 >>> Well i need to see the structure for your second approach to
59 >>> understand what you have in mind. Perhaps the first option is the
60 >>> safest and ensure some backwards compatibility with existing
61 >>> mips32 users?
62 >>>
63 >>>> Yes it would be more backwards compat, but it is not semetrical.
64 >>>> The regular (ie glibc) profiles would become:
65 >>>> [1] default/linux/mips/13.0/o32 <-change [2]
66 >>>> default/linux/mips/13.0/n32 [3] default/linux/mips/13.0/n64 [4]
67 >>>> default/linux/mips/13.0/multilib/o32 <-change [5]
68 >>>> default/linux/mips/13.0/multilib/n32 [6]
69 >>>> default/linux/mips/13.0/multilib/n64 [7]
70 >>>> default/linux/mips/13.0/mipsel/o32 <- change [8]
71 >>>> default/linux/mips/13.0/mipsel/n32 [9]
72 >>>> default/linux/mips/13.0/mipsel/n64 [10]
73 >>>> default/linux/mips/13.0/mipsel/multilib/o32 <-change [11]
74 >>>> default/linux/mips/13.0/mipsel/multilib/n32 [12]
75 >>>> default/linux/mips/13.0/mipsel/multilib/n64
76 >> I think that if you symlink the following
77 >>
78 >> default/linux/mips/13.0/eapi -> default/linux/mips/13.0/o32/eapi
79 >> default/linux/mips/13.0/parent -> default/linux/mips/13.0/o32/parent
80 >>
81 >> existing default/linux/mips/13.0/ users will be unaffected. But I am
82 >> not sure if we are allowed to use symlinks (same thing for mipsel)
83 >>
84 >> If we can't avoid it then we can send the usual email to the lists
85 >> informing users for the change. I believe it's not hard for them to
86 >> figure out what changed and how to select the proper profile for their
87 >> mips32 boxes.
88 >
89 > Let me test first the new profiles. I will put them on the
90 > hardened-dev::profile overlay. I know they're not hardened, but we do
91 > testing of big changes to profiles there. Then you can review what
92 > I've done.
93 >
94 > I'm not sure about the sym links either.
95 >
96
97 This isn't going to work. The problem is that the above structure
98 doesn't distinguish between mips/o32 and mips64/o32 (and equivalent el
99 versions). Now mips64/o32 is funny, but possible: it would be o32 (a
100 32-bit abi) on 64 bit arch/kernel, like ppc64-32ul. The structure is
101 possible at the level of profile/arch, but it would mean a deep
102 restructuring of default/linux/mips/13.0.
103
104 I'm not sure we want to make such a deep change. The profiles we would
105 present to the user would look like:
106
107 [1] default/linux/mips/13.0/mips/o32
108 default/linux/mips/13.0/mips64/o32 <- distinguish the
109 mips/o32 and mips64/o32
110 [2] default/linux/mips/13.0/mips64/n32
111 [3] default/linux/mips/13.0/mips64/n64
112 [4] default/linux/mips/13.0/multilib/o32 <- multilib is
113 necessarily mips64
114 [5] default/linux/mips/13.0/multilib/n32 <- multilib is
115 necessarily mips64
116 [6] default/linux/mips/13.0/multilib/n64 <- multilib is
117 necessarily mips64
118 [7] default/linux/mips/13.0/mipsel/o32
119 default/linux/mips/13.0/mips64el/o32 <- distinguish the
120 mipsel/o32 and mips64el/o32
121 [8] default/linux/mips/13.0/mips64el/n32
122 [9] default/linux/mips/13.0/mips64el/n64
123 [10] default/linux/mips/13.0/mipsel/multilib/o32 <- multilib is
124 necessarily mips64el
125 [11] default/linux/mips/13.0/mipsel/multilib/n32 <- multilib is
126 necessarily mips64el
127 [12] default/linux/mips/13.0/mipsel/multilib/n64 <- multilib is
128 necessarily mips64el
129
130 No need to touch the rest.
131 [13] hardened/linux/musl/mips
132 [14] hardened/linux/musl/mips/mipsel
133 [15] default/linux/uclibc/mips
134 [16] hardened/linux/uclibc/mips
135 [17] default/linux/uclibc/mips/mipsel
136 [18] hardened/linux/uclibc/mips/mipsel
137
138
139 Maybe we just don't want to support mips64/o32? I'm starting to lean
140 towards Ian's simple but asymmetric solution of turning off o32 in the
141 inheriting profiles.
142
143
144 --
145 Anthony G. Basile, Ph.D.
146 Gentoo Linux Developer [Hardened]
147 E-Mail : blueness@g.o
148 GnuPG FP : 1FED FAD9 D82C 52A5 3BAB DC79 9384 FA6E F52D 4BBA
149 GnuPG ID : F52D4BBA

Replies