当前位置: 技术问答>linux和unix
想让在c文件中定义的一个函数,出现在.init.text节中怎么做?
来源: 互联网 发布时间:2016-06-03
本文导语: 想让在c文件中定义的一个函数,出现在.init.text节中,我们可以在这个函数前面加上__init ,比如:static int __init hello_init(void)。 我的问题是: 我使用nm vmlinux查看vmlinux文件中的符号,我发现sk_alloc函数出现在.init.text...
想让在c文件中定义的一个函数,出现在.init.text节中,我们可以在这个函数前面加上__init ,比如:static int __init hello_init(void)。
我的问题是:
我使用nm vmlinux查看vmlinux文件中的符号,我发现sk_alloc函数出现在.init.text节中,我打开文件net/core/sock.c文件找到了sk_alloc函数的定义,可是我发现这个函数前面并没有加上__init 啊? 为什么在没加__init的情况下,sk_alloc函数仍然出现在.init.text节中呢? 还有别的方式可以使一个函数出现在.init.text节中吗?
非常感谢!
我的问题是:
我使用nm vmlinux查看vmlinux文件中的符号,我发现sk_alloc函数出现在.init.text节中,我打开文件net/core/sock.c文件找到了sk_alloc函数的定义,可是我发现这个函数前面并没有加上__init 啊? 为什么在没加__init的情况下,sk_alloc函数仍然出现在.init.text节中呢? 还有别的方式可以使一个函数出现在.init.text节中吗?
非常感谢!
|
兄弟,你看错了吧,明明在 .text 段呢 ...
你的是那个版本,我看的是 2.6.29 ...
你的是那个版本,我看的是 2.6.29 ...
|
可以用gcc的扩展特性. __attribute__ ((section (`` sectionname'')))。
可以将任何函数或者任何数据定义在一个指定的section之内。
可以将任何函数或者任何数据定义在一个指定的section之内。