402 Star 1.4K Fork 1.4K

GVPopenEuler / kernel

 / 详情

allyesconfig 编译失败

修复中
缺陷
创建于  
2023-04-20 10:47

【标题描述】编译时函数名冲突
【环境信息】Ubuntu 22.04, gcc 9
【问题复现步骤】
当采用allyesconfig配置内核的时候,make时链接过程会出现错误。

原因是drivers/net/ethernet/huawei/hinic/目录和drivers/scsi/huawei/hifc/目录具有大量重名非static函数和全局变量,而且Kconfig中没有相应的互斥策略。

出现概率:必现

【附件信息】
下面是编译openEuler Kernel 1.0 LTS 的链接错误信息,其他版本也有相似情况:

ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o: in function `ppf_ht_gpa_set':
(.text+0x75b0): multiple definition of `ppf_ht_gpa_set'; drivers/scsi/huawei/hifc/hifc_hwdev.o:hifc_hwdev.c:(.text+0x6fa0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o: in function `mgmt_fmw_act_event_handler':
(.text+0xac50): multiple definition of `mgmt_fmw_act_event_handler'; drivers/scsi/huawei/hifc/hifc_hwdev.o:hifc_hwdev.c:(.text+0xd00): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o: in function `print_hilink_info':
(.text+0x4020): multiple definition of `print_hilink_info'; drivers/scsi/huawei/hifc/hifc_hwdev.o:hifc_hwdev.c:(.text+0x3e80): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o: in function `mgmt_get_mctp_event_handler':
(.text+0xacf0): multiple definition of `mgmt_get_mctp_event_handler'; drivers/scsi/huawei/hifc/hifc_hwdev.o:hifc_hwdev.c:(.text+0xda0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o:(.data+0x60): multiple definition of `__hw_to_char_fec'; drivers/scsi/huawei/hifc/hifc_hwdev.o:(.data+0x140): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o:(.data+0x0): multiple definition of `__hw_to_char_port_type'; drivers/scsi/huawei/hifc/hifc_hwdev.o:(.data+0xe0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o: in function `mgmt_pcie_dfx_event_handler':
(.text+0xaca0): multiple definition of `mgmt_pcie_dfx_event_handler'; drivers/scsi/huawei/hifc/hifc_hwdev.o:hifc_hwdev.c:(.text+0xd50): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o: in function `pf_fault_event_handler':
(.text+0xabb0): multiple definition of `pf_fault_event_handler'; drivers/scsi/huawei/hifc/hifc_hwdev.o:hifc_hwdev.c:(.text+0xc60): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o:(.data+0xa0): multiple definition of `mgmt_status_log'; drivers/scsi/huawei/hifc/hifc_hwdev.o:(.data+0x180): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_hwdev.o: in function `mgmt_watchdog_event_handler':
(.text+0xac00): multiple definition of `mgmt_watchdog_event_handler'; drivers/scsi/huawei/hifc/hifc_hwdev.o:hifc_hwdev.c:(.text+0xcb0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_cfg.o: in function `init_cfg_mgmt':
(.text+0x4f50): multiple definition of `init_cfg_mgmt'; drivers/scsi/huawei/hifc/hifc_cfg.o:hifc_cfg.c:(.text+0x910): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_cfg.o: in function `free_capability':
(.text+0x6500): multiple definition of `free_capability'; drivers/scsi/huawei/hifc/hifc_cfg.o:hifc_cfg.c:(.text+0x12a0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_cfg.o:(.bss+0x400): multiple definition of `intr_mode'; drivers/scsi/huawei/hifc/hifc_cfg.o:(.bss+0x100): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_cfg.o: in function `free_cfg_mgmt':
(.text+0x5640): multiple definition of `free_cfg_mgmt'; drivers/scsi/huawei/hifc/hifc_cfg.o:hifc_cfg.c:(.text+0xfa0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_cfg.o: in function `init_capability':
(.text+0x57d0): multiple definition of `init_capability'; drivers/scsi/huawei/hifc/hifc_cfg.o:hifc_cfg.c:(.text+0x1110): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_lld.o:(.data+0x2a0): multiple definition of `g_hinic_chip_list'; drivers/scsi/huawei/hifc/hifc_lld.o:(.data+0x1e0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_lld.o:(.bss+0x240): multiple definition of `g_lld_lock'; drivers/scsi/huawei/hifc/hifc_lld.o:(.bss+0xc0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_lld.o: in function `get_fc_devname':
(.text+0x5e50): multiple definition of `get_fc_devname'; drivers/scsi/huawei/hifc/hifc_tool_hw.o:hifc_tool_hw.c:(.text+0x1a50): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0x4a0): multiple definition of `g_card_phy_addr'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x4a0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0x3a0): multiple definition of `card_id'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x3a0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `ffm_intr_msg_record':
hinic_dbgtool_knl.c:(.text+0x1e0): multiple definition of `ffm_intr_msg_record'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0x1e0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0x8e0): multiple definition of `g_card_node_array'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x8e0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_api_cmd_read':
hinic_dbgtool_knl.c:(.text+0x5d0): multiple definition of `dbgtool_knl_api_cmd_read'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0x3d0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_api_cmd_write':
hinic_dbgtool_knl.c:(.text+0x7e0): multiple definition of `dbgtool_knl_api_cmd_write'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0x5e0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `chipif_get_all_pf_dev_info':
hinic_dbgtool_knl.c:(.text+0x930): multiple definition of `chipif_get_all_pf_dev_info'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0x730): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_pf_dev_info_get':
hinic_dbgtool_knl.c:(.text+0xb20): multiple definition of `dbgtool_knl_pf_dev_info_get'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0x920): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0x3e0): multiple definition of `g_addr_lock'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x3e0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0x6c0): multiple definition of `g_card_vir_addr'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x6c0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_ffm_info_rd':
hinic_dbgtool_knl.c:(.text+0xe70): multiple definition of `dbgtool_knl_ffm_info_rd'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0xc70): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_ffm_info_clr':
hinic_dbgtool_knl.c:(.text+0xed0): multiple definition of `dbgtool_knl_ffm_info_clr'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0xcd0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_msg_to_up':
hinic_dbgtool_knl.c:(.text+0xf00): multiple definition of `dbgtool_knl_msg_to_up'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0xd00): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_free_mem':
hinic_dbgtool_knl.c:(.text+0x1220): multiple definition of `dbgtool_knl_free_mem'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0x1020): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_unlocked_ioctl':
hinic_dbgtool_knl.c:(.text+0x13e0): multiple definition of `dbgtool_knl_unlocked_ioctl'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0x11e0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_init':
hinic_dbgtool_knl.c:(.text+0x16e0): multiple definition of `dbgtool_knl_init'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0x14d0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0x100): multiple definition of `g_dbgtool_init_flag'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x100): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0xc0): multiple definition of `g_dbgtool_ref_cnt'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0xc0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0x360): multiple definition of `dbgtool_dev_id'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x360): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0x180): multiple definition of `dbgtool_chr_dev'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x180): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o:(.bss+0x140): multiple definition of `dbgtool_d_class'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x140): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.o: in function `dbgtool_knl_deinit':
hinic_dbgtool_knl.c:(.text+0x1b80): multiple definition of `dbgtool_knl_deinit'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:hifc_dbgtool_knl.c:(.text+0x1970): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_nictool.o: in function `send_to_service_driver':
hinic_nictool.c:(.text+0x4fc0): multiple definition of `send_to_service_driver'; drivers/scsi/huawei/hifc/hifc_tool.o:hifc_tool.c:(.text+0x790): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_nictool.o:(.data+0x0): multiple definition of `sm_module_cmd_handle'; drivers/scsi/huawei/hifc/hifc_tool_hw.o:(.data+0x0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_nictool.o: in function `if_nictool_exist':
hinic_nictool.c:(.text+0x66b0): multiple definition of `if_nictool_exist'; drivers/scsi/huawei/hifc/hifc_tool.o:hifc_tool.c:(.text+0x12c0): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_nictool.o: in function `nictool_k_init':
hinic_nictool.c:(.text+0x6720): multiple definition of `nictool_k_init'; drivers/scsi/huawei/hifc/hifc_tool.o:hifc_tool.c:(.text+0x1330): first defined here
ld: drivers/net/ethernet/huawei/hinic/hinic_nictool.o: in function `nictool_k_uninit':
hinic_nictool.c:(.text+0x6880): multiple definition of `nictool_k_uninit'; drivers/scsi/huawei/hifc/hifc_tool.o:hifc_tool.c:(.text+0x14d0): first defined here
ld: drivers/net/ethernet/huawei/bma/edma_drv/bma_pci.o:(.bss+0x40): multiple definition of `debug'; arch/x86/entry/entry_64.o:(.entry.text+0x1170): first defined here
ld: drivers/net/ethernet/huawei/bma/cdev_drv/bma_cdev.o:(.bss+0x540): multiple definition of `debug'; arch/x86/entry/entry_64.o:(.entry.text+0x1170): first defined here
ld: drivers/net/ethernet/huawei/bma/veth_drv/veth_hb.o:(.bss+0x300): multiple definition of `debug'; arch/x86/entry/entry_64.o:(.entry.text+0x1170): first defined here
ld: drivers/net/ethernet/huawei/bma/cdev_veth_drv/virtual_cdev_eth_net.o:(.bss+0x40): multiple definition of `debug'; arch/x86/entry/entry_64.o:(.entry.text+0x1170): first defined here

评论 (6)

程子丘 创建了缺陷
openeuler-ci-bot 添加了
 
sig/Kernel
标签
zhangjialin 任务状态待办的 修改为修复中

目前的想的解决方案是先把对应模块内能改成static的符号改成static作为一个commit提交。不能static的符号加上前缀名来解决ld符号冲突的问题,这部分分为多个commit提交。

第一版commit将所有仅在当前文件内使用的符号修改为static,见https://gitee.com/ihopenot/kernel/commit/96205b018fa25d75901b09b55533ffb480dfcc5f

zhoujiadong 通过openeuler/kernel Pull Request !675任务状态修复中 修改为已完成
zhangjialin 添加了
 
issue_resolved
标签

It seems this issue is not fully resolved. The compilation of openEuler-22.03-LTS-SP2 still encountered some errors.

Even I revised some variables as static, it still reports the following errors. @YangYingliang @zhangchangzhong @zhangjialin

ld: drivers/net/ethernet/huawei/hinic3/hw/hinic3_hwdev.o: in function `set_slave_host_enable':
(.text+0x2860): multiple definition of `set_slave_host_enable'; drivers/net/ethernet/huawei/hinic/hinic_multi_host_mgmt.o:(.text+0x600): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hw/hinic3_lld.o:(.bss+0xc0): multiple definition of `g_uld_mutex'; drivers/net/ethernet/3snic/sssnic/hw/sss_pci_global.o:(.bss+0x40): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hw/hinic3_lld.o:(.bss+0x180): multiple definition of `g_uld_info'; drivers/net/ethernet/huawei/hinic/hinic_lld.o:(.bss+0x2e0): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hw/hinic3_dev_mgmt.o: in function `lld_dev_hold':
(.text+0x4a0): multiple definition of `lld_dev_hold'; drivers/scsi/huawei/hifc/hifc_lld.o:hifc_lld.c:(.text+0x540): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hw/hinic3_dev_mgmt.o: in function `lld_dev_put':
(.text+0x500): multiple definition of `lld_dev_put'; drivers/scsi/huawei/hifc/hifc_lld.o:hifc_lld.c:(.text+0x640): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hw/hinic3_hw_mt.o: in function `send_to_sm':
hinic3_hw_mt.c:(.text+0x16e0): multiple definition of `send_to_sm'; drivers/scsi/huawei/hifc/hifc_tool_hw.o:hifc_tool_hw.c:(.text+0x1380): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hw/hinic3_nictool.o:(.data+0x0): multiple definition of `hw_driv_module_cmd_handle'; drivers/net/ethernet/huawei/hinic/hinic_nictool.o:(.data+0x0): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hw/hinic3_nictool.o:(.bss+0x500): multiple definition of `g_card_node_array'; drivers/scsi/huawei/hifc/hifc_dbgtool_knl.o:(.bss+0x8e0): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hw/ossl_knl_linux.o: in function `add_to_timer':
ossl_knl_linux.c:(.text+0x260): multiple definition of `add_to_timer'; drivers/scsi/huawei/hifc/hifc_hwdev.o:hifc_hwdev.c:(.text+0x6200): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hw/ossl_knl_linux.o: in function `delete_timer':
ossl_knl_linux.c:(.text+0x2c0): multiple definition of `delete_timer'; drivers/scsi/huawei/hifc/hifc_hwdev.o:hifc_hwdev.c:(.text+0x6240): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hinic3_main.o:(.data+0x260): multiple definition of `rx_buff'; drivers/net/ethernet/huawei/hinic/hinic_main.o:(.data+0x360): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hinic3_main.o:(.data+0x80): multiple definition of `g_nic_uld_info'; drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.o:(.data+0x80): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hinic3_main.o: in function `get_nic_uld_info':
(.text+0x1240): multiple definition of `get_nic_uld_info'; drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.o:sss_nic_main.c:(.text+0xc40): first defined here
ld: drivers/net/ethernet/huawei/hinic3/hinic3_dbg.o: in function `nic_ioctl':
hinic3_dbg.c:(.text+0x2e80): multiple definition of `nic_ioctl'; drivers/net/ethernet/huawei/hinic/hinic_nictool.o:hinic_nictool.c:(.text+0x60c0): first defined here

好的,我找对应责任人再确认一下

zhangjialin 任务状态已完成 修改为修复中

我可以帮忙提交PR修复,但是我之前发送到openeuler kernel 邮件列表中的邮件并没有显示出来,也没有转换为PR。发送邮件为dzm91@hust.edu.cn

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(5)
5329419 openeuler ci bot 1632792936 5658268 chengziqiu 1689072958
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助

344bd9b3 5694891 D2dac590 5694891