From: Ting Liu Date: Fri, 17 Jul 2015 07:17:37 +0000 (+0800) Subject: use 64b toolchain binaries to build e6500 kernel X-Git-Tag: 2.1~508 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=4746fc1cb8d90dbeea36c1743315923e2184bf26;p=meta-freescale.git use 64b toolchain binaries to build e6500 kernel e6500 only supports 64b kernel. When building 64b kernel + 32b rootfs, kernel build uses a hack previously, ie. append '-m64' and '-elf64ppc' to 32b toolchain binaries. This fails if kernel use some builtin functions: | LINK vmlinux | LD vmlinux.o | powerpc-fsl-linux-ld.bfd: Relocatable linking with relocations from | format elf32-powerpc (.../4.9.2/libgcc.a(_popcountdi2.o)) to format | elf64-powerpc (vmlinux.o) is not supported | make: *** [vmlinux] Error 1 | ERROR: oe_runmake failed modify KERNEL_{CC,LD,AR} to use 64b toolchain binaries to avoid error. Signed-off-by: Ting Liu Acked-by: Otavio Salvador Signed-off-by: Otavio Salvador --- diff --git a/meta-fsl-ppc/classes/qoriq_build_64bit_kernel.bbclass b/meta-fsl-ppc/classes/qoriq_build_64bit_kernel.bbclass index 5dd8931f..f145746b 100644 --- a/meta-fsl-ppc/classes/qoriq_build_64bit_kernel.bbclass +++ b/meta-fsl-ppc/classes/qoriq_build_64bit_kernel.bbclass @@ -4,11 +4,15 @@ REQUIRED_DISTRO_FEATURES_e6500 += "multiarch" python () { promote_kernel = d.getVar('BUILD_64BIT_KERNEL') if promote_kernel == "1": - d.setVar('KERNEL_CC_append', ' -m64') - d.setVar('KERNEL_LD_append', ' -melf64ppc') + sys_multilib = 'powerpc64' + d.getVar('TARGET_VENDOR') + 'mllib64-' + d.getVar('HOST_OS') + tc_options = d.getVar('TOOLCHAIN_OPTIONS') + '/../lib64-' + d.getVar("MACHINE") + d.setVar('DEPENDS_append', ' lib64-gcc-cross-powerpc64 lib64-libgcc') + d.setVar('PATH_append', ':' + d.getVar('STAGING_BINDIR_NATIVE') + '/' + sys_multilib) + d.setVar('KERNEL_CC', d.getVar('CCACHE') + sys_multilib + '-' + 'gcc' + d.getVar('HOST_CC_KERNEL_ARCH') + tc_options) + d.setVar('KERNEL_LD', d.getVar('CCACHE') + sys_multilib + '-' + 'ld.bfd' + d.getVar('HOST_LD_KERNEL_ARCH') + tc_options) + d.setVar('KERNEL_AR', d.getVar('CCACHE') + sys_multilib + '-' + 'ar' + d.getVar('HOST_AR_KERNEL_ARCH')) error_qa = d.getVar('ERROR_QA', True) if 'arch' in error_qa: d.setVar('ERROR_QA', error_qa.replace(' arch', '')) } -