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}