Re: o32 != n32

YunQiang Su <[email protected]>
Newsgroups gmane.linux.debian.ports.mips
Message-ID <CAKcpw6VTV=9cutxo0iw61H6ciZm_ygci0JVeJgP-d24+rUOnQQ@mail.gmail.com>
On Thu, May 7, 2015 at 6:01 PM, Mathieu Malaterre <[email protected]> wrote:
> On Thu, May 7, 2015 at 11:41 AM, James Cowgill <[email protected]> wrote:
>> On Thu, 2015-05-07 at 11:25 +0200, Mathieu Malaterre wrote:
>>> On Thu, May 7, 2015 at 10:57 AM, James Cowgill <[email protected]> wrote:
>>> > On Thu, 2015-05-07 at 09:27 +0200, Mathieu Malaterre wrote:
>>> >> Hello MIPS gurus,
>>> >>
>>> >> Could someone please let me know if this is possible to have a
>>> >> dual-ABI system (eg: n32 & o32) on MIPS. On my x86-64 system I can run
>>> >> a multi-arch system (x86 & x86-64), thanks to the recent multi-arch
>>> >> effort.
>>> >>
>>> >> Is it possible on MIPS ? Does it make sense ?
>>> >
>>> > If you have a 64-bit kernel then that should completely work (all Debian
>>> > kernels except for 4kc are 64-bit).
>>> >
>>> > If you then install gcc-multilib you should be able to pass -mabi=n32 to
>>> > gcc to get n32 binaries (or -mabi=64 for n64 binaries). I haven't done a
>>> > huge amount of testing with it, but you should also be able to add the
>>> > mips64el debian repo which contains everything recompiled with n64. Then
>>> > you should be able to do proper multiarch.
>>> >
>>> > See: http://mipsdebian.imgtec.com/
>>>
>>> I haven't received my Creator CI20 board yet, but I still fail to
>>> understand how that's possible. On my x86-64 there is a *single* ABI,
>>> and thus I can have a single `/usr/lib/x86_64-linux-gnu/libpthread.so`
>>> installed from libc6-dev:amd64 which wont conflict with
>>> `/usr/lib/i386-linux-gnu/libpthread.so` installed from libc6-dev:i386.
>>
>> The processor in the CI20 is 32-bit only so you won't be able to do any
>> of this on that unfortunately.
>>
>> If you use mipsel / mips64el multiarch, the setup use on amd64 is
>> identical on mips. Multilib places libraries in /lib32 or /lib64 just
>> link it does on x86.
>>
>>> I may sound dumb, but I fail to understand how multi-abi can be
>>> handled when directories are setup to handle (single) per-arch object
>>> files.
>>
>> The directories *are* setup to handle multiple ABIs. 'i386-linux-gnu' is
>> the ABI used on i386 and it is completely different to the
>> 'x86_64-linux-gnu' ABI (you can't link amd64 and i386 objects together).
>
> My original post was about mixing n32 and o32. So if I try to
> summarize your post (little endian ABI only):
>
> - debian `mipsel` refers to ABI `o32`
> - debian `mips64el` refers to ABI `o64`
> (https://gcc.gnu.org/projects/mipso64-abi.html)
>
> Debian has not been working officially on any of the n32 or n64 ABIs.
>
> Now let me rephrase my original question into:
>
> Since Debian `mipsel` is using the old o32 ABI, would it make sense to
> use n32 ABI on Creator CI20 ?

O32 is like i386,
N32 is like x32
N64 is like x86-64 aka amd64.

N32 and N64 ask for 64bit CPU, while CI20 uses a 32bit only CPU,
so you cannot use N32 and N64 on it.

>
> As per your comment, I will not be able to use (=link to) the o32
> `libc` provided by the default debian `mipsel` package when building
> an n32 application (gcc -mabi=n32). In which case the location
> `/usr/lib/mipsel-linux-gnu/` will be reserved for object files with
> o32 ABI, while something like `/usr/lib/mipsel-n32-linux-gnu/` may be
> used for n32 ABI.

`/usr/lib/mipsel-n32-linux-gnu/` -> /usr/lib/mips64el-linux-gnuabin32

We also have
    /usr/lib/mips64el-linux-gnuabi64 for N64.

>
> Thanks again for your time and clarification !
>
>
> --
> To UNSUBSCRIBE, email to [email protected]
> with a subject of "unsubscribe". Trouble? Contact [email protected]
> Archive: https://lists.debian.org/CA+7wUsxX0+N==t1HZPGbwK=w7qEKGVdn_Kd=pNRba=euN4SM_A@mail.gmail.com
>



-- 
YunQiang Su
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.