[OE-core] [PATCH 1/3] arch-mips.inc: don't override TRANSLATED_TARGET_ARCH

Dmitry Eremin-Solenikov dbaryshkov at gmail.com
Fri Jun 19 22:40:59 UTC 2015


2015-06-19 20:47 GMT+03:00 Dmitry Eremin-Solenikov <dbaryshkov at gmail.com>:
> Hello,
>
> 2015-06-19 17:01 GMT+03:00 Mark Hatle <mark.hatle at windriver.com>:
>> On 6/19/15 4:23 AM, Dmitry Eremin-Solenikov wrote:
>>>> On 6/18/15 8:13 AM, Dmitry Eremin-Solenikov wrote:
>>>>> Currently MIPS64 N32 is broken. There is internal disagreement
>>>>> between TARGET_ARCH (which doesn't contain ABIEXTENSION) and
>>>>> TRANSLATED_TARGET_ARCH (which contains ABIEXTENSION). ABI is already
>>>>> encoded into the TARGET_OS. ARM tunes in the same situation override
>>>>> neither the TARGET_ARCH nor the TRANSLATED_TARGET_ARCH. So let's drop
>>>>> this override.
>>>>
>>>> This series won't work properly, unless I'm reading something incorrectly.
>>>>
>>>> You won't be able to build/install a tri-lib system after this change, as
>>>> something needs to be there to differential between MIPS32 (o32), MIPS64 (n32)
>>>> and MIPS64 (n64).
>>>>
>>>> Currently this is done via the ABIEXTENSION value.
>>>
>>> Why do you need this differentiation in the TARGET_ARCH? We have TARGET_SYS
>>> (triplets) for that, don't we? And the compilers for the N64/N32 (the
>>> only thing IIRC
>>> that is really dependent on the TARGET_ARCH) should be interchangeable, AFAIU.
>>
>> The triplet for o32 is:
>>
>> mips-os-linux
>>
>> The triplet to n64 is:
>>
>> mips64-os-linux
>>
>> The triplet to n32 is:
>>
>> mips64-os-linux
>>
>> thus w/o the ABI extension there is no mechanism to distinguish between n64 and n32.
>>
>>> Can you point me, please, how to create a tri-ABI SDK and/or image?
>>
>> Configure with a MIPS64 capable machine (yes qemumips64 is adequate).  Then add
>> the following to your local.conf:
>>
>> require conf/multilib.conf
>> DEFAULTTUNE = "mips32r2"
>>
>> MULTILIBS = "multilib:lib32 multilib:lib64"
>> DEFAULTTUNE_virtclass-multilib-lib32 = "mips64-n32"
>> DEFAULTTUNE_virtclass-multilib-lib64 = "mips64"
>>
>>
>> This will set the default ABI to 'o32', with optional n32 and n64 support.  (You
>> can switch around the defaulttune values to change which is default and which is
>> optional.  A common config is n32 default, o32 / n64 optional.)
>
>
> I tried adding these settings to a special machine config (but there
> should be no
> difference with adding them to local.conf) and got a lot of errors from QA on
> linux-yocto (because of 32 vs 64 bitness missmatch on kernel objects). Are you
> sure that this config works out of box for you?

Got the tri-ABI image built. Had to change default to N32, fix the glibc recipe
not to override the TUNE_CCARGS, etc. Here is a summary:

1) My patches do not break building multilib images/SDK.
2) They are required to build images, defaulting to N32 ABI
3) Building tri-lib images does not work out of box anyway, thanks to glibc
   (I'll send a patch).
4) Multilib SDK for MIPS build, but the build is quite questionable
anyway (see below).

Thus I'd ask for my patches to be merged.

WARNING: gcc multilib setup is not supported for TARGET_ARCH=mips64

                                   WARNING: gcc multilib setup is not
supported for TARGET_ARCH=mips64
WARNING: gcc multilib setup is not supported for TARGET_ARCH=mips64
WARNING: QA Issue: gcc-cross-canadian-mips64: Files/directories were
installed but not shipped in any package:
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips64-oemllib64-linux/gcc/mips64-oemllib64-linux/5.1.0/plugin/libcc1plugin.so.0.0.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips64-oemllib64-linux/gcc/mips64-oemllib64-linux/5.1.0/plugin/libcc1plugin.so.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips64-oemllib64-linux/gcc/mips64-oemllib64-linux/5.1.0/plugin/libcc1plugin.la
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips64-oemllib64-linux/gcc/mips64-oemllib64-linux/5.1.0/plugin/libcc1plugin.so
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips64-oemllib64-linux/gcc/mips64-oemllib64-linux/5.1.0/plugin/.debug
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips64-oemllib64-linux/gcc/mips64-oemllib64-linux/5.1.0/plugin/.debug/libcc1plugin.so.0.0.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/libcc1.la
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/libcc1.so
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/libcc1.so.0.0.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/libcc1.so.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/.debug
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/.debug/libcc1.so.0.0.0
Please set FILES such that these items are packaged. Alternatively if
they are unneeded, avoid installing them or delete them within
do_install. [installed-vs-shipped]
WARNING: QA Issue: gcc-cross-canadian-mips: Files/directories were
installed but not shipped in any package:
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/libcc1.la
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/libcc1.so
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/libcc1.so.0.0.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/libcc1.so.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/.debug
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/lib/.debug/libcc1.so.0.0.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips-oemllib32-linux/gcc/mips-oemllib32-linux/5.1.0/plugin/libcc1plugin.so.0.0.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips-oemllib32-linux/gcc/mips-oemllib32-linux/5.1.0/plugin/libcc1plugin.so.0
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips-oemllib32-linux/gcc/mips-oemllib32-linux/5.1.0/plugin/libcc1plugin.la
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips-oemllib32-linux/gcc/mips-oemllib32-linux/5.1.0/plugin/libcc1plugin.so
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips-oemllib32-linux/gcc/mips-oemllib32-linux/5.1.0/plugin/.debug
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/mips-oemllib32-linux/gcc/mips-oemllib32-linux/5.1.0/plugin/.debug/libcc1plugin.so.0.0.0


-- 
With best wishes
Dmitry



More information about the Openembedded-core mailing list