libc_core/
elf.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//! This module provides the `libc` types for ELF (Executable and Linkable Format).

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