pvh 0.1.0

Xen's x86/HVM direct boot ABI (PVH).
Documentation
//! ELF definitions.
//!
//! For details, see [elf(5)] and [uapi/linux/elf.h].
//!
//! [elf(5)]: https://www.man7.org/linux/man-pages/man5/elf.5.html
//! [uapi/linux/elf.h]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/elf.h?h=v6.19

/// An ELF note.
#[derive(Hash, PartialEq, Eq, Clone, Copy, Debug)]
#[repr(C, packed(4))]
pub struct ElfNote<N, D> {
    header: ElfNoteHeader,
    name: N,
    desc: D,
}

impl<N, D> ElfNote<N, D> {
    #[must_use]
    pub const fn new(ty: u32, name: N, desc: D) -> Self {
        Self {
            header: ElfNoteHeader {
                namesz: size_of::<N>() as u32,
                descsz: size_of::<D>() as u32,
                ty,
            },
            name,
            desc,
        }
    }
}

/// Note header in a `PT_NOTE` section.
#[derive(Hash, PartialEq, Eq, Clone, Copy, Debug)]
#[repr(C)]
struct ElfNoteHeader {
    /// Name size.
    namesz: u32,

    /// Content size.
    descsz: u32,

    /// Content type.
    ty: u32,
}