Kernel之MODVERSION
  gcIluVlGdpHJ 2023年11月15日 101 0


关于modversion,内核文档官方解释(Documentation/kbuild/modules.rst):

    6 Module Versioning

    Module versioning is enabled by the CONFIG_MODVERSIONS tag, and is used
    as a simple ABI consistency check. A CRC value of the full prototype
    for an exported symbol is created. When a module is loaded/used, the
    CRC values contained in the kernel are compared with similar values in
    the module; if they are not equal, the kernel refuses to load the
    module.

    Module.symvers contains a list of all exported symbols from a kernel
    build.

6.1 Symbols From the Kernel (vmlinux + modules)
 During a kernel build, a file named Module.symvers will be
 generated. Module.symvers contains all exported symbols from
 the kernel and compiled modules. For each symbol, the
 corresponding CRC value is also stored.

 The syntax of the Module.symvers file is::

 <CRC>       <Symbol>         <Module>                         <Export Type>     <Namespace>

 0xe1cc2a05  usb_stor_suspend drivers/usb/storage/usb-storage  EXPORT_SYMBOL_GPL USB_STORAGE

 The fields are separated by tabs and values may be empty (e.g.
 if no namespace is defined for an exported symbol).

 For a kernel build without CONFIG_MODVERSIONS enabled, the CRC
 would read 0x00000000.

 Module.symvers serves two purposes:

 1) It lists all exported symbols from vmlinux and all modules.
 2) It lists the CRC if CONFIG_MODVERSIONS is enabled.

作者: Shell

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  tqf4faUYHHCA   2023年12月23日   94   0   0 sedpythonPythonsed
gcIluVlGdpHJ