MapFile

Struct MapFile 

Source
#[non_exhaustive]
pub struct MapFile { pub segments_list: Vec<Segment>, }

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§segments_list: Vec<Segment>

Implementations§

Source§

impl MapFile

Source

pub fn filter_by_section_type(&self, section_type: &str) -> Self

Source

pub fn get_every_section_except_section_type(&self, section_type: &str) -> Self

Source

pub fn get_every_file_except_section_type(&self, section_type: &str) -> Self

👎Deprecated since 2.8.0: Use get_every_section_except_section_type instead
Source

pub fn find_symbol_by_name(&self, sym_name: &str) -> Option<FoundSymbolInfo<'_>>

Source

pub fn find_symbol_by_vram_or_vrom( &self, address: u64, ) -> Option<FoundSymbolInfo<'_>>

👎Deprecated since 2.7.0: Use find_symbol_by_vram or find_symbol_by_vrom instead.
Source

pub fn find_symbol_by_vram( &self, address: u64, ) -> (Option<FoundSymbolInfo<'_>>, Vec<&Section>)

Source

pub fn find_symbol_by_vrom( &self, address: u64, ) -> (Option<FoundSymbolInfo<'_>>, Vec<&Section>)

Source

pub fn find_lowest_differing_symbol( &self, other_map_file: &Self, ) -> Option<(&Symbol, &Section, Option<&Symbol>)>

Source

pub fn mix_folders(&self) -> Self

Source

pub fn fixup_non_matching_symbols(&self) -> Self

👎Deprecated since 2.8.0: This functionality is perform automatically during parsing now.
Source

pub fn get_progress( &self, path_decomp_settings: Option<&PathDecompSettings<'_, '_>>, aliases: &HashMap<String, String>, ) -> (ProgressStats, HashMap<String, ProgressStats>)

Source

pub fn compare_files_and_symbols<'a>( &'a self, other_map_file: &'a Self, check_other_on_self: bool, ) -> MapsComparisonInfo<'a>

Useful for finding bss reorders

Source

pub fn resolve_partially_linked_files<F>(&self, resolver: F) -> Self
where F: Fn(&Path) -> Option<PathBuf>,

Resolve sections and paths of a mapfile built from partially linked objects.

elf files built by using partially linked files/objects (usually referred to as plf) usually generate mapfiles that have filepaths that point to the partially linked objects instead of the original objects used to build those intermediary objects, making it awkward to work with paths because all symbols will be listed as part as the same single plf.

This function resolves those sections by using a resolver callback that transforms a path to an object/plf into the corresponding mapfile of said partially linked object. This callback should return None if the given path does not correspond to a plf, the pointed mapfile does not exist, etc.

An usual convention for a file extension for partially linked objects is the .plf extension instead of .o.

Source

pub fn to_csv(&self, print_vram: bool, skip_without_symbols: bool) -> String

Source

pub fn to_csv_symbols(&self) -> String

Source

pub fn print_as_csv(&self, print_vram: bool, skip_without_symbols: bool)

Source

pub fn print_symbols_csv(&self)

Source§

impl MapFile

Source

pub fn new_from_map_file(map_path: &Path) -> Self

Creates a new MapFile with the contents from the file pointed by the map_path argument.

The format of the map will be guessed based on its contents.

Currently supported map formats:

  • GNU ld
  • clang ld.lld
  • Metrowerks ld
Source

pub fn new_from_map_str(map_contents: &str) -> Self

Creates a new MapFile by parsing the contents of the map.

The format of the map will be guessed based on its contents.

Currently supported map formats:

  • GNU ld
  • clang ld.lld
  • Metrowerks ld
Source

pub fn new_from_gnu_map_str(map_contents: &str) -> Self

Parses the contents of a GNU ld map.

The map_contents argument must contain the contents of a GNU ld mapfile.

Source

pub fn new_from_lld_map_str(map_contents: &str) -> Self

Parses the contents of a clang ld.lld map.

The map_contents argument must contain the contents of a clang ld.lld mapfile.

Source

pub fn new_from_mw_map_str(map_contents: &str) -> Self

Parses the contents of a Metrowerks ld (mwld) map.

The map_contents argument must contain the contents of a Metrowerks ld mapfile.

Source

pub fn new() -> Self

👎Deprecated since 2.8.0: Use either new_from_map_file or new_from_map_str instead.
Source

pub fn read_map_file(&mut self, map_path: &Path)

👎Deprecated since 2.8.0: Prefer MapFile::new_from_map_file instead

Opens the mapfile pointed by the map_path argument and parses it.

The format of the map will be guessed based on its contents.

Currently supported map formats:

  • GNU ld
  • clang ld.lld
  • Metrowerks ld
Source

pub fn parse_map_contents(&mut self, map_contents: &str)

👎Deprecated since 2.8.0: Prefer MapFile::new_from_map_str instead

Parses the contents of the map.

The map_contents argument must contain the contents of a mapfile.

The format of the map will be guessed based on its contents.

Currently supported mapfile formats:

  • GNU ld
  • clang ld.lld
  • Metrowerks ld
Source§

impl MapFile

Source

pub fn parse_map_contents_gnu(&mut self, map_contents: &str)

👎Deprecated since 2.8.0: Prefer MapFile::new_from_gnu_map_str instead

Parses the contents of a GNU ld map.

The map_contents argument must contain the contents of a GNU ld mapfile.

Source

pub fn parse_map_contents_lld(&mut self, map_contents: &str)

👎Deprecated since 2.8.0: Prefer MapFile::new_from_lld_map_str instead

Parses the contents of a clang ld.lld map.

The map_contents argument must contain the contents of a clang ld.lld mapfile.

Trait Implementations§

Source§

impl Clone for MapFile

Source§

fn clone(&self) -> MapFile

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MapFile

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.