public inbox for gentoo-mips@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Anthony G. Basile" <blueness@gentoo.org>
To: gentoo-mips@lists.gentoo.org
Subject: Re: [gentoo-mips] multilib problems on mips64 profiles
Date: Sun, 21 Sep 2014 17:55:29 -0400	[thread overview]
Message-ID: <541F4951.4000409@gentoo.org> (raw)
In-Reply-To: <5419ECD0.7000903@gentoo.org>

On 09/17/14 16:19, Anthony G. Basile wrote:
> On 09/17/14 16:13, Markos Chandras wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA512
>>
>> On 09/17/2014 08:52 PM, Anthony G. Basile wrote:
>>> On 09/17/14 15:41, Markos Chandras wrote: On 09/17/2014 08:13 PM,
>>> Anthony G. Basile wrote:
>>>>>> On 09/17/14 13:50, Markos Chandras wrote: On 09/17/2014 02:38
>>>>>> PM, Ian Stakenvicius wrote:
>>>>>>>>> On 17/09/14 04:31 AM, Michał Górny wrote:
>>>>>>>>>> Dnia 2014-09-13, o godz. 10:47:49 Markos Chandras
>>>>>>>>>> <hwoarang@gentoo.org> napisał(a):
>>>>>>>>>>> Here is some weirdness with eg mips64/n32 multilib
>>>>>>>>>>> profile when trying a world update
>>>>>>>>>>>
>>>>>>>>>>> [ebuild     U  ] sys-devel/libtool-2.4.2-r1:2
>>>>>>>>>>> [2.4.2:2] USE="-static-libs {-test} -vanilla"
>>>>>>>>>>> ABI_MIPS="(n32%*) o32%* -n64%" 0 kB
>>>>>>>>>>>
>>>>>>>>>>> As you can see n32 and o32 are enabled but n64 is
>>>>>>>>>>> not. Obviously this is not full mips64 multilib.
>>>>>>>>>>> This is probably due the portage profile
>>>>>>>>>>> stacking/inheritance problems on mips64, where the
>>>>>>>>>>> mips64/multilib profiles inherit the default o32
>>>>>>>>>>> one. Michal (multilib CC'd) can provide more
>>>>>>>>>>> information on what exactly goes wrong since he
>>>>>>>>>>> understands the problem better than me. Michal
>>>>>>>>>>> also said that on amd64, the multilib profiles
>>>>>>>>>>> defaults to 64-bit only. I believe this contradicts
>>>>>>>>>>> with what someone expects from MIPS64 where all
>>>>>>>>>>> three ABIs need to be present *by default* unless
>>>>>>>>>>> you override the ABI_MIPS variable in make.conf.
>>>>>>>>>>> Correct?
>>>>>>>>>> Well, long story short we inherit from 'top-level'
>>>>>>>>>> profile that has some o32 settings inside. I believe
>>>>>>>>>> that it could be saner to move those from
>>>>>>>>>> arch/mips/mips64 -> arch/mips/mips64/o32 (like we
>>>>>>>>>> have /n32 and /n64 there), so that instead of having
>>>>>>>>>> to unset them, we'd just have them set for the
>>>>>>>>>> relevant real profiles. However, I'm not sure if this
>>>>>>>>>> doesn't come with some pitfalls.
>>>>>>>>> Blueness and I talked about this (proper n32 / n64 /
>>>>>>>>> o32 defaults and forces/masks) in #gentoo-dev two or
>>>>>>>>> three weeks ago; I thought we worked out the correct
>>>>>>>>> modifications to profiles to get it right and he had
>>>>>>>>> already pushed the fixes...  ??
>>>>>> I can't see anything. Did you actually push them? What was
>>>>>> decided as the plan for action?
>>>>>>
>>>>>>> I did not have time to get to them.  I was going to play
>>>>>>> with two different approaches.  One is simply turning off
>>>>>>> o32 at multilib/../n32 level, the other was to restructure
>>>>>>> the profiles entirely and put o32, n32 and 64 on par, not
>>>>>>> inherit from a hire level "default" profile.  I'm leaning
>>>>>>> towards that approach, but I'm worried it might play havoc
>>>>>>> on our users.
>>> Well i need to see the structure for your second approach to
>>> understand what you have in mind. Perhaps the first option is the
>>> safest and ensure some backwards compatibility with existing
>>> mips32 users?
>>>
>>>> Yes it would be more backwards compat, but it is not semetrical.
>>>> The regular (ie glibc) profiles would become:
>>>> [1]   default/linux/mips/13.0/o32 <-change [2]
>>>> default/linux/mips/13.0/n32 [3] default/linux/mips/13.0/n64 [4]
>>>> default/linux/mips/13.0/multilib/o32 <-change [5]
>>>> default/linux/mips/13.0/multilib/n32 [6]
>>>> default/linux/mips/13.0/multilib/n64 [7]
>>>> default/linux/mips/13.0/mipsel/o32               <- change [8]
>>>> default/linux/mips/13.0/mipsel/n32 [9]
>>>> default/linux/mips/13.0/mipsel/n64 [10]
>>>> default/linux/mips/13.0/mipsel/multilib/o32     <-change [11]
>>>> default/linux/mips/13.0/mipsel/multilib/n32 [12]
>>>> default/linux/mips/13.0/mipsel/multilib/n64
>> I think that if you symlink the following
>>
>> default/linux/mips/13.0/eapi -> default/linux/mips/13.0/o32/eapi
>> default/linux/mips/13.0/parent -> default/linux/mips/13.0/o32/parent
>>
>> existing default/linux/mips/13.0/ users will be unaffected. But I am
>> not sure if we are allowed to use symlinks (same thing for mipsel)
>>
>> If we can't avoid it then we can send the usual email to the lists
>> informing users for the change. I believe it's not hard for them to
>> figure out what changed and how to select the proper profile for their
>> mips32 boxes.
>
> Let me test first the new profiles.  I will put them on the 
> hardened-dev::profile overlay.  I know they're not hardened, but we do 
> testing of big changes to profiles there.  Then you can review what 
> I've done.
>
> I'm not sure about the sym links either.
>

This isn't going to work.  The problem is that the above structure 
doesn't distinguish between mips/o32 and mips64/o32 (and equivalent el 
versions).  Now mips64/o32 is funny, but possible: it would be o32 (a 
32-bit abi) on 64 bit arch/kernel, like ppc64-32ul.  The structure is 
possible at the level of profile/arch, but it would mean a deep 
restructuring of default/linux/mips/13.0.

I'm not sure we want to make such a deep change.  The profiles we would 
present to the user would look like:

   [1]   default/linux/mips/13.0/mips/o32
           default/linux/mips/13.0/mips64/o32   <- distinguish the 
mips/o32 and mips64/o32
   [2]   default/linux/mips/13.0/mips64/n32
   [3]   default/linux/mips/13.0/mips64/n64
   [4]   default/linux/mips/13.0/multilib/o32  <- multilib is 
necessarily mips64
   [5]   default/linux/mips/13.0/multilib/n32  <- multilib is 
necessarily mips64
   [6]   default/linux/mips/13.0/multilib/n64  <- multilib is 
necessarily mips64
   [7]   default/linux/mips/13.0/mipsel/o32
           default/linux/mips/13.0/mips64el/o32      <- distinguish the 
mipsel/o32 and mips64el/o32
   [8]   default/linux/mips/13.0/mips64el/n32
   [9]   default/linux/mips/13.0/mips64el/n64
   [10]  default/linux/mips/13.0/mipsel/multilib/o32    <- multilib is 
necessarily mips64el
   [11]  default/linux/mips/13.0/mipsel/multilib/n32    <- multilib is 
necessarily mips64el
   [12]  default/linux/mips/13.0/mipsel/multilib/n64    <- multilib is 
necessarily mips64el

No need to touch the rest.
   [13]  hardened/linux/musl/mips
   [14]  hardened/linux/musl/mips/mipsel
   [15]  default/linux/uclibc/mips
   [16]  hardened/linux/uclibc/mips
   [17]  default/linux/uclibc/mips/mipsel
   [18]  hardened/linux/uclibc/mips/mipsel


Maybe we just don't want to support mips64/o32?  I'm starting to lean 
towards Ian's simple but asymmetric solution of turning off o32 in the 
inheriting profiles.


-- 
Anthony G. Basile, Ph.D.
Gentoo Linux Developer [Hardened]
E-Mail    : blueness@gentoo.org
GnuPG FP  : 1FED FAD9 D82C 52A5 3BAB  DC79 9384 FA6E F52D 4BBA
GnuPG ID  : F52D4BBA



  reply	other threads:[~2014-09-21 21:55 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-13  9:47 [gentoo-mips] multilib problems on mips64 profiles Markos Chandras
2014-09-13 13:54 ` Anthony G. Basile
2014-09-17  8:31 ` Michał Górny
     [not found]   ` <54198ECB.7010803@gentoo.org>
2014-09-17 17:50     ` Markos Chandras
2014-09-17 19:13       ` Anthony G. Basile
2014-09-17 19:41         ` Markos Chandras
2014-09-17 19:52           ` Anthony G. Basile
2014-09-17 20:13             ` Markos Chandras
2014-09-17 20:19               ` Anthony G. Basile
2014-09-21 21:55                 ` Anthony G. Basile [this message]
2014-09-21 22:45                   ` Matt Turner
2014-09-21 22:53                     ` Anthony G. Basile
2014-09-21 22:53                   ` Joshua Kinard
2014-09-22  1:11                     ` Anthony G. Basile
2014-09-22  1:12                       ` Anthony G. Basile
2014-09-22  1:29                         ` Joshua Kinard
2014-09-22 10:39                           ` Anthony G. Basile
2014-09-22  1:49                       ` Joshua Kinard
2014-09-22 10:53                         ` Anthony G. Basile

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=541F4951.4000409@gentoo.org \
    --to=blueness@gentoo.org \
    --cc=gentoo-mips@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox