Skip to main content

LayoutHints

Struct LayoutHints 

Source
pub struct LayoutHints {
    pub pclntab_version: PclntabVersion,
    pub go_minor: Option<u32>,
    pub has_typelink_section: bool,
    pub has_go_type_section: bool,
}
Expand description

Out-of-band signals used to pick the moduledata layout.

Everything here is derived from the containing binary rather than from the moduledata bytes themselves, so it has to be threaded in by the caller. Grouping the signals keeps Moduledata::parse from growing a row of positional booleans whose meaning is invisible at the call site.

Fields§

§pclntab_version: PclntabVersion

pclntab magic of the binary, which fixes the Go-version floor: Go118 implies 1.18+ (rodata/gofunc), Go120 implies 1.20+ (covctrs).

§go_minor: Option<u32>

Go minor version, when a version string was recovered. None for binaries whose version was stripped or obfuscated away.

§has_typelink_section: bool

Whether a .typelink / __typelink section was found. Its absence is weak evidence of Go 1.27+ — PE, wasm, and RELRO ELF links spelled .data.rel.ro.typelink have no such section at any version — so it is never used alone. See Moduledata::parse.

§has_go_type_section: bool

Whether a .go.type / __go_type section was found. This one is a positive Go 1.27+ signal: the section did not exist before.

Trait Implementations§

Source§

impl Clone for LayoutHints

Source§

fn clone(&self) -> LayoutHints

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 Copy for LayoutHints

Source§

impl Debug for LayoutHints

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.