- 论坛徽章:
- 0
|
编译内核后会产生Module.symvers这个文件,
这个文件里计算了导出函数的CRC值。
在编译驱动模块时, 会调用srcipt/mod/modpost处理导出函数的CRC值,
见XXX.mod.c文件
static const struct modversion_info ____versions[]
18 __used
19 __attribute__((section("__versions"))) = {
20 { 0x79f0350e, "module_layout" },
21 { 0xadf42bd5, "__request_region" },
22 { 0xcc4e9169, "cdev_del" },
23 { 0xdfead558, "kmalloc_caches" },
24 { 0xeabd7227, "cdev_init" },
25 { 0xb279da12, "pv_lock_ops" },
26 { 0x6980fe91, "param_get_int" },
如果驱动中调用的函数的CRC值和内核中CRC值不相等,就会导致模块加载失败。
请问Module.symvers这个文件是怎么产生的?文件中各函数的CRC值是如何计算出来的?
谢谢!!! |
|