Bug 8616

Summary: arm64's multilib SDK is broken
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Robert Yang <liezhi.yang>
Component: coreAssignee: Juro Bystricky <juro.bystricky>
Status: VERIFIED DUPLICATE QA Contact: Yi Zhao <yi.zhao>
Severity: major    
Priority: Medium+ CC: jose.perez.carranza, juro.bystricky, mark.hatle, meta.mr.watcher, meta.watcher, randy.macleod, richard.purdie, ross.burton, sgw
Version: 2.1   
Target Milestone: 2.2 M1   
Hardware: x86   
OS: arm64   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)

Description Robert Yang 2015-10-30 01:47:30 UTC
YP 2.0 also has this problem:

MACHINE ?= "qemuarm64"

require conf/multilib.conf
MULTILIBS ?= "multilib:lib32" 
DEFAULTTUNE_virtclass-multilib-lib32 ?= "armv7at-neon"

$ bitbake core-image-minimal -cpopulate_sdk

extract the sdk, 64bit works well, but 32bit doesn't:

$ ls environment-setup-* -1
environment-setup-aarch64-poky-linux
environment-setup-armv7a-vfp-neon-pokymllib32-linux-gnueabi
environment-setup-core2-64-poky-linux
environment-setup-x86-pokymllib32-linux

Note there are core2-64 and x86, this was because I had built qemux86-64's SDK, this might be another problem.

The environment-setup-aarch64-poky-linux works and can build hello.c, but environment-setup-armv7a-vfp-neon-pokymllib32-linux-gnueabi can't, in environment-setup-armv7a-vfp-neon-pokymllib32-linux-gnueabi:

 CC="arm-pokymllib32-linux-gnueabi-gcc foo.."

But there is no arm-pokymllib32-linux-gnueabi-gcc. and:

$ find sysroots/x86_64-pokysdk-linux/usr/bin/ -name '*-gcc'
sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux-musl/aarch64-poky-linux-musl-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/i686-pokymllib32-linux-musl/i686-pokymllib32-linux-musl-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/arm-pokymllib32-linux-musl/arm-pokymllib32-linux-musl-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-pokymllib32-linux-uclibcx32/x86_64-pokymllib32-linux-uclibcx32-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-pokymllib32-linux/x86_64-pokymllib32-linux-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux-uclibc/x86_64-poky-linux-uclibc-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/i686-poky-linux/i686-poky-linux-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/i686-pokymllib32-linux-uclibc/i686-pokymllib32-linux-uclibc-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-uclibc/arm-poky-linux-uclibc-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-pokymllib32-linux-muslx32/x86_64-pokymllib32-linux-muslx32-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/arm-pokymllib32-linux-uclibc/arm-pokymllib32-linux-uclibc-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-musl/arm-poky-linux-musl-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux/arm-poky-linux-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-pokymllib32-linux-uclibc/x86_64-pokymllib32-linux-uclibc-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/arm-pokymllib32-linux/arm-pokymllib32-linux-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-pokymllib32-linux-musl/x86_64-pokymllib32-linux-musl-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-pokymllib32-linux-gnux32/x86_64-pokymllib32-linux-gnux32-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux-muslx32/x86_64-poky-linux-muslx32-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/i686-pokymllib32-linux/i686-pokymllib32-linux-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux-gnux32/x86_64-poky-linux-gnux32-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-pokymllib32-linux-musl/aarch64-pokymllib32-linux-musl-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/i686-poky-linux-uclibc/i686-poky-linux-uclibc-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux-musl/x86_64-poky-linux-musl-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux-uclibcx32/x86_64-poky-linux-uclibcx32-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-pokymllib32-linux/aarch64-pokymllib32-linux-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-pokymllib32-linux-uclibc/aarch64-pokymllib32-linux-uclibc-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/i686-poky-linux-musl/i686-poky-linux-musl-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux-uclibc/aarch64-poky-linux-uclibc-gcc
sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux/x86_64-poky-linux-gcc
Comment 1 Robert Yang 2015-10-30 02:54:49 UTC
I think that this is because arm64 doesn't support multilib ? In gcc-5.2.0-r0/gcc-5.2.0/gcc/config:
$ find | grep t-linux64
./sparc/t-linux64
./rs6000/t-linux64lebe
./rs6000/t-linux64le
./rs6000/t-linux64
./rs6000/t-linux64bele
./mips/t-linux64
./i386/t-linux64
./s390/t-linux64
Comment 2 Ross Burton 2016-06-30 15:25:38 UTC
Marking as duplicate of 8638.

*** This bug has been marked as a duplicate of bug 8638 ***
Comment 3 Jose Perez C 2016-07-29 15:50:59 UTC
Duplicated Bug
Comment 4 Juro Bystricky 2016-08-11 15:44:40 UTC
This is not a duplicate of 8638, (but it looks like a duplicate of 10054).
The issue here is that environment setup file for the 32 bit GCC refers to a GCC which does not exist (or it exists, but under a different name).
Additionally, the problem seems to be still there for 2.2 master.
Comment 5 Saul Wold 2016-08-25 14:57:11 UTC
Really a duplicate of 10054

*** This bug has been marked as a duplicate of bug 10054 ***
Comment 6 Jose Perez C 2016-09-09 16:04:55 UTC
verified duplicate