• Tiezhu Yang's avatar
    module: Ignore L0 and rename is_arm_mapping_symbol() · 0a3bf860
    Tiezhu Yang authored
    The L0 symbol is generated when build module on LoongArch, ignore it in
    modpost and when looking at module symbols, otherwise we can not see the
    expected call trace.
    
    Now is_arm_mapping_symbol() is not only for ARM, in order to reflect the
    reality, rename is_arm_mapping_symbol() to is_mapping_symbol().
    
    This is related with commit c17a2538 ("mksysmap: Fix the mismatch of
    'L0' symbols in System.map").
    
    (1) Simple test case
    
      [loongson@linux hello]$ cat hello.c
      #include <linux/init.h>
      #include <linux/module.h>
      #include <linux/printk.h>
    
      static void test_func(void)
      {
      	  pr_info("This is a test\n");
    	  dump_stack();
      }
    
      static int __init hello_init(void)
      {
    	  pr_warn("Hello, world\n");
    	  test_func();
    
    	  return 0;
      }
    
      static void __exit hello_exit(void)
      {
    	  pr_warn("Goodbye\n");
      }
    
      module_init(hello_init);
      module_exit(hello_exit);
      MODULE_LICENSE("GPL");
      [loongson@linux hello]$ cat Makefile
      obj-m:=hello.o
    
      ccflags-y += -g -Og
    
      all:
    	  make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
      clean:
    	  make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean
    
    (2) Test environment
    
    system: LoongArch CLFS 5.5
    https://github.com/sunhaiyong1978/CLFS-for-LoongArch/releases/tag/5.0
    It needs to update grub to avoid booting error "invalid magic number".
    
    kernel: 6.3-rc1 with loongson3_defconfig + CONFIG_DYNAMIC_FTRACE=y
    
    (3) Test result
    
    Without this patch:
    
      [root@linux hello]# insmod hello.ko
      [root@linux hello]# dmesg
      ...
      Hello, world
      This is a test
      ...
      Call Trace:
      [<9000000000223728>] show_stack+0x68/0x18c
      [<90000000013374cc>] dump_stack_lvl+0x60/0x88
      [<ffff800002050028>] L0\x01+0x20/0x2c [hello]
      [<ffff800002058028>] L0\x01+0x20/0x30 [hello]
      [<900000000022097c>] do_one_initcall+0x88/0x288
      [<90000000002df890>] do_init_module+0x54/0x200
      [<90000000002e1e18>] __do_sys_finit_module+0xc4/0x114
      [<90000000013382e8>] do_syscall+0x7c/0x94
      [<9000000000221e3c>] handle_syscall+0xbc/0x158
    
    With this patch:
    
      [root@linux hello]# insmod hello.ko
      [root@linux hello]# dmesg
      ...
      Hello, world
      This is a test
      ...
      Call Trace:
      [<9000000000223728>] show_stack+0x68/0x18c
      [<90000000013374cc>] dump_stack_lvl+0x60/0x88
      [<ffff800002050028>] test_func+0x28/0x34 [hello]
      [<ffff800002058028>] hello_init+0x28/0x38 [hello]
      [<900000000022097c>] do_one_initcall+0x88/0x288
      [<90000000002df890>] do_init_module+0x54/0x200
      [<90000000002e1e18>] __do_sys_finit_module+0xc4/0x114
      [<90000000013382e8>] do_syscall+0x7c/0x94
      [<9000000000221e3c>] handle_syscall+0xbc/0x158
    Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
    Tested-by: Youling Tang <tangyouling@loongson.cn> # for LoongArch
    Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    0a3bf860
kallsyms.c 14.2 KB