Linux kernel 特定部分的特殊功能

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) {

我想把一些函数放在特定的部分

我补充说 包括/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)
{
...
...
}

但编译器显示:

/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