欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

添加自定义的section

程序员文章站 2022-06-03 13:53:58
...

一、编译的程序(o so exe ko等等)都是elf格式进行排列的

elf文件分析情况:https://blog.csdn.net/edonlii/article/details/8779075

二、添加自己的section

#define SECTION_START(_type,_name)			\
static const struct mydyh_desc __mydyh_desc_##_type	\
	__attribute__((used, __section__(".dyh.info.init"))) = {	\
		.nr		= MY_DYH_##_type,		\
		.name	= _name,
		
#define SECTION_END						\
};

怎样才能获取到section里面的数据

extern struct mydyh_desc __dyh_info_begin[], __dyh_info_end[];

这两个变量在链接脚本里面定义

如何寻找链接脚本,每个编译器会自带链接脚本,需要删除lds文件里面的一些说明信息,否则编译会出错

ld --verbose > section.lds

编译代码

gcc section.c -T section.lds -o section

demo程序:https://github.com/dyh-git/section_custom

参考书籍:《程序员的自我修养—链接、装载与库》