]> code.ossystems Code Review - meta-freescale.git/commitdiff
use 64b toolchain binaries to build e6500 kernel
authorTing Liu <ting.liu@freescale.com>
Fri, 17 Jul 2015 07:17:37 +0000 (15:17 +0800)
committerOtavio Salvador <otavio@ossystems.com.br>
Wed, 29 Jul 2015 02:26:58 +0000 (23:26 -0300)
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 <ting.liu@freescale.com>
Acked-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
meta-fsl-ppc/classes/qoriq_build_64bit_kernel.bbclass

index 5dd8931fa4c72bd010fc6293e25524e346d2d8e4..f145746b91971aec9b93b81b22915a30fdbd0c04 100644 (file)
@@ -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', ''))
 }
-