[PATCH] kernel-build: fix STRIP_KERNEL_EXPORTS for 64-bit kernels

Hauke Mehrtens hauke at hauke-m.de
Thu Dec 31 14:07:27 EST 2020


On 12/30/20 9:04 PM, Rui Salvaterra wrote:
> While parsing the nm output, we need to account for the fact that 64-bit kernels
> have 64-bit wide addresses. While at it, replace the grep | sed combo with a
> single awk invocation and a stronger regex.
> 
> Fixes: 2ef0acc5fcda557fa5aaad35d27cb8cf75be96d2 "kernel-build: fix
> STRIP_KERNEL_EXPORTS for recent kernels"
> 
> Signed-off-by: Rui Salvaterra <rsalvaterra at gmail.com>
> ---
>   include/kernel-build.mk | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/kernel-build.mk b/include/kernel-build.mk
> index 22f7c4c7c7..6123c9d456 100644
> --- a/include/kernel-build.mk
> +++ b/include/kernel-build.mk
> @@ -105,7 +105,7 @@ define BuildKernel
>   		xargs $(TARGET_CROSS)nm | \
>   		awk '$$$$1 == "U" { print $$$$2 } ' | \
>   		sort -u > $(KERNEL_BUILD_DIR)/mod_symtab.txt
> -	$(TARGET_CROSS)nm -n $(LINUX_DIR)/vmlinux.o | grep ' [rR] __ksymtab' | sed -e 's,........ [rR] __ksymtab_,,' > $(KERNEL_BUILD_DIR)/kernel_symtab.txt
> +	$(TARGET_CROSS)nm -n $(LINUX_DIR)/vmlinux.o | awk '/^[0-9a-f]+ [rR] __ksymtab_/ {print substr($$$$3,11)}' > $(KERNEL_BUILD_DIR)/kernel_symtab.txt
>   	grep -Ff $(KERNEL_BUILD_DIR)/mod_symtab.txt $(KERNEL_BUILD_DIR)/kernel_symtab.txt > $(KERNEL_BUILD_DIR)/sym_include.txt
>   	grep -Fvf $(KERNEL_BUILD_DIR)/mod_symtab.txt $(KERNEL_BUILD_DIR)/kernel_symtab.txt > $(KERNEL_BUILD_DIR)/sym_exclude.txt
>   	( \
> 
Hi,

On the ipq40xx target the results of both commands are different. The 
original command removed the __ksymtab_ prefix, you do not remove it.

Original result:
----------------------------
hauke at hauke-t480:~/openwrt/openwrt$ 
./staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-8.4.0_musl_eabi/bin/arm-openwrt-linux-nm 
-n 
build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/linux-5.4.85/vmlinux.o 
| grep ' [rR] __ksymtab' | sed -e 's,........ [rR] __ksymtab_,,'  |sort 
|head -5
__ablkcipher_walk_complete
ablkcipher_walk_done
ablkcipher_walk_phys
abort
abort_creds
----------------------------

Result with your change:
----------------------------
hauke at hauke-t480:~/openwrt/openwrt$ 
./staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-8.4.0_musl_eabi/bin/arm-openwrt-linux-nm 
-n 
build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/linux-5.4.85/vmlinux.o 
| awk '/^[0-9a-f]+ [rR] __ksymtab_/ {print substr($$$$3,11)}' |sort |head -5
  __ksymtab___ablkcipher_walk_complete
  __ksymtab_ablkcipher_walk_done
  __ksymtab_ablkcipher_walk_phys
  __ksymtab_abort
  __ksymtab_abort_creds
----------------------------

I build the kernel with this configuration:

hauke at hauke-t480:~/openwrt/openwrt$ ./scripts/diffconfig.sh
CONFIG_TARGET_ipq40xx=y
CONFIG_TARGET_ipq40xx_generic=y
CONFIG_TARGET_ipq40xx_generic_DEVICE_avm_fritzbox-7530=y
hauke at hauke-t480:~/openwrt/openwrt$

Hauke

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openwrt.org/pipermail/openwrt-devel/attachments/20201231/192886be/attachment.sig>


More information about the openwrt-devel mailing list