在vmlinux中添加一个section
最近需要做一些实验,需要在编译出来的linux中新添加一个section, 我在x86_64平台下做的, 具体做法如下
首先呢, 在arch/x86/kernel/vmlinux.lds.S里面, 添加这样一段, 我在.bss之前添加的,当然应该在哪里都无所谓
最近需要做一些实验,需要在编译出来的linux中新添加一个section, 我在x86_64平台下做的, 具体做法如下
首先呢, 在arch/x86/kernel/vmlinux.lds.S里面, 添加这样一段, 我在.bss之前添加的,当然应该在哪里都无所谓
#if defined(CONFIG_X86_64) && defined(CONFIG_NKVMMEM)
. = ALIGN(PAGE_SIZE);
.nkvmmem : AT(ADDR(.nkvmmem) - LOAD_OFFSET) {
__nkvmmem_start = .;
nkvmpages = .;
. = . + 4194304;
*(NKVMMEM)
. = ALIGN(PAGE_SIZE);
__nkvmmem_end = .;
}
#endif
这里,我把这个section的名字叫.nkvmmem, 那么下面那个没有.的nkvmmem是啥呢,是在代码里面的声明, 这样编译器就会把有这个声明的变量放到.nkvmmem段中而不是到.data或者.bss或者.rodata段。
最终编译出来的文件查看一下其section,发现第58个section就是。nkvmmem section, 添加成功
[57] .data_nosave PROGBITS ffffffff820