内核代码的“__PCPU_ATTRS”中的"section"是什么?

What is "section" in "__PCPU_ATTRS" of kernel code?

我正在研究Linux内核中的代码。特别是 Per-CPU variables.

我对 following part 中的 section 有疑问。

#define __PCPU_ATTRS(sec)                       \
    __percpu __attribute__((section(PER_CPU_BASE_SECTION sec))) \
    PER_CPU_ATTRIBUTES

通常,我使用http://elixir.free-electrons.com/来查找变量定义。但有时很难找到真品。

在这种情况下,section here是什么?

在这种特殊情况下,section 是一个可变属性。它是特定于编译器的构造,而不是要在站点上查找的符号名称。

粗略地说,它只是允许一个人选择将对象放置在哪个确切的部分。即,通常编译器 (gcc) 将生成的对象放在程序的 databss 部分,但是 属性 section 将帮助您自定义它。

可以在GCC documentation中找到更全面的解释。