microfmt
Zero-allocation C++ formatting for constrained environments
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
microfmt::elf_image_info Struct Reference

Describes a loaded ELF image and the locations of its unwind tables. More...

#include <elf_enumerator.hpp>

Collaboration diagram for microfmt::elf_image_info:
Collaboration graph
[legend]

Public Member Functions

constexpr bool contains (uintptr_t addr) const noexcept
 Reports whether addr falls within the image range.
 
constexpr bool has_exidx () const noexcept
 Reports whether a usable .ARM.exidx section is present.
 
constexpr bool has_debug_frame () const noexcept
 Reports whether a usable DWARF CFI unwind-record table (.debug_frame or .eh_frame, depending on backend) is present.
 

Public Attributes

microfmt::string_view image_name {""}
 Human-readable image/module name.
 
uintptr_t load_base {0}
 Load (base) address of the image in the target address space.
 
uintptr_t image_size {0}
 Total size of the image in bytes.
 
uintptr_t exidx_start {0}
 Start of the .ARM.exidx section.
 
uintptr_t exidx_end {0}
 End of the .ARM.exidx section.
 
uintptr_t debug_frame_start {0}
 Start of the DWARF CFI unwind-record table used by microfmt::dwarf_decoder for stack unwinding. Depending on the enumerator backend this may be a true DWARF .debug_frame section or (as with dl_elf_enumerator_tag, via .eh_frame_hdr/PT_GNU_EH_FRAME) the loaded .eh_frame unwind table; both share the same CIE/FDE record layout, so either is a valid decoder input.
 
uintptr_t debug_frame_end {0}
 End of the DWARF CFI unwind-record table. May be UINTPTR_MAX when the backend can locate the table's start but not its exact size, in which case decoders must rely on a zero-length terminator record or the first unreadable address to stop.
 

Detailed Description

Describes a loaded ELF image and the locations of its unwind tables.

Member Function Documentation

◆ contains()

constexpr bool microfmt::elf_image_info::contains ( uintptr_t  addr) const
inlineconstexprnoexcept

Reports whether addr falls within the image range.

Parameters
addrAddress to test.
Returns
true when load_base <= addr < load_base + image_size.

◆ has_debug_frame()

constexpr bool microfmt::elf_image_info::has_debug_frame ( ) const
inlineconstexprnoexcept

Reports whether a usable DWARF CFI unwind-record table (.debug_frame or .eh_frame, depending on backend) is present.

Returns
true when the section bounds are valid.

◆ has_exidx()

constexpr bool microfmt::elf_image_info::has_exidx ( ) const
inlineconstexprnoexcept

Reports whether a usable .ARM.exidx section is present.

Returns
true when the section bounds are valid.

Member Data Documentation

◆ debug_frame_end

uintptr_t microfmt::elf_image_info::debug_frame_end {0}

End of the DWARF CFI unwind-record table. May be UINTPTR_MAX when the backend can locate the table's start but not its exact size, in which case decoders must rely on a zero-length terminator record or the first unreadable address to stop.

◆ debug_frame_start

uintptr_t microfmt::elf_image_info::debug_frame_start {0}

Start of the DWARF CFI unwind-record table used by microfmt::dwarf_decoder for stack unwinding. Depending on the enumerator backend this may be a true DWARF .debug_frame section or (as with dl_elf_enumerator_tag, via .eh_frame_hdr/PT_GNU_EH_FRAME) the loaded .eh_frame unwind table; both share the same CIE/FDE record layout, so either is a valid decoder input.

◆ exidx_end

uintptr_t microfmt::elf_image_info::exidx_end {0}

End of the .ARM.exidx section.

◆ exidx_start

uintptr_t microfmt::elf_image_info::exidx_start {0}

Start of the .ARM.exidx section.

◆ image_name

microfmt::string_view microfmt::elf_image_info::image_name {""}

Human-readable image/module name.

◆ image_size

uintptr_t microfmt::elf_image_info::image_size {0}

Total size of the image in bytes.

◆ load_base

uintptr_t microfmt::elf_image_info::load_base {0}

Load (base) address of the image in the target address space.


The documentation for this struct was generated from the following file: