From 0ef2e5081b9c7250d2755e038f911a99ebe43a65 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 16 Jun 2023 01:31:07 -0700 Subject: kernel: Add kernel specific STRIP variable strip can be coming from binutils or from llvm in some cases llvm-strip can fail on kernel Subprocess output:aarch64-yoe-linux-llvm-strip: error: Link field value 28 in section .rela.dyn is not a symbol table This helps in selecting which strip is used when building kernel (From OE-Core rev: 03973c8c1c93ddb1c8e05b773bfcc45aed73a99f) Signed-off-by: Khem Raj Cc: Bruce Ashfield Signed-off-by: Richard Purdie --- meta/classes-recipe/kernel-arch.bbclass | 3 +++ meta/classes-recipe/kernel-devicetree.bbclass | 2 +- meta/classes-recipe/kernel-yocto.bbclass | 4 +++- meta/classes-recipe/kernel.bbclass | 6 +++++- meta/classes-recipe/module.bbclass | 7 +++++++ meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb | 1 + meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb | 2 ++ 7 files changed, 22 insertions(+), 3 deletions(-) diff --git a/meta/classes-recipe/kernel-arch.bbclass b/meta/classes-recipe/kernel-arch.bbclass index 5877048916..6e19dbbba8 100644 --- a/meta/classes-recipe/kernel-arch.bbclass +++ b/meta/classes-recipe/kernel-arch.bbclass @@ -70,10 +70,13 @@ TARGET_AR_KERNEL_ARCH ?= "" HOST_AR_KERNEL_ARCH ?= "${TARGET_AR_KERNEL_ARCH}" TARGET_OBJCOPY_KERNEL_ARCH ?= "" HOST_OBJCOPY_KERNEL_ARCH ?= "${TARGET_OBJCOPY_KERNEL_ARCH}" +TARGET_STRIP_KERNEL_ARCH ?= "" +HOST_STRIP_KERNEL_ARCH ?= "${TARGET_STRIP_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}" +KERNEL_STRIP = "${CCACHE}${HOST_PREFIX}strip ${HOST_STRIP_KERNEL_ARCH}" TOOLCHAIN ?= "gcc" diff --git a/meta/classes-recipe/kernel-devicetree.bbclass b/meta/classes-recipe/kernel-devicetree.bbclass index b3bae32f9e..1b60c14740 100644 --- a/meta/classes-recipe/kernel-devicetree.bbclass +++ b/meta/classes-recipe/kernel-devicetree.bbclass @@ -73,7 +73,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}" OBJCOPY="${KERNEL_OBJCOPY}" ${KERNEL_EXTRA_ARGS} + oe_runmake $dtb CC="${KERNEL_CC} $cc_extra " LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" STRIP="${KERNEL_STRIP}" ${KERNEL_EXTRA_ARGS} done } diff --git a/meta/classes-recipe/kernel-yocto.bbclass b/meta/classes-recipe/kernel-yocto.bbclass index 108b7e6752..4ac977b122 100644 --- a/meta/classes-recipe/kernel-yocto.bbclass +++ b/meta/classes-recipe/kernel-yocto.bbclass @@ -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}" OBJCOPY="${KERNEL_OBJCOPY}" 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}" STRIP="${KERNEL_STRIP}" 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 @@ -490,6 +490,7 @@ python do_config_analysis() { env['LD'] = d.getVar('KERNEL_LD') env['CC'] = d.getVar('KERNEL_CC') env['OBJCOPY'] = d.getVar('KERNEL_OBJCOPY') + env['STRIP'] = d.getVar('KERNEL_STRIP') env['ARCH'] = d.getVar('ARCH') env['srctree'] = s @@ -552,6 +553,7 @@ python do_kernel_configcheck() { env['LD'] = d.getVar('KERNEL_LD') env['CC'] = d.getVar('KERNEL_CC') env['OBJCOPY'] = d.getVar('KERNEL_OBJCOPY') + env['STRIP'] = d.getVar('KERNEL_STRIP') env['ARCH'] = d.getVar('ARCH') env['srctree'] = s diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass index 9c8036f4df..e82b696d1a 100644 --- a/meta/classes-recipe/kernel.bbclass +++ b/meta/classes-recipe/kernel.bbclass @@ -235,7 +235,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}" OBJCOPY="${KERNEL_OBJCOPY}"' +EXTRA_OEMAKE += ' CC="${KERNEL_CC}" LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" STRIP="${KERNEL_STRIP}"' EXTRA_OEMAKE += ' HOSTCC="${BUILD_CC}" HOSTCFLAGS="${BUILD_CFLAGS}" HOSTLDFLAGS="${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}"' EXTRA_OEMAKE += ' HOSTCXX="${BUILD_CXX}" HOSTCXXFLAGS="${BUILD_CXXFLAGS}"' @@ -334,6 +334,10 @@ kernel_do_transform_bundled_initramfs() { } do_transform_bundled_initramfs[dirs] = "${B}" +python do_package:prepend () { + os.environ['STRIP'] = d.getVar('KERNEL_STRIP') +} + python do_devshell:prepend () { os.environ["LDFLAGS"] = '' } diff --git a/meta/classes-recipe/module.bbclass b/meta/classes-recipe/module.bbclass index b3b852be5f..f2f0b25a2d 100644 --- a/meta/classes-recipe/module.bbclass +++ b/meta/classes-recipe/module.bbclass @@ -20,6 +20,10 @@ python __anonymous () { d.setVar('KBUILD_EXTRA_SYMBOLS', " ".join(extra_symbols)) } +python do_package:prepend () { + os.environ['STRIP'] = d.getVar('KERNEL_STRIP') +} + python do_devshell:prepend () { os.environ['CFLAGS'] = '' os.environ['CPPFLAGS'] = '' @@ -33,6 +37,7 @@ python do_devshell:prepend () { os.environ['LD'] = d.getVar('KERNEL_LD') os.environ['AR'] = d.getVar('KERNEL_AR') os.environ['OBJCOPY'] = d.getVar('KERNEL_OBJCOPY') + os.environ['STRIP'] = d.getVar('KERNEL_STRIP') os.environ['O'] = d.getVar('STAGING_KERNEL_BUILDDIR') kbuild_extra_symbols = d.getVar('KBUILD_EXTRA_SYMBOLS') if kbuild_extra_symbols: @@ -47,6 +52,7 @@ module_do_compile() { KERNEL_VERSION=${KERNEL_VERSION} \ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \ + STRIP="${KERNEL_STRIP}" \ O=${STAGING_KERNEL_BUILDDIR} \ KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" \ ${MAKE_TARGETS} @@ -57,6 +63,7 @@ module_do_install() { 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}" OBJCOPY="${KERNEL_OBJCOPY}" \ + STRIP="${KERNEL_STRIP}" \ O=${STAGING_KERNEL_BUILDDIR} \ ${MODULES_INSTALL_TARGET} diff --git a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb index 28e0807d1d..e3b258753f 100644 --- a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb +++ b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb @@ -29,6 +29,7 @@ do_configure() { for t in prepare scripts_basic scripts; do oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \ + STRIP="${KERNEL_STRIP}" \ -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} $t done } diff --git a/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb b/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb index efe359ec32..3d35481bdc 100644 --- a/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb +++ b/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb @@ -22,11 +22,13 @@ do_compile() { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \ + STRIP="${KERNEL_STRIP}" \ -C ${STAGING_KERNEL_DIR} scripts oe_runmake KDIR=${STAGING_KERNEL_DIR} \ M="${S}/runtime/uprobes/" \ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \ + STRIP="${KERNEL_STRIP}" \ -C "${S}/runtime/uprobes/" fi } -- cgit v1.2.3-54-g00ecf