[][src]Struct object::write::Object

pub struct Object {
    pub flags: FileFlags,
    pub mangling: Mangling,
    // some fields omitted
}

A writable object file.

Fields

flags: FileFlags

File flags that are specific to each file format.

mangling: Mangling

The symbol name mangling scheme.

Implementations

impl Object[src]

pub fn new(
    format: BinaryFormat,
    architecture: Architecture,
    endian: Endianness
) -> Object
[src]

Create an empty object file.

pub fn format(&self) -> BinaryFormat[src]

Return the file format.

pub fn architecture(&self) -> Architecture[src]

Return the architecture.

pub fn mangling(&self) -> Mangling[src]

Return the current mangling setting.

pub fn set_mangling(&mut self, mangling: Mangling)[src]

Specify the mangling setting.

pub fn segment_name(&self, segment: StandardSegment) -> &'static [u8][src]

Return the name for a standard segment.

This will vary based on the file format.

pub fn section(&self, section: SectionId) -> &Section[src]

Get the section with the given SectionId.

pub fn section_mut(&mut self, section: SectionId) -> &mut Section[src]

Mutably get the section with the given SectionId.

pub fn append_section_data(
    &mut self,
    section: SectionId,
    data: &[u8],
    align: u64
) -> u64
[src]

Append data to an existing section. Returns the section offset of the data.

pub fn append_section_bss(
    &mut self,
    section: SectionId,
    size: u64,
    align: u64
) -> u64
[src]

Append zero-initialized data to an existing section. Returns the section offset of the data.

pub fn section_id(&mut self, section: StandardSection) -> SectionId[src]

Return the SectionId of a standard section.

If the section doesn't already exist then it is created.

pub fn add_section(
    &mut self,
    segment: Vec<u8>,
    name: Vec<u8>,
    kind: SectionKind
) -> SectionId
[src]

Add a new section and return its SectionId.

This also creates a section symbol.

pub fn add_subsection(
    &mut self,
    section: StandardSection,
    name: &[u8],
    data: &[u8],
    align: u64
) -> (SectionId, u64)
[src]

Add a subsection. Returns the SectionId and section offset of the data.

pub fn comdat(&self, comdat: ComdatId) -> &Comdat[src]

Get the COMDAT section group with the given ComdatId.

pub fn comdat_mut(&mut self, comdat: ComdatId) -> &mut Comdat[src]

Mutably get the COMDAT section group with the given ComdatId.

pub fn add_comdat(&mut self, comdat: Comdat) -> ComdatId[src]

Add a new COMDAT section group and return its ComdatId.

pub fn symbol_id(&self, name: &[u8]) -> Option<SymbolId>[src]

Get the SymbolId of the symbol with the given name.

pub fn symbol(&self, symbol: SymbolId) -> &Symbol[src]

Get the symbol with the given SymbolId.

pub fn symbol_mut(&mut self, symbol: SymbolId) -> &mut Symbol[src]

Mutably get the symbol with the given SymbolId.

pub fn add_symbol(&mut self, symbol: Symbol) -> SymbolId[src]

Add a new symbol and return its SymbolId.

pub fn has_uninitialized_tls(&self) -> bool[src]

Return true if the file format supports StandardSection::UninitializedTls.

pub fn has_common(&self) -> bool[src]

Return true if the file format supports StandardSection::Common.

pub fn add_common_symbol(
    &mut self,
    symbol: Symbol,
    size: u64,
    align: u64
) -> SymbolId
[src]

Add a new common symbol and return its SymbolId.

For Mach-O, this appends the symbol to the __common section.

pub fn add_file_symbol(&mut self, name: Vec<u8>) -> SymbolId[src]

Add a new file symbol and return its SymbolId.

pub fn section_symbol(&mut self, section_id: SectionId) -> SymbolId[src]

Get the symbol for a section.

pub fn add_symbol_data(
    &mut self,
    symbol_id: SymbolId,
    section: SectionId,
    data: &[u8],
    align: u64
) -> u64
[src]

Append data to an existing section, and update a symbol to refer to it.

For Mach-O, this also creates a __thread_vars entry for TLS symbols, and the symbol will indirectly point to the added data via the __thread_vars entry.

Returns the section offset of the data.

pub fn add_symbol_bss(
    &mut self,
    symbol_id: SymbolId,
    section: SectionId,
    size: u64,
    align: u64
) -> u64
[src]

Append zero-initialized data to an existing section, and update a symbol to refer to it.

For Mach-O, this also creates a __thread_vars entry for TLS symbols, and the symbol will indirectly point to the added data via the __thread_vars entry.

Returns the section offset of the data.

pub fn set_symbol_data(
    &mut self,
    symbol_id: SymbolId,
    section: SectionId,
    offset: u64,
    size: u64
)
[src]

Update a symbol to refer to the given data within a section.

For Mach-O, this also creates a __thread_vars entry for TLS symbols, and the symbol will indirectly point to the data via the __thread_vars entry.

pub fn symbol_section_and_offset(
    &mut self,
    symbol_id: SymbolId
) -> Option<(SymbolId, u64)>
[src]

Convert a symbol to a section symbol and offset.

Returns None if the symbol does not have a section.

pub fn add_relocation(
    &mut self,
    section: SectionId,
    relocation: Relocation
) -> Result<()>
[src]

Add a relocation to a section.

Relocations must only be added after the referenced symbols have been added and defined (if applicable).

pub fn write(&self) -> Result<Vec<u8>>[src]

Write the object to a Vec.

pub fn emit(&self, buffer: &mut dyn WritableBuffer) -> Result<()>[src]

Write the object to a WritableBuffer.

Trait Implementations

impl Debug for Object[src]

Auto Trait Implementations

impl RefUnwindSafe for Object

impl Send for Object

impl Sync for Object

impl Unpin for Object

impl UnwindSafe for Object

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.