Linux内核代码里的GNU C扩展

#define __init __attibute__ ((__section__ (“. Init.text”)))

__attribute__为内核使用的GNU C扩展,这就意味着能够编译内核的唯一编译器是GNU C

__section也是GNU C的一个属性。

编译器将函数放在.text段,变量放在.data段或者.bss段。

此部分与可执行文件相关。可执行文件由荷娜连接在一起的对象文件组成。对象文件包含许多段,如文本/数据/init数据/bass等。这些对象文件都是由于一个成为连接器脚本的文件链接并装入。此脚本将输入文件的个各段映射到输出文件中。详细见vmlinux.lds文件里的initcall.init部分。


GNU C的这些拓展对代码优化/目标代码布局,安全检查等方便提供了很强的支持。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容