Linux kernel 特定部分的特殊功能
我想把一些函数放在特定的部分 我补充说 包括/asm generic/vmlinux.lds.h:Linux kernel 特定部分的特殊功能,linux-kernel,Linux Kernel,我想把一些函数放在特定的部分 我补充说 包括/asm generic/vmlinux.lds.h: #定义我的文本\ ALIGN_函数()\ VMLINUX_符号(uu my_text_start)=\ *(.my.text)\ VMLINUX_符号(uu my_text_end)=。; arch/arm/kernel/vmlinux.lds.S: ... 文本 我的课文 附表文本 ... 我的代码: #定义uu我的u属性uu((.my.text)部分) 我的我的我的测试(INTI) {
#定义我的文本\
ALIGN_函数()\
VMLINUX_符号(uu my_text_start)=\
*(.my.text)\
VMLINUX_符号(uu my_text_end)=。;
arch/arm/kernel/vmlinux.lds.S:
...
文本
我的课文
附表文本
...
我的代码:
#定义uu我的u属性uu((.my.text)部分)
我的我的我的测试(INTI)
{
...
...
}
但编译器显示:
/tmp/ccp1mtiA.s:汇编程序消息:
/tmp/ccp1mtiA.s:13:警告:为.my.text设置不正确的节类型
/tmp/ccp1mtiA.s:13:警告:为.my.text设置不正确的节属性
如何修复警告?
我换成
int\u计划我的测试(inti)
警告被忽略了,我想我的部分没有定义好
谢谢您可以使用
部分
属性控制代码的部分(几乎是逐字从中提取):
请注意,某些编译选项最终可能会重新组合部分。谢谢您提供的信息,但我的代码是内置linux内核的,我不知道为什么我的修改会显示警告。可能是因为您没有将该属性添加到原型上?我只是尝试了与您类似的语法,它仍然不起作用:(还有什么是“它不起作用”看起来像?您是否转储了可执行文件的内容并发现代码没有放在节中?或者通过其他方式?从objdump来看,节似乎是正确的,我只是想知道为什么会出现警告。我担心这可能会导致一些潜在问题,并希望修复警告:)不确定为什么,但如果我使用.rel.text,警告就会出现,如果我改为.my,那么define工作得很好。也许.rel在gcc中的意思是
#include <stdio.h>
extern void foobar (void) __attribute__ ((section (.bar.text)));
void foobar()
{
printf("asdf");
}
int main()
{
foobar();
}
sec.exe: file format pei-x86-64
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00001d10 0000000000401000 0000000000401000 00000400 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bar.text 0000001c 0000000000403000 0000000000403000 00002200 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .data 000000a0 0000000000404000 0000000000404000 00002400 2**4
CONTENTS, ALLOC, LOAD, DATA
3 .rdata 00000978 0000000000405000 0000000000405000 00002600 2**4
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .pdata 00000240 0000000000406000 0000000000406000 00003000 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
5 .xdata 0000020c 0000000000407000 0000000000407000 00003400 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
6 .bss 000009b0 0000000000408000 0000000000408000 00000000 2**5
ALLOC
7 .idata 000007c8 0000000000409000 0000000000409000 00003800 2**2
CONTENTS, ALLOC, LOAD, DATA
8 .CRT 00000068 000000000040a000 000000000040a000 00004000 2**3
CONTENTS, ALLOC, LOAD, DATA
9 .tls 00000068 000000000040b000 000000000040b000 00004200 2**5
CONTENTS, ALLOC, LOAD, DATA
10 .debug_aranges 00000050 000000000040c000 000000000040c000 00004400 2**4
CONTENTS, READONLY, DEBUGGING
11 .debug_info 00000df5 000000000040d000 000000000040d000 00004600 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_abbrev 00000087 000000000040e000 000000000040e000 00005400 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_line 00000119 000000000040f000 000000000040f000 00005600 2**0
CONTENTS, READONLY, DEBUGGING
14 .debug_frame 00000048 0000000000410000 0000000000410000 00005800 2**3
CONTENTS, READONLY, DEBUGGING