cross-canadian/libgcc-common: Fixes for arm multilib Arm is unusual in that we force it to "linux-gnueabi" and "linux" doesn't build. This was causing problems for multilib configurations which were assuming "linux" was the default compiler rather than linux-gnueabi.
This change does two things, ensures symlinks are generated for linux-gnueabi and also adapts the libgcc code to account for the difference on arm. It still needs to immediately expand/save TARGET_VENDOR but we defer deciding what TARGET_OS should be until we know TARGET_ARCH (which the multilib code may change). [YOCTO #8642] Note that sanity tests of a 32 bit arm multilib still break due to issues with the kernel headers on a mixed bit system. This looks to be a general headers issue for the platform though and a different type of bug. (From OE-Core rev: b6253350fb86d8e54792905342a5892af570d526) Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org> Signed-off-by: Zheng Ruoqin <zhengrq.f...@cn.fujitsu.com> --- meta/classes/cross-canadian.bbclass | 1 + meta/recipes-devtools/gcc/libgcc-common.inc | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass index ea17f09..f60d728 100644 --- a/meta/classes/cross-canadian.bbclass +++ b/meta/classes/cross-canadian.bbclass @@ -68,6 +68,7 @@ python () { elif tarch == "mips64": d.appendVar("CANADIANEXTRAOS", " linux-gnun32 linux-uclibcn32 linux-musln32") if tarch == "arm" or tarch == "armeb": + d.appendVar("CANADIANEXTRAOS", " linux-gnueabi linux-musleabi linux-uclibceabi") d.setVar("TARGET_OS", "linux-gnueabi") else: d.setVar("TARGET_OS", "linux") diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc index b09ea65..f3de9e9 100644 --- a/meta/recipes-devtools/gcc/libgcc-common.inc +++ b/meta/recipes-devtools/gcc/libgcc-common.inc @@ -122,15 +122,18 @@ fakeroot python do_multilib_install() { os.symlink(src, dest) } -def get_original_vendoros(d): - vendoros = d.expand('${TARGET_VENDOR}-${TARGET_OS}') +def get_original_os(d): + vendoros = d.expand('${TARGET_ARCH}${ORIG_TARGET_VENDOR}-${TARGET_OS}') for suffix in [d.getVar('ABIEXTENSION', True), d.getVar('LIBCEXTENSION', True)]: if suffix and vendoros.endswith(suffix): vendoros = vendoros[:-len(suffix)] + # Arm must use linux-gnueabi not linux as only the former is accepted by gcc + if vendoros.startswith("arm-") and not vendoros.endswith("-gnueabi"): + vendoros = vendoros + "-gnueabi" return vendoros -ORIG_TARGET_VENDOROS := "${@get_original_vendoros(d)}" -BASETARGET_SYS = "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}" +ORIG_TARGET_VENDOR := "${TARGET_VENDOR}" +BASETARGET_SYS = "${@get_original_os(d)}" addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot fakeroot python do_extra_symlinks() { -- 2.7.4 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core