]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
kernel: Add kernel specific OBJDUMP
authorKhem Raj <raj.khem@gmail.com>
Wed, 1 Mar 2023 05:30:05 +0000 (21:30 -0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 1 Mar 2023 21:27:45 +0000 (21:27 +0000)
This helps in switching toolchains cleanly for kernel build
between gcc and clang

Currently, some kernels allow building with clang but not all
the distro might use clang as default system compiler but kernel
may demand gcc which is provided via KERNEL_* variables, however
kernel does use OBJCOPY at places during build and it maybe set
to use llvm objcopy when using clang. That should be a deliberate
setting when clang is used for kernel as well, otherwise it should
use binutils provided objcopy

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
meta/classes-recipe/kernel-arch.bbclass
meta/classes-recipe/kernel-devicetree.bbclass
meta/classes-recipe/kernel-uboot.bbclass
meta/classes-recipe/kernel-yocto.bbclass
meta/classes-recipe/kernel.bbclass
meta/classes-recipe/module.bbclass
meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb

index 777f9002419a1a4b596cb3fa392c20336aca312e..5877048916732b74aa097a698206eb728b29545a 100644 (file)
@@ -68,9 +68,12 @@ TARGET_LD_KERNEL_ARCH ?= ""
 HOST_LD_KERNEL_ARCH ?= "${TARGET_LD_KERNEL_ARCH}"
 TARGET_AR_KERNEL_ARCH ?= ""
 HOST_AR_KERNEL_ARCH ?= "${TARGET_AR_KERNEL_ARCH}"
+TARGET_OBJCOPY_KERNEL_ARCH ?= ""
+HOST_OBJCOPY_KERNEL_ARCH ?= "${TARGET_OBJCOPY_KERNEL_ARCH}"
 
 KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_KERNEL_ARCH} -fuse-ld=bfd ${DEBUG_PREFIX_MAP} -fdebug-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} -fdebug-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH}"
 KERNEL_LD = "${CCACHE}${HOST_PREFIX}ld.bfd ${HOST_LD_KERNEL_ARCH}"
 KERNEL_AR = "${CCACHE}${HOST_PREFIX}ar ${HOST_AR_KERNEL_ARCH}"
+KERNEL_OBJCOPY = "${CCACHE}${HOST_PREFIX}objcopy ${HOST_OBJCOPY_KERNEL_ARCH}"
 TOOLCHAIN ?= "gcc"
 
index b2117de8050f5c0830bee287665e74fc27d07dfd..4d0ecb1032a73f6f53c0b9e67111f5c85661c83f 100644 (file)
@@ -68,7 +68,7 @@ do_compile:append() {
 
        for dtbf in ${KERNEL_DEVICETREE}; do
                dtb=`normalize_dtb "$dtbf"`
-               oe_runmake $dtb CC="${KERNEL_CC} $cc_extra " LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS}
+               oe_runmake $dtb CC="${KERNEL_CC} $cc_extra " LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" ${KERNEL_EXTRA_ARGS}
        done
 }
 
index 4aab02671e501a5050565949e6d46e54102b7840..30a85ccc287e52d67411b7e8dd6f4fe5e7d9ce23 100644 (file)
@@ -34,7 +34,7 @@ uboot_prep_kimage() {
                linux_comp="${FIT_KERNEL_COMP_ALG}"
        fi
 
-       [ -n "${vmlinux_path}" ] && ${OBJCOPY} -O binary -R .note -R .comment -S "${vmlinux_path}" linux.bin
+       [ -n "${vmlinux_path}" ] && ${KERNEL_OBJCOPY} -O binary -R .note -R .comment -S "${vmlinux_path}" linux.bin
 
        if [ "${linux_comp}" != "none" ] ; then
                if [ "${linux_comp}" = "gzip" ] ; then
index 7de99cff5642343318234c88b965e45f12a724b8..108b7e6752129a9f8e526ab477b8e9b48130bf82 100644 (file)
@@ -455,7 +455,7 @@ do_kernel_configme() {
                bbfatal_log "Could not find configuration queue (${meta_dir}/config.queue)"
        fi
 
-       CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}" CC="${KERNEL_CC}" LD="${KERNEL_LD}" ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
+       CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}" CC="${KERNEL_CC}" LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
        if [ $? -ne 0 -o ! -f ${B}/.config ]; then
                bberror "Could not generate a .config for ${KMACHINE}-${LINUX_KERNEL_TYPE}"
                if [ ${KCONF_AUDIT_LEVEL} -gt 1 ]; then
@@ -489,6 +489,7 @@ python do_config_analysis() {
     env['PATH'] = "%s:%s%s" % (d.getVar('PATH'), s, "/scripts/util/")
     env['LD'] = d.getVar('KERNEL_LD')
     env['CC'] = d.getVar('KERNEL_CC')
+    env['OBJCOPY'] = d.getVar('KERNEL_OBJCOPY')
     env['ARCH'] = d.getVar('ARCH')
     env['srctree'] = s
 
@@ -550,6 +551,7 @@ python do_kernel_configcheck() {
     env['PATH'] = "%s:%s%s" % (d.getVar('PATH'), s, "/scripts/util/")
     env['LD'] = d.getVar('KERNEL_LD')
     env['CC'] = d.getVar('KERNEL_CC')
+    env['OBJCOPY'] = d.getVar('KERNEL_OBJCOPY')
     env['ARCH'] = d.getVar('ARCH')
     env['srctree'] = s
 
index 4fbe84c4e4251d820aea7b83c14fbc88670f3c92..3f9c6c00e6899e708320ba6e8be070a7739d56bd 100644 (file)
@@ -234,7 +234,7 @@ UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}"
 # Some Linux kernel configurations need additional parameters on the command line
 KERNEL_EXTRA_ARGS ?= ""
 
-EXTRA_OEMAKE += ' CC="${KERNEL_CC}" LD="${KERNEL_LD}"'
+EXTRA_OEMAKE += ' CC="${KERNEL_CC}" LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}"'
 EXTRA_OEMAKE += ' HOSTCC="${BUILD_CC}" HOSTCFLAGS="${BUILD_CFLAGS}" HOSTLDFLAGS="${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}"'
 EXTRA_OEMAKE += ' HOSTCXX="${BUILD_CXX}" HOSTCXXFLAGS="${BUILD_CXXFLAGS}" PAHOLE=false'
 
index d52d5e30984b1ca232864360c8643a80aec921cb..b3b852be5f68d80bc9d3345a58b4ff8ed4e90bc1 100644 (file)
@@ -32,6 +32,7 @@ python do_devshell:prepend () {
     os.environ['CC'] = d.getVar('KERNEL_CC')
     os.environ['LD'] = d.getVar('KERNEL_LD')
     os.environ['AR'] = d.getVar('KERNEL_AR')
+    os.environ['OBJCOPY'] = d.getVar('KERNEL_OBJCOPY')
     os.environ['O'] = d.getVar('STAGING_KERNEL_BUILDDIR')
     kbuild_extra_symbols = d.getVar('KBUILD_EXTRA_SYMBOLS')
     if kbuild_extra_symbols:
@@ -45,7 +46,7 @@ module_do_compile() {
        oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR}   \
                   KERNEL_VERSION=${KERNEL_VERSION}    \
                   CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
-                  AR="${KERNEL_AR}" \
+                  AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \
                   O=${STAGING_KERNEL_BUILDDIR} \
                   KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" \
                   ${MAKE_TARGETS}
@@ -55,7 +56,7 @@ module_do_install() {
        unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
        oe_runmake DEPMOD=echo MODLIB="${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}" \
                   INSTALL_FW_PATH="${D}${nonarch_base_libdir}/firmware" \
-                  CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
+                  CC="${KERNEL_CC}" LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" \
                   O=${STAGING_KERNEL_BUILDDIR} \
                   ${MODULES_INSTALL_TARGET}
 
index 38282e58f1027a534258cd8108686e5849fa6f57..28e0807d1d68a253ca8271a5ff3249e55ac4fdc5 100644 (file)
@@ -27,7 +27,8 @@ EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" CROS
 do_configure() {
        unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
        for t in prepare scripts_basic scripts; do
-               oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \
+               oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
+               AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \
                -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} $t
        done
 }
index 2181e45a8d604ddfed92b9a3680037a03f81c476..efe359ec329a723875ae3841c669b6d67ba606a4 100644 (file)
@@ -21,12 +21,12 @@ do_compile() {
        then
                unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP
                oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
-                          AR="${KERNEL_AR}" \
+                          AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \
                           -C ${STAGING_KERNEL_DIR} scripts
                oe_runmake KDIR=${STAGING_KERNEL_DIR}   \
                           M="${S}/runtime/uprobes/" \
                           CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
-                          AR="${KERNEL_AR}" \
+                          AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \
                           -C "${S}/runtime/uprobes/"
        fi
 }