c - elf文件中静态变量的名称字段
问题描述
我只是对静态变量的名称字段感到好奇。我有这个代码
int main ()
{
static uint8_t var_1[10] = {1};
static uitn8_t var_2[10] = {0};
return 1;
}
如果我使用readelf -a foo | grep var_2
,我会看到以下内容:
38: 0000601058 10 OBJECT LOCAL DEFAULT 26 var_2.2482
我想知道 .2482 是什么意思,它是变量的某种索引。我也在使用 gcc。谢谢
解决方案
编译器、链接器、目标文件、调试器等利用广为人知的“名称修饰”概念来确保程序中使用的标识符是唯一的并在内部区分它们 - 因为编程语言可能允许在多个标识符中使用相同的名称地方。“名称修饰”并不是真正标准化的,但每个工具都倾向于使用自己的名称修饰方案。
推荐阅读
- angular - 带有 jwt 令牌/cookie 的 SPA + web api
- php - 在 apache2 执行 60 秒后网关超时
- angular - 如何在Angular 5中将参数作为查询字符串传递给httpClient.post?
- ios - 关于正确实现的架构 MVVM 问题
- javascript - 比较两个字符串并匹配它的大小写
- bash - 为什么我们在某些 shell 命令中执行 '< /dev/null'
- php - 在 Yii2 ActiveRecord 中获取 ActiveQuery 而不是数组
- scikit-learn - 如 scikit-learn 的文档中所述,如何在 cv 中使用 TimeSeriesSplit
- php - PHP Web 服务的 json 数组响应
- javascript - 在 HTMLDialogElement.showModal() 上添加 jquery-ui datepicker(绕过伪背景)