underhill_crash/
elf.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! Definitions for elf core dump handling.
5
6use zerocopy::FromBytes;
7use zerocopy::Immutable;
8use zerocopy::IntoBytes;
9use zerocopy::KnownLayout;
10
11/// ELF header
12#[derive(IntoBytes, Immutable, KnownLayout, FromBytes, Debug)]
13#[repr(C)]
14pub struct Elf64_Ehdr {
15    pub e_ident: [u8; 16],
16    pub e_type: u16,
17    pub e_machine: u16,
18    pub e_version: u32,
19    pub e_entry: u64,
20    pub e_phoff: u64,
21    pub e_shoff: u64,
22    pub e_flags: u32,
23    pub e_ehsize: u16,
24    pub e_phentsize: u16,
25    pub e_phnum: u16,
26    pub e_shentsize: u16,
27    pub e_shnum: u16,
28    pub e_shstrndx: u16,
29}
30
31/// Program header
32#[derive(IntoBytes, Immutable, KnownLayout, FromBytes, Copy, Clone, Debug)]
33#[repr(C)]
34pub struct Elf64_Phdr {
35    pub p_type: u32,
36    pub p_flags: u32,
37    pub p_offset: u64,
38    pub p_vaddr: u64,
39    pub p_paddr: u64,
40    pub p_filesz: u64,
41    pub p_memsz: u64,
42    pub p_align: u64,
43}
44
45/// ELF note header
46#[derive(IntoBytes, Immutable, KnownLayout)]
47#[repr(C)]
48pub struct Elf64_Nhdr {
49    pub namesz: u32,
50    pub descsz: u32,
51    pub ntype: u32,
52}
53
54/// Auxiliary information
55pub const PT_NOTE: u32 = 4;