gpt4 book ai didi

linux-kernel - 内核线程转储中的 "isra"是什么

转载 作者:行者123 更新时间:2023-12-04 03:09:19 27 4
gpt4 key购买 nike

Linux 内核调用堆栈转储通常包含以“.isra.NNN”结尾的函数名,其中 NNN 是一些数字。例如,参见 herehere .

这是什么意思,这个数字是什么意思?

最佳答案

isra is the suffix added to the function name when gcc option -fipa-sra compiler optimization being carried out.



来自 gcc manual :
-fipa-sra

Perform interprocedural scalar replacement of aggregates, removal of unused parameters and replacement of parameters passed by reference by parameters passed by value.

Enabled at levels -O2, -O3 and -Os.



在此选项下优化的所有功能都有 isra附加到他们的名字。我挖了 gcc代码并找出附加字符串的函数。
tree
clone_function_name (tree decl, const char *suffix)
{
tree name = DECL_ASSEMBLER_NAME (decl);
size_t len = IDENTIFIER_LENGTH (name);
char *tmp_name, *prefix;

prefix = XALLOCAVEC (char, len + strlen (suffix) + 2);
memcpy (prefix, IDENTIFIER_POINTER (name), len);
strcpy (prefix + len + 1, suffix);
#ifndef NO_DOT_IN_LABEL
prefix[len] = '.';
#elif !defined NO_DOLLAR_IN_LABEL
prefix[len] = '$';
#else
prefix[len] = '_';
#endif
ASM_FORMAT_PRIVATE_NAME (tmp_name, prefix, clone_fn_id_num++);
return get_identifier (tmp_name);
}

在这里,参数 2, const char *suffix , 是 "isra"并注意函数宏底部 ASM_FORMAT_PRIVATE_NAME这需要 clone_fn_id_num++作为它的第三个论点。这是在 "isra" 之后找到的任意数字.顾名思义,这是在此编译器选项下克隆的函数的计数(或者可能是跟踪所有克隆函数的全局计数器)。

想了解更多,搜索 modify_function在文件中 gcc/tree-sra.c依次调用 cgraph_function_versioning()通过 "isra"作为它的最后一个论点。

关于linux-kernel - 内核线程转储中的 "isra"是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18907580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com