查找ko文件中text段的某个函数名

8 篇文章 1 订阅
5 篇文章 0 订阅

1.前言
目的是找到ko_hi3518目录下某个ko文件中是否存在某个函数定义的地方。
如:查找CMPI_CreateProc是在哪个驱动文件中实现的。

2.ko_hi3518目录

acodec.ko           hi3518_ai.ko    hi3518_group.ko     hi3518_rc.ko      hi3518_vda.ko   hidmac.ko             load3518e       wdt.ko              clkcfg_hi3518.sh  hi3518_ao.ko    hi3518_h264e.ko   hi3518_region.ko  hi3518_venc.ko  hifb.ko    lowpower.sh    extdrv            hi3518_base.ko  hi3518_isp.ko    hi3518_sio.ko     hi3518_viu.ko   hi_rtc.ko  mmz.ko
hi3518_adec.ko    hi3518_chnl.ko  hi3518_ive.ko    hi3518_sys.ko     hi3518_vou.ko   hiuser.ko  pinmux_hi3518.sh  hi3518_aenc.ko    hi3518_dsu.ko   hi3518_jpege.ko  hi3518_tde.ko     hi3518_vpss.ko  load3518   sysctl_hi3518.sh

3.函数被多处引用,但只有一个地方实现

arm-hisiv100nptl-linux-nm `ls *.ko` | grep "CMPI_CreateProc"

结果:

         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
00000b88 T CMPI_CreateProc
000000e1 r __kstrtab_CMPI_CreateProc
00000024 r __ksymtab_CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc
         U CMPI_CreateProc

4.脚本命令
⑴命令

for i in `ls *.ko`; do echo $i && arm-hisiv100nptl-linux-nm $i | grep "T CMPI_CreateProc"; done

⑵ 执行结果

acodec.ko
hi3518_adec.ko
hi3518_aenc.ko
hi3518_ai.ko
hi3518_ao.ko
hi3518_base.ko
00000b88 T CMPI_CreateProc
hi3518_chnl.ko
hi3518_dsu.ko
hi3518_group.ko
hi3518_h264e.ko
hi3518_isp.ko
hi3518_ive.ko
hi3518_jpege.ko
hi3518_rc.ko
hi3518_region.ko
hi3518_sio.ko
hi3518_sys.ko
hi3518_tde.ko
hi3518_vda.ko
hi3518_venc.ko
hi3518_viu.ko
hi3518_vou.ko
hi3518_vpss.ko
hidmac.ko
hifb.ko
hi_rtc.ko
hiuser.ko
mmz.ko
wdt.ko

⑶命令

arm-hisiv100nptl-linux-nm `ls *.ko`  -A | grep "T CMPI_CreateProc"

⑷执行结果

hi3518_base.ko:00000b88 T CMPI_CreateProc

6.看看 hi3518_base.ko 文件

00000174 r C.375.24392
00000b88 T CMPI_CreateProc
00000740 T CMPI_DevExit
00000750 T CMPI_DevInit
000003cc T CMPI_ExitModules
000004c8 T CMPI_InitModules
000052cc T CMPI_LogExit
00005d90 T CMPI_LogInit
00005efc T CMPI_MmzFree
00005f14 T CMPI_MmzMalloc
00000a84 T CMPI_ProcExit
00000aa4 T CMPI_ProcInit
00000c4c t CMPI_ProcOpen
00000a58 t CMPI_ProcWrite
00000094 T CMPI_QueryModules
00000828 T CMPI_RegisterDevice
00000228 T CMPI_RegisterMod
00000af0 T CMPI_RemoveProc
00000000 T CMPI_StopModules
000007c8 T CMPI_UnRegisterDevice
000001a8 T CMPI_UnRegisterMod
000008d4 T CMPI_UserCopy
00000000 t COMM_ModExit
00000034 t COMM_ModInit
00000720 T COMM_exit_proc_ctrl
00000000 T COMM_init_proc_ctrl
00000c88 t Close
00005314 t Close
000040b8 t DoIoctl
00005374 t DoIoctl
00005274 T HI_ChkLogLevel
00005d3c T HI_LOG
00002140 t Ioctl
00005358 t Ioctl
00005964 t LogProcRead
00005690 t LogProcWrite
00005b3c T LogWrite
00000c74 t Open
000052a8 t Open
000054c0 t Read
0000310c T VB_AddBlkToPool
00002858 T VB_CreatePool
00004ea4 T VB_CreatePoolExt
00001fa4 T VB_DestroyPool
00001f60 T VB_Exit
00003de8 T VB_GetBlkByPoolId
00004010 T VB_GetBlkBySize
000022bc T VB_GetPoolId
00001bd8 T VB_GetPoolInfo
00001858 T VB_Handle2BlkId
00001660 T VB_Handle2Kern
0000175c T VB_Handle2Phys
00001944 T VB_Handle2PoolId
0000207c T VB_Init
00001220 T VB_InquireBlkCnt
000013ec T VB_InquireOneUserCnt
00000c9c T VB_InquirePool
00000f8c T VB_InquirePoolBusyBlkCnt
0000108c T VB_InquirePoolUserCnt
0000151c T VB_InquireUserCnt
00000d8c T VB_IsBlkValid
00001a34 T VB_Phy2Handle
00003adc T VB_PutBlk
000037e0 T VB_UserAdd
00003350 T VB_UserSub
0000234c t VbCreatePool
00001cc8 t VbDestroyPool
00001e50 t VbDoVbExit
000028fc t VbProcShow
0000215c t VbSearchCommPoolBySize
         U __aeabi_uidiv
         U __arm_ioremap
         U __copy_from_user
         U __copy_to_user
00000014 r __func__.16496
00000000 r __func__.16526
00000164 r __func__.23025
0000011c r __func__.23038
00000138 r __func__.23080
000001f4 r __func__.23100
00000148 r __func__.23166
00000208 r __func__.23217
0000010c r __func__.23233
000001e8 r __func__.23258
000000fc r __func__.23347
000000e8 r __func__.23377
000000d8 r __func__.23402
000000c8 r __func__.23429
000000b8 r __func__.23461
000001dc r __func__.23498
000001d0 r __func__.23581
00000218 r __func__.23709
000001c0 r __func__.23770
000000a4 r __func__.23839
0000008c r __func__.23876
00000078 r __func__.23913
00000060 r __func__.23978
00000044 r __func__.24008
00000034 r __func__.24043
0000012c r __func__.24154
0000022c r __func__.27868
00000238 r __func__.28155
         U __init_waitqueue_head
         U __iounmap
00001d3c b __key.28158
         U __kmalloc
000000e1 r __kstrtab_CMPI_CreateProc
0000008f r __kstrtab_CMPI_DevExit
0000009c r __kstrtab_CMPI_DevInit
0000004a r __kstrtab_CMPI_ExitModules
0000005b r __kstrtab_CMPI_InitModules
00000271 r __kstrtab_CMPI_LogExit
0000027e r __kstrtab_CMPI_LogInit
000002a1 r __kstrtab_CMPI_MmzFree
000002ae r __kstrtab_CMPI_MmzMalloc
0000006c r __kstrtab_CMPI_QueryModules
000000bf r __kstrtab_CMPI_RegisterDevice
00000039 r __kstrtab_CMPI_RegisterMod
000000f1 r __kstrtab_CMPI_RemoveProc
0000007e r __kstrtab_CMPI_StopModules
000000a9 r __kstrtab_CMPI_UnRegisterDevice
00000026 r __kstrtab_CMPI_UnRegisterMod
000000d3 r __kstrtab_CMPI_UserCopy
00000292 r __kstrtab_HI_ChkLogLevel
0000028b r __kstrtab_HI_LOG
00000195 r __kstrtab_VB_AddBlkToPool
00000263 r __kstrtab_VB_CreatePool
000001a5 r __kstrtab_VB_CreatePoolExt
00000254 r __kstrtab_VB_DestroyPool
00000101 r __kstrtab_VB_Exit
00000242 r __kstrtab_VB_GetBlkByPoolId
00000232 r __kstrtab_VB_GetBlkBySize
00000223 r __kstrtab_VB_GetPoolInfo
000001ea r __kstrtab_VB_Handle2BlkId
000001db r __kstrtab_VB_Handle2Kern
000001cc r __kstrtab_VB_Handle2Phys
000001fa r __kstrtab_VB_Handle2PoolId
00000109 r __kstrtab_VB_Init
0000015d r __kstrtab_VB_InquireBlkCnt
0000016e r __kstrtab_VB_InquireOneUserCnt
00000140 r __kstrtab_VB_InquirePool
00000111 r __kstrtab_VB_InquirePoolBusyBlkCnt
0000012a r __kstrtab_VB_InquirePoolUserCnt
00000183 r __kstrtab_VB_InquireUserCnt
0000014f r __kstrtab_VB_IsBlkValid
0000020b r __kstrtab_VB_Phy2Handle
00000219 r __kstrtab_VB_PutBlk
000001c1 r __kstrtab_VB_UserAdd
000001b6 r __kstrtab_VB_UserSub
00000000 r __kstrtab_g_aModName
0000000b r __kstrtab_g_astModules
00000018 r __kstrtab_g_proc_enable
00000024 r __ksymtab_CMPI_CreateProc
0000002c r __ksymtab_CMPI_DevExit
00000034 r __ksymtab_CMPI_DevInit
0000003c r __ksymtab_CMPI_ExitModules
00000044 r __ksymtab_CMPI_InitModules
0000004c r __ksymtab_CMPI_LogExit
00000054 r __ksymtab_CMPI_LogInit
0000005c r __ksymtab_CMPI_MmzFree
00000064 r __ksymtab_CMPI_MmzMalloc
0000006c r __ksymtab_CMPI_QueryModules
00000074 r __ksymtab_CMPI_RegisterDevice
0000007c r __ksymtab_CMPI_RegisterMod
00000084 r __ksymtab_CMPI_RemoveProc
0000008c r __ksymtab_CMPI_StopModules
00000094 r __ksymtab_CMPI_UnRegisterDevice
0000009c r __ksymtab_CMPI_UnRegisterMod
000000a4 r __ksymtab_CMPI_UserCopy
000000ac r __ksymtab_HI_ChkLogLevel
000000b4 r __ksymtab_HI_LOG
000000bc r __ksymtab_VB_AddBlkToPool
000000c4 r __ksymtab_VB_CreatePool
000000cc r __ksymtab_VB_CreatePoolExt
000000d4 r __ksymtab_VB_DestroyPool
000000dc r __ksymtab_VB_Exit
000000e4 r __ksymtab_VB_GetBlkByPoolId
000000ec r __ksymtab_VB_GetBlkBySize
000000f4 r __ksymtab_VB_GetPoolInfo
000000fc r __ksymtab_VB_Handle2BlkId
00000104 r __ksymtab_VB_Handle2Kern
0000010c r __ksymtab_VB_Handle2Phys
00000114 r __ksymtab_VB_Handle2PoolId
0000011c r __ksymtab_VB_Init
00000124 r __ksymtab_VB_InquireBlkCnt
0000012c r __ksymtab_VB_InquireOneUserCnt
00000134 r __ksymtab_VB_InquirePool
0000013c r __ksymtab_VB_InquirePoolBusyBlkCnt
00000144 r __ksymtab_VB_InquirePoolUserCnt
0000014c r __ksymtab_VB_InquireUserCnt
00000154 r __ksymtab_VB_IsBlkValid
0000015c r __ksymtab_VB_Phy2Handle
00000164 r __ksymtab_VB_PutBlk
0000016c r __ksymtab_VB_UserAdd
00000174 r __ksymtab_VB_UserSub
0000017c r __ksymtab_g_aModName
00000184 r __ksymtab_g_astModules
0000018c r __ksymtab_g_proc_enable
         U __memzero
00000031 r __mod_author448
0000001d r __mod_license449
00000042 r __mod_logbuflen443
00000084 r __mod_logbuflentype442
0000009c r __mod_srcversion23
000000c9 r __mod_vermagic5
00000000 r __mod_version450
000000c0 r __module_depends
00000000 r __param_logbuflen
00000028 r __param_str_logbuflen
00000000 D __this_module
         U __wake_up
         U _cond_resched
         U autoremove_wake_function
00000000 T cleanup_module
0000004c d comm_dir_table
00000094 d comm_eproc_table
00000a90 b comm_eproc_tbl_head
00000000 d comm_parent_tbl
         U create_proc_entry
         U down
         U finish_wait
00000b9c b g_DevNode
00000708 B g_aModName
00000000 B g_astModules
00000a9c b g_bCreateNode
00000a98 b g_bDevInit
00000048 D g_proc_enable
00001cf0 B g_stVbSpinLock
         U hil_mmb_alloc
         U hil_mmb_free
         U hil_mmb_getby_phys
00000034 T init_module
         U kfree
         U kmalloc_caches
         U kmem_cache_alloc
00000a94 b logbuflen
         U memcpy
         U memset
         U misc_deregister
         U misc_register
         U module_put
000000dc d mpp_proc_ops
         U panic
         U param_ops_int
         U prepare_to_wait
         U printk
         U proc_dointvec
         U proc_mkdir
         U register_sysctl_table
         U remove_proc_entry
00001ca8 b s_apstBlks
00001b20 b s_apstPools
000001ac d s_as32LogLevel
00001cec b s_bIsConf
00000a8c b s_bIsInited
00000264 d s_bWaitData
000014a0 b s_proc_items
0000149c b s_pumap_proc
00001cb8 b s_stCommPools
00001cc0 b s_stDevice
00000144 d s_stFileOp
00001cf4 b s_stLogBuf
00001d10 b s_stLogDevice
00000268 d s_stLogFileOp
00001cac b s_stSema
00001b24 b s_stVbConf
00001cf0 b s_u32State
         U schedule
         U schedule_timeout
         U seq_lseek
         U seq_printf
         U seq_read
         U simple_strtol
         U single_open
         U single_release
         U snprintf
         U strcmp
         U strncpy
         U unregister_sysctl_table
         U up
         U vsnprintf

7.也可以分开看
⑴命令 arm-hisiv100nptl-linux-nm hi3518_base.ko -u

         U __aeabi_uidiv
         U __arm_ioremap
         U __copy_from_user
         U __copy_to_user
         U __init_waitqueue_head
         U __iounmap
         U __kmalloc
         U __memzero
         U __wake_up
         U _cond_resched
         U autoremove_wake_function
         U create_proc_entry
         U down
         U finish_wait
         U hil_mmb_alloc
         U hil_mmb_free
         U hil_mmb_getby_phys
         U kfree
         U kmalloc_caches
         U kmem_cache_alloc
         U memcpy
         U memset
         U misc_deregister
         U misc_register
         U module_put
         U panic
         U param_ops_int
         U prepare_to_wait
         U printk
         U proc_dointvec
         U proc_mkdir
         U register_sysctl_table
         U remove_proc_entry
         U schedule
         U schedule_timeout
         U seq_lseek
         U seq_printf
         U seq_read
         U simple_strtol
         U single_open
         U single_release
         U snprintf
         U strcmp
         U strncpy
         U unregister_sysctl_table
         U up
         U vsnprintf
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值