pub fn parse_nano_core(
    namespace: &Arc<CrateNamespace>,
    text_pages: MappedPages,
    rodata_pages: MappedPages,
    data_pages: MappedPages,
    verbose_log: bool
) -> Result<NanoCoreItems, (&'static str, NoDrop<[Arc<Mutex<MappedPages>>; 3]>)>
Expand description

Parses and/or deserializes the file containing details about the already loaded (and currently running) nano_core code.

Basically, just searches for global (public) symbols, which are added to the system map and the crate metadata. We consider both GLOBAL and WEAK symbols to be global public symbols; this is necessary because symbols that are compiler builtins, such as memset, memcpy, etc, are symbols with weak linkage in newer versions of Rust (2021 and later).

Return

  • If successful, this returns the set of important NanoCoreItems.
  • If an error occurs, the returned Result::Err contains the passed-in text_pages, rodata_pages, and data_pages, wrapped in [NoDrop] in order to avoid prematurely/accidentally dropping them, which would cause endless exceptions.