/// the raw structures of ELF section header/data.
mod raw;
pub use raw::*;

mod flags {
    use crate::Elf64Xword;

    /// indicates the section is writable.
    pub const ELF_SECTION_HEADER_FLAG_WRITE: Elf64Xword = 1 << 0;
    /// indicates the section occupies memory during execution.
    pub const ELF_SECTION_HEADER_FLAG_ALLOC: Elf64Xword = 1 << 1;
    /// indicates the section is executable.
    pub const ELF_SECTION_HEADER_FLAG_EXECINSTR: Elf64Xword = 1 << 2;
    /// indicates the section might be merged.
    pub const ELF_SECTION_HEADER_FLAG_MERGE: Elf64Xword = 1 << 4;
    /// indicates the section contains null terminated strings.
    pub const ELF_SECTION_HEADER_FLAG_STRINGS: Elf64Xword = 1 << 5;
    /// indicates the sh_info of section contains SHT index.
    pub const ELF_SECTION_HEADER_FLAG_INFO_LINK: Elf64Xword = 1 << 6;
    /// indicates the section preserves order after combining at linking.
    pub const ELF_SECTION_HEADER_FLAG_LINK_ORDER: Elf64Xword = 1 << 7;
    /// indicates the section is member of a group.
    pub const ELF_SECTION_HEADER_FLAG_GROUP: Elf64Xword = 1 << 9;
    /// indicates the section holds thread-local data.
    pub const ELF_SECTION_HEADER_FLAG_TLS: Elf64Xword = 1 << 10;
    /// indicates the section holds compressed data.
    pub const ELF_SECTION_HEADER_FLAG_COMPRESSED: Elf64Xword = 1 << 11;
}
pub use flags::*;
