llvm-native-core 0.1.13

LLVM-native core semantic engine — IR, CodeGen, X86 MC, Clang frontend pipeline
//! ELF object file module for llvm-native.
//!
//! Clean-room reimplementation from the published ELF specification
//! (System V gABI, AMD64 supplement, ELF-64 Object File Format).
//!
//! ## Sub-modules
//!
//! - `elf_types` — constants, structs, and helper functions for ELF types.
//! - `elf_symbols` — symbol table construction and serialization.
//! - `elf_writer` — ELF file writer/emitter (ELF32/ELF64).
//! - `elf_reader` — ELF file reader/parser (ELF32/ELF64).
//! - `elf_relocations` — relocation type definitions and application logic.

pub mod elf_deep_x86;
pub mod elf_reader;
pub mod elf_relocations;
pub mod elf_symbols;
pub mod elf_types;
pub mod elf_writer;

pub use elf_reader::{
    read_i32, read_i64, read_u16, read_u32, read_u64, ElfDynamicInfo, ElfHeaderInfo, ElfNoteInfo,
    ElfReader, ElfRelocInfo, ElfSectionInfo, ElfSymbolInfo,
};
pub use elf_relocations::{
    ElfRelocationHandler, R_AARCH64_ABS32, R_AARCH64_ABS64, R_AARCH64_CALL26, R_AARCH64_JUMP26,
    R_AARCH64_NONE, R_ARM_ABS32, R_ARM_CALL, R_ARM_NONE, R_RISCV_32, R_RISCV_64, R_RISCV_BRANCH,
    R_RISCV_CALL, R_RISCV_JAL, R_RISCV_NONE, R_X86_64_32, R_X86_64_32S, R_X86_64_64, R_X86_64_NONE,
    R_X86_64_PC32, R_X86_64_PC8,
};
pub use elf_symbols::{ElfSymbolEntry, ElfSymbolTable, ElfSymbolVersion};
pub use elf_types::{
    // Name-lookup functions
    binding_to_str,
    dynamic_tag_to_str,
    // Helper functions
    elf_r_info,
    elf_r_info32,
    elf_r_sym,
    elf_r_sym32,
    elf_r_type,
    elf_r_type32,
    machine_to_str,
    osabi_to_str,
    phdr_type_to_str,
    section_type_to_str,
    st_bind,
    st_info,
    st_other,
    st_type,
    st_visibility,
    sym_type_to_str,
    visibility_to_str,
    // Structs
    Elf32Dyn,
    Elf32Ehdr,
    Elf32Phdr,
    Elf32Rel,
    Elf32Rela,
    Elf32Shdr,
    Elf32Sym,
    Elf64Dyn,
    Elf64Ehdr,
    Elf64Phdr,
    Elf64Rel,
    Elf64Rela,
    Elf64Shdr,
    Elf64Sym,
    // ELF class/endian
    ElfClass,
    ElfEndian,
    ElfMachine,
    ElfNhdr,
    ElfOsAbi,
    // ELF magic
    ELF_MAGIC,
    // Well-known section name constants
    SECTION_NAME_BSS,
    SECTION_NAME_DATA,
    SECTION_NAME_RODATA,
    SECTION_NAME_SHSTRTAB,
    SECTION_NAME_STRTAB,
    SECTION_NAME_SYMTAB,
    SECTION_NAME_TEXT,
};
pub use elf_writer::{ElfNote, ElfPhdrInfo, ElfRelocation, ElfSection, ElfWriter};