Skip to main content

POGOInfo

Struct POGOInfo 

Source
#[repr(C)]
pub struct POGOInfo<'a> { pub signature: u32, pub data: &'a [u8], }
Expand description

Represents the POGO info structure, which provides information about Profile-Guided Optimization (POGO aka PGO) data within a PE file.

PGO is a compiler optimization technique that uses data collected from program execution to optimize code layout and improve runtime performance. This structure contains details such as the relative virtual address (RVA), size, and the associated name of the function or data block for which PGO data is provided.

https://devblogs.microsoft.com/cppblog/pogo

Fields§

§signature: u32

The signature of POGO debug directory entry is always first 4-bytes

Either one of:

§data: &'a [u8]

Raw bytes of POGO debug entry, without first 4-bytes signatures field

Implementations§

Source§

impl<'a> POGOInfo<'a>

Source

pub fn parse(bytes: &'a [u8], idd: &ImageDebugDirectory) -> Result<Option<Self>>

Source

pub fn parse_with_opts( bytes: &'a [u8], idd: &ImageDebugDirectory, opts: &ParseOptions, ) -> Result<Option<Self>>

Source

pub fn entries(&self) -> POGOEntryIterator<'a>

Returns iterator for POGOInfoEntry

Trait Implementations§

Source§

impl<'a> Clone for POGOInfo<'a>

Source§

fn clone(&self) -> POGOInfo<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for POGOInfo<'a>

Source§

impl<'a> Debug for POGOInfo<'a>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<'a> Default for POGOInfo<'a>

Source§

fn default() -> POGOInfo<'a>

Returns the “default value” for a type. Read more
Source§

impl<'a> PartialEq for POGOInfo<'a>

Source§

fn eq(&self, other: &POGOInfo<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> StructuralPartialEq for POGOInfo<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for POGOInfo<'a>

§

impl<'a> RefUnwindSafe for POGOInfo<'a>

§

impl<'a> Send for POGOInfo<'a>

§

impl<'a> Sync for POGOInfo<'a>

§

impl<'a> Unpin for POGOInfo<'a>

§

impl<'a> UnsafeUnpin for POGOInfo<'a>

§

impl<'a> UnwindSafe for POGOInfo<'a>

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.