libc_core/elf.rs
1//! This module provides the `libc` types for ELF (Executable and Linkable Format).
2
3/// ELF auxiliary vector (auxv) entry type
4///
5/// MUSL: <https://github.com/bminor/musl/blob/c47ad25ea3b484e10326f933e927c0bc8cded3da/include/elf.h#L1001>
6#[repr(usize)]
7#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
8pub enum AuxType {
9 /// 结束标志
10 Null = 0,
11 /// 被忽略的项
12 Ignore = 1,
13 /// 文件描述符(指向可执行文件),在内核加载器中用
14 ExecFd = 2,
15 /// 程序头表(Program Header Table)在内存中的地址
16 Phdr = 3,
17 /// 每个程序头的大小(以字节为单位)
18 Phent = 4,
19 /// 程序头的数量
20 Phnum = 5,
21 /// 页大小(单位字节),如 4096
22 PageSize = 6,
23 /// 动态链接器的基址(即 ld.so 的加载地址)
24 Base = 7,
25 /// 运行时标志,通常为 0
26 Flags = 8,
27 /// 程序入口点(Entry Point)
28 Entry = 9,
29 /// 如果是非 ELF 二进制(a.out 格式),为 1,否则为 0
30 NotElf = 10,
31 /// 实际用户 ID(UID)
32 UID = 11,
33 /// 有效用户 ID(EUID)
34 EUID = 12,
35 /// 实际组 ID(GID)
36 GID = 13,
37 /// 有效组 ID(EGID)
38 EGID = 14,
39 /// CPU 平台名称的指针(如 "x86_64")
40 Platform = 15,
41 /// 硬件能力位(bitmask),如 SSE/AVX 支持
42 HwCap = 16,
43 /// 每秒的时钟滴答数(用于 `times()` 等函数)
44 ClkTck = 17,
45 /// x86 FPU 控制字(FPUCW)
46 FpuCw = 18,
47 /// D-cache(数据缓存)大小
48 DCacheBSize = 19,
49 /// I-cache(指令缓存)大小
50 ICacheBSize = 20,
51 /// 通用缓存大小
52 UCacheBSize = 21,
53 /// PowerPC 平台专用,被忽略
54 IgnorePPC = 22,
55 /// 是否是安全模式(非 suid/guid),0 = 否,1 = 是
56 Secure = 23,
57 /// 基础平台名称的指针(字符串)
58 BasePlatform = 24,
59 /// 指向随机数种子(stack 上的 16 字节随机值)
60 Random = 25,
61 /// 第二组 HWCAP(arm64/aarch64)
62 HwCap2 = 26,
63 /// 命令行中可执行文件路径的地址(如 "/bin/ls")
64 ExecFn = 31,
65 /// 指向 vsyscall 区域的函数地址(如 `gettimeofday()`)
66 SysInfo = 32,
67 /// 指向 VDSO ELF 映射的起始地址
68 SysInfoEhdr = 33,
69}