pub struct SectionTable<'data, Elf: FileHeader, R = &'data [u8]> where
R: ReadRef<'data>, { /* private fields */ }
Expand description
The table of section headers in an ELF file.
Also includes the string table used for the section names.
Implementations
Create a new section table.
Iterate over the section headers.
Return the section header at the given index.
Return the section header with the given name.
Ignores sections with invalid names.
pub fn section_name(
&self,
endian: Elf::Endian,
section: &'data Elf::SectionHeader
) -> Result<&'data [u8]>
pub fn section_name(
&self,
endian: Elf::Endian,
section: &'data Elf::SectionHeader
) -> Result<&'data [u8]>
Return the section name for the given section header.
pub fn strings(
&self,
endian: Elf::Endian,
data: R,
index: SectionIndex
) -> Result<StringTable<'data, R>>
pub fn strings(
&self,
endian: Elf::Endian,
data: R,
index: SectionIndex
) -> Result<StringTable<'data, R>>
Return the string table at the given section index.
Returns an error if the section is not a string table.
Return the symbol table of the given section type.
Returns an empty symbol table if the symbol table does not exist.
pub fn symbol_table_by_index(
&self,
endian: Elf::Endian,
data: R,
index: SectionIndex
) -> Result<SymbolTable<'data, Elf, R>>
pub fn symbol_table_by_index(
&self,
endian: Elf::Endian,
data: R,
index: SectionIndex
) -> Result<SymbolTable<'data, Elf, R>>
Return the symbol table at the given section index.
Returns an error if the section is not a symbol table.
pub fn relocation_sections(
&self,
endian: Elf::Endian,
symbol_section: SectionIndex
) -> Result<RelocationSections>
pub fn relocation_sections(
&self,
endian: Elf::Endian,
symbol_section: SectionIndex
) -> Result<RelocationSections>
Create a mapping from section index to associated relocation sections.
Return the contents of a dynamic section.
Also returns the linked string table index.
Returns Ok(None)
if there is no SHT_DYNAMIC
section.
Returns Err
for invalid values.
pub fn hash_header(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<&'data HashHeader<Elf::Endian>>>
pub fn hash_header(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<&'data HashHeader<Elf::Endian>>>
Return the header of a SysV hash section.
Returns Ok(None)
if there is no SysV GNU hash section.
Returns Err
for invalid values.
Return the contents of a SysV hash section.
Also returns the linked symbol table index.
Returns Ok(None)
if there is no SysV hash section.
Returns Err
for invalid values.
pub fn gnu_hash_header(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<&'data GnuHashHeader<Elf::Endian>>>
pub fn gnu_hash_header(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<&'data GnuHashHeader<Elf::Endian>>>
Return the header of a GNU hash section.
Returns Ok(None)
if there is no GNU hash section.
Returns Err
for invalid values.
pub fn gnu_hash(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<(GnuHashTable<'data, Elf>, SectionIndex)>>
pub fn gnu_hash(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<(GnuHashTable<'data, Elf>, SectionIndex)>>
Return the contents of a GNU hash section.
Also returns the linked symbol table index.
Returns Ok(None)
if there is no GNU hash section.
Returns Err
for invalid values.
Return the contents of a SHT_GNU_VERSYM
section.
Also returns the linked symbol table index.
Returns Ok(None)
if there is no SHT_GNU_VERSYM
section.
Returns Err
for invalid values.
pub fn gnu_verdef(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<(VerdefIterator<'data, Elf>, SectionIndex)>>
pub fn gnu_verdef(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<(VerdefIterator<'data, Elf>, SectionIndex)>>
Return the contents of a SHT_GNU_VERDEF
section.
Also returns the linked string table index.
Returns Ok(None)
if there is no SHT_GNU_VERDEF
section.
Returns Err
for invalid values.
pub fn gnu_verneed(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<(VerneedIterator<'data, Elf>, SectionIndex)>>
pub fn gnu_verneed(
&self,
endian: Elf::Endian,
data: R
) -> Result<Option<(VerneedIterator<'data, Elf>, SectionIndex)>>
Return the contents of a SHT_GNU_VERNEED
section.
Also returns the linked string table index.
Returns Ok(None)
if there is no SHT_GNU_VERNEED
section.
Returns Err
for invalid values.
Trait Implementations
impl<'data, Elf: Clone + FileHeader, R: Clone> Clone for SectionTable<'data, Elf, R> where
R: ReadRef<'data>,
Elf::SectionHeader: Clone,
impl<'data, Elf: Clone + FileHeader, R: Clone> Clone for SectionTable<'data, Elf, R> where
R: ReadRef<'data>,
Elf::SectionHeader: Clone,
impl<'data, Elf: Debug + FileHeader, R: Debug> Debug for SectionTable<'data, Elf, R> where
R: ReadRef<'data>,
Elf::SectionHeader: Debug,
impl<'data, Elf: Debug + FileHeader, R: Debug> Debug for SectionTable<'data, Elf, R> where
R: ReadRef<'data>,
Elf::SectionHeader: Debug,
impl<'data, Elf: Default + FileHeader, R: Default> Default for SectionTable<'data, Elf, R> where
R: ReadRef<'data>,
Elf::SectionHeader: Default,
impl<'data, Elf: Default + FileHeader, R: Default> Default for SectionTable<'data, Elf, R> where
R: ReadRef<'data>,
Elf::SectionHeader: Default,
Returns the “default value” for a type. Read more
impl<'data, Elf: Copy + FileHeader, R: Copy> Copy for SectionTable<'data, Elf, R> where
R: ReadRef<'data>,
Elf::SectionHeader: Copy,
Auto Trait Implementations
impl<'data, Elf, R> RefUnwindSafe for SectionTable<'data, Elf, R> where
R: RefUnwindSafe,
<Elf as FileHeader>::SectionHeader: RefUnwindSafe,
impl<'data, Elf, R> Send for SectionTable<'data, Elf, R> where
R: Send,
<Elf as FileHeader>::SectionHeader: Sync,
impl<'data, Elf, R> Sync for SectionTable<'data, Elf, R> where
R: Sync,
<Elf as FileHeader>::SectionHeader: Sync,
impl<'data, Elf, R> Unpin for SectionTable<'data, Elf, R> where
R: Unpin,
impl<'data, Elf, R> UnwindSafe for SectionTable<'data, Elf, R> where
R: UnwindSafe,
<Elf as FileHeader>::SectionHeader: RefUnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more