c - Linux内核代码中的“.data..init_task”部分是什么?
问题描述
我正在探索 Linux Kernel 代码并遇到了这行代码:
#define __init_task_data __attribute__((__section__(".data..init_task"))).
我知道这样的事情:
int x __attribute__((__section__("section"))) = 10;
是 gcc 的一个属性,它将 x 的符号放入已编译过程映像的“部分”部分。但是,当我尝试将“.data..init_task”指定为部分时,我的变量将被放入 .data 部分。这是我的代码:
int apple __attribute__((__section__(".data..init_task"))) = 10;
编译:
gcc test.c
拆解:
objdump -D a.out
我的变量“apple”出现在 .data 部分下,没有部分“.data..init_task”让我很困惑。
解决方案
推荐阅读
- xaml - 在 Xamarin ListView 中呈现 ListViewItem 时出现问题
- docker - 如何修复 Docker sh 入口点中的“权限被拒绝”
- html - 图标不显示在按钮离子上
- java - 如何以编程方式从android应用程序的文件和文件夹中删除世界读/写权限?
- ios - iOS Firestore 可以将 `FieldValue.increment` 用于 Map 值吗?
- javascript - Google Places API 上的 CORS 错误,但 Reddit 上没有
- python - Pyperclip 模块在 Android 上失败
- java - 如何知道背包问题(DP实现)中选择了哪个项目?
- vue.js - Parcel vue 调试:如何将 parcel serve 的输出映射到我的源代码?
- java - Spring Batch:如何配置 FlatItemFileReader 来读取压缩的 ND-JSON 文件?