]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
kernel: Add kernel specific STRIP variable
authorKhem Raj <raj.khem@gmail.com>
Fri, 16 Jun 2023 08:31:07 +0000 (01:31 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 19 Jun 2023 12:18:16 +0000 (13:18 +0100)
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

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes-recipe/kernel-arch.bbclass
meta/classes-recipe/kernel-devicetree.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 5877048916732b74aa097a698206eb728b29545a..6e19dbbba8950d5b879e69b00b43ad7e868a79ce 100644 (file)
@@ -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"
 
index b3bae32f9e822ff4030c2cc5546695cc81228814..1b60c14740cebd55ac25d3bd8bef509fbc1ffb3c 100644 (file)
@@ -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
 }
 
index 108b7e6752129a9f8e526ab477b8e9b48130bf82..4ac977b12207801e469372022431dacaf04dda28 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}" 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
 
index 9c8036f4df015332a7c3fb652de4d005a3153ae0..e82b696d1a1419ac0aaf5ddbdcd212be29aea259 100644 (file)
@@ -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"] = ''
 }
index b3b852be5f68d80bc9d3345a58b4ff8ed4e90bc1..f2f0b25a2d1fcf141730930ec8dc45949860f7ad 100644 (file)
@@ -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}
 
index 28e0807d1d68a253ca8271a5ff3249e55ac4fdc5..e3b258753f33f082a794f3b5a8e3438997cdbb60 100644 (file)
@@ -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
 }
index efe359ec329a723875ae3841c669b6d67ba606a4..3d35481bdc9f632830661cc64d248d584ba77319 100644 (file)
@@ -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
 }