在SPARC结构的C运行时环境中分配的静态函数名在哪里?

在SPARC结构的C运行时环境中分配的静态函数名在哪里?,c,assembly,sparc,C,Assembly,Sparc,假设此C程序在SPARC结构上运行。 我认为普通函数的名称是在.text中分配的,而静态函数的名称是在BSS中分配的?对吗? 例如,这是一个C静态函数 static void fubar( int b ) { static int c = 7; void (*d) (int) = fubar; } 这个fubar存储在哪里?BSS都是零。您不在那里存储函数。零初始化的静态变量可能会出现在那里。根本不需要存储名称。如果去掉了调试符号,就不需要存储名称。函数名仅在编译时对导出的函数

假设此C程序在SPARC结构上运行。 我认为普通函数的名称是在.text中分配的,而静态函数的名称是在BSS中分配的?对吗? 例如,这是一个C静态函数

static void fubar( int b )
{
    static int c = 7;
    void (*d) (int) = fubar;
}

这个
fubar
存储在哪里?

BSS都是零。您不在那里存储函数。零初始化的静态变量可能会出现在那里。根本不需要存储名称。如果去掉了调试符号,就不需要存储名称。函数名仅在编译时对导出的函数和调试目的起作用(并且该名称对于调试不是严格必需的;具有源代码访问权限的调试器可以在源文件中查找);静态函数的名称在编译完成时就没有任何编程意义。请在问题中提出问题,而不仅仅是标题。问题不应以“和”开头。“名称存储在.text中”。不,不是。文本部分中没有函数名-静态或其他。fubar的代码进入
.text
。名称
fubar
未存储在任何位置(请参见上面的注释)。变量
d
是堆栈上的本地变量(除非优化到寄存器或完全省略)。BSS为全零。您不在那里存储函数。零初始化的静态变量可能会出现在那里。根本不需要存储名称。如果去掉了调试符号,就不需要存储名称。函数名仅在编译时对导出的函数和调试目的起作用(并且该名称对于调试不是严格必需的;具有源代码访问权限的调试器可以在源文件中查找);静态函数的名称在编译完成时就没有任何编程意义。请在问题中提出问题,而不仅仅是标题。问题不应以“和”开头。“名称存储在.text中”。不,不是。文本部分中没有函数名-静态或其他。fubar的代码进入
.text
。名称
fubar
未存储在任何位置(请参见上面的注释)。变量
d
是堆栈上的本地变量(除非优化为寄存器或完全省略)。