use crate::ByteRepr;
pub mod abi;
mod defs;
mod dynamic;
mod ehdr;
mod hash;
mod note;
mod phdr;
mod shdr;
mod symbol;
#[cfg(feature = "version")]
pub(crate) mod version;
pub mod write;
pub(crate) use defs::*;
pub(crate) use dynamic::{ElfDynamic, ElfDynamicHashTab, LifecycleSpec, parse_dynamic_entries};
#[cfg(feature = "object")]
pub(crate) use hash::SymbolHash;
pub(crate) use phdr::ElfPhdrs;
pub(crate) use symbol::ElfStringTable;
pub(crate) use symbol::SymbolInfo;
pub use defs::{
Elf32Layout, Elf32Sym, Elf64Layout, ElfClass, ElfDataEncoding, ElfDynamicTag, ElfFileType,
ElfLayout, ElfMachine, ElfProgramFlags, ElfProgramType, ElfRel, ElfRelEntry, ElfRelType,
ElfRela, ElfRelocationType, ElfRelr, ElfSectionFlags, ElfSectionId, ElfSectionIndex,
ElfSectionType, ElfSymbol, ElfSymbolBind, ElfSymbolType, Lifecycle, NativeElfLayout,
};
pub use dynamic::ElfDyn;
pub use ehdr::ElfHeader;
pub use hash::HashTable;
pub use note::{ElfNhdr, ElfNote, ElfNotes};
pub use phdr::ElfPhdr;
pub use shdr::ElfShdr;
pub use symbol::{SymbolEntry, SymbolLookup, SymbolTable, SymbolTableView};
unsafe impl ByteRepr for defs::ElfEhdr {}
unsafe impl<L: defs::ElfLayout> ByteRepr for dynamic::ElfDyn<L> {}
unsafe impl ByteRepr for note::ElfNhdr {}
unsafe impl<L: defs::ElfLayout> ByteRepr for phdr::ElfPhdr<L> {}
unsafe impl<L: defs::ElfLayout> ByteRepr for shdr::ElfShdr<L> {}
unsafe impl<L: defs::ElfLayout> ByteRepr for defs::ElfSymbol<L> {}
unsafe impl<L: defs::ElfLayout> ByteRepr for defs::ElfRelr<L> {}
unsafe impl<L: defs::ElfLayout> ByteRepr for defs::ElfRela<L> {}
unsafe impl<L: defs::ElfLayout> ByteRepr for defs::ElfRel<L> {}