Section

Enum Section 

Source
pub enum Section {
Show 43 variants NOP, Code(Code), RunAtOffset(u16, u16), SectionSwitch(u16), BSS(u32), Patch(Patch), XDEF(XDEF), XREF(XREF), LNKHeader(LNKHeader), LocalSymbol(LocalSymbol), GroupSymbol(GroupSymbol), ByteSizeRegister(u16), WordSizeRegister(u16), LongSizeRegister(u16), Filename(Filename), SetToFile(u16, u32), SetToLine(u32), IncrementLineNumber, IncrementLineNumberByte(u8), IncrementLineNumberWord(u32), VeryLocalSymbol(LocalSymbol), Set3ByteRegister(u16), SetMXInfo(SetMXInfo), CPU(u8), XBSS(XBSS), IncSLDLineNum(u16), IncSLDLineNumByte(u16, u8), IncSLDLineNumWord(u16, u32), SetSLDLineNum(SetSLDLineNum), SetSLDLineNumFile(SetSLDLineNumFile), EndSLDInfo(u16), RepeatByte(u32), RepeatWord(u32), RepeatLong(u32), ProcedureCall(ProcedureCall), ProcedureDefinition(ProcedureDefinition), Repeat3Byte(u32), FunctionStart(FunctionStart), FunctionEnd(SectionOffsetLine), BlockStart(SectionOffsetLine), BlockEnd(SectionOffsetLine), Def(Def), Def2(Def2),
}
Expand description

A section within an OBJ file.

Sections can contain code, data, relocations, symbols, or debug information. The section list is terminated by a NOP entry.

§Section Types

  • Code: Executable machine code
  • BSS: Uninitialized data
  • XDEF/XREF: Symbol exports and imports
  • Patch: Relocation information
  • Debug information: Line numbers, function info, etc.
  • And many more!

Variants§

§

NOP

End of file marker.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x0
§

Code(Code)

Machine code.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x2
1CodeA Code structure
§

RunAtOffset(u16, u16)

Run at offset.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x4
1u16
3u16
§

SectionSwitch(u16)

Switch to different section.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x2
1u16Section ID
§

BSS(u32)

Uninitialized data (BSS) with size in bytes.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x8
1u32Size in bytes
§

Patch(Patch)

Relocation patch.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0xA
1PatchA Patch structure
§

XDEF(XDEF)

External symbol definition.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0xC
1XDEFAn XDEF structure.
§

XREF(XREF)

External symbol reference.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0xE
1XREFAn XREF structure.
§

LNKHeader(LNKHeader)

Section header.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x10
1LNKHeaderAn LNKHeader structure.
§

LocalSymbol(LocalSymbol)

Local symbol.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x12
1LocalSymbolA LocalSymbol structure
§

GroupSymbol(GroupSymbol)

Group symbol.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x14
1GroupSymbolA GroupSymbol structure.
§

ByteSizeRegister(u16)

Untested

§

WordSizeRegister(u16)

Untested

§

LongSizeRegister(u16)

Untested

§

Filename(Filename)

File name reference.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x1C
1FilenameA Filename structure.
§

SetToFile(u16, u32)

Untested

§

SetToLine(u32)

Untested

§

IncrementLineNumber

Untested

§

IncrementLineNumberByte(u8)

Untested

§

IncrementLineNumberWord(u32)

Untested

§

VeryLocalSymbol(LocalSymbol)

Untested

§

Set3ByteRegister(u16)

Untested

§

SetMXInfo(SetMXInfo)

Set MX info.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x2C
1SetMXInfoA SetMXInfo structure.
§

CPU(u8)

CPU type specification.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x2E
1u8A CPU identifier.

Constants for CPU identifiers can be found in the cputype module.

§

XBSS(XBSS)

External BSS symbol.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x30
1XBSSAn XBSS structure.
§

IncSLDLineNum(u16)

Increment line number.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x32
1u16The offset where the new line number starts.

See also: IncSLDLineNumByte, IncSLDLineNumWord

§

IncSLDLineNumByte(u16, u8)

Increment line number by an amount.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x34
1u16The offset where the new line number starts.
3u8The amount to increment the line number.

See also IncSLDLineNum, IncSLDLineNumWord

§

IncSLDLineNumWord(u16, u32)

Increment line number by an amount.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x34
1u16The offset where the new line number starts.
3u8The amount to increment the line number.

See also: IncSLDLineNum, IncSLDLineNumByte

§

SetSLDLineNum(SetSLDLineNum)

Set line number.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x38
1SetSLDLineNumA SetSLDLineNum structure.

See also: SetSLDLineNumFile

§

SetSLDLineNumFile(SetSLDLineNumFile)

Set line number with file name.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x3A
1SetSLDLineNumFileA SetSLDLineNumFile structure.

See also: SetSLDLineNum

§

EndSLDInfo(u16)

End of SLD info.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x3C
1u16Offset where SLD info ends.
§

RepeatByte(u32)

Untested

§

RepeatWord(u32)

Untested

§

RepeatLong(u32)

Untested

§

ProcedureCall(ProcedureCall)

Untested

§

ProcedureDefinition(ProcedureDefinition)

Untested

§

Repeat3Byte(u32)

Untested

§

FunctionStart(FunctionStart)

Function start marker.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x4A
1FunctionStartA FunctionStart structure.
§

FunctionEnd(SectionOffsetLine)

Function end marker.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x4C
1SectionOffsetLineA SectionOffsetLine structure.
§

BlockStart(SectionOffsetLine)

Block start marker.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x4E
1SectionOffsetLineA SectionOffsetLine structure.
§

BlockEnd(SectionOffsetLine)

Block end marker.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x50
1SectionOffsetLineA SectionOffsetLine structure.
§

Def(Def)

Variable/type definition.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x52
1DefA Def structure.
§

Def2(Def2)

Extended definition with tag.

§Structure on Disk

OffsetTypeDescription
0u8Magic: 0x54
1Def2A Def2 structure.

Trait Implementations§

Source§

impl BinRead for Section

Source§

type Args<'__binrw_generated_args_lifetime> = ()

The type used for the args parameter of read_args() and read_options(). Read more
Source§

fn read_options<R: Read + Seek>( __binrw_generated_var_reader: &mut R, __binrw_generated_var_endian: Endian, __binrw_generated_var_arguments: Self::Args<'_>, ) -> BinResult<Self>

Read Self from the reader using the given Endian and arguments. Read more
Source§

fn read<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self: ReadEndian, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments. Read more
Source§

fn read_be<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments and assuming big-endian byte order. Read more
Source§

fn read_le<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments and assuming little-endian byte order. Read more
Source§

fn read_ne<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read T from the reader assuming native-endian byte order. Read more
Source§

fn read_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek, Self: ReadEndian,

Read Self from the reader using the given arguments. Read more
Source§

fn read_be_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read Self from the reader, assuming big-endian byte order, using the given arguments. Read more
Source§

fn read_le_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read Self from the reader, assuming little-endian byte order, using the given arguments. Read more
Source§

fn read_ne_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read T from the reader, assuming native-endian byte order, using the given arguments. Read more
Source§

impl BinWrite for Section

Source§

type Args<'__binrw_generated_args_lifetime> = ()

The type used for the args parameter of write_args() and write_options(). Read more
Source§

fn write_options<W: Write + Seek>( &self, __binrw_generated_var_writer: &mut W, __binrw_generated_var_endian: Endian, __binrw_generated_var_arguments: Self::Args<'_>, ) -> BinResult<()>

Write Self to the writer using the given Endian and arguments. Read more
Source§

fn write<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write + Seek, Self: WriteEndian, Self::Args<'a>: for<'a> Required,

Write Self to the writer using default arguments. Read more
Source§

fn write_be<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write + Seek, Self::Args<'a>: for<'a> Required,

Write Self to the writer assuming big-endian byte order. Read more
Source§

fn write_le<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write + Seek, Self::Args<'a>: for<'a> Required,

Write Self to the writer assuming little-endian byte order. Read more
Source§

fn write_ne<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write + Seek, Self::Args<'a>: for<'a> Required,

Write Self to the writer assuming native-endian byte order. Read more
Source§

fn write_args<W>( &self, writer: &mut W, args: Self::Args<'_>, ) -> Result<(), Error>
where W: Write + Seek, Self: WriteEndian,

Write Self to the writer using the given arguments. Read more
Source§

fn write_be_args<W>( &self, writer: &mut W, args: Self::Args<'_>, ) -> Result<(), Error>
where W: Write + Seek,

Write Self to the writer, assuming big-endian byte order, using the given arguments. Read more
Source§

fn write_le_args<W>( &self, writer: &mut W, args: Self::Args<'_>, ) -> Result<(), Error>
where W: Write + Seek,

Write Self to the writer, assuming little-endian byte order, using the given arguments. Read more
Source§

fn write_ne_args<W>( &self, writer: &mut W, args: Self::Args<'_>, ) -> Result<(), Error>
where W: Write + Seek,

Write Self to the writer, assuming native-endian byte order, using the given arguments. Read more
Source§

impl Clone for Section

Source§

fn clone(&self) -> Section

Returns a duplicate of the value. Read more
1.0.0§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Section

Source§

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

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

impl Display for Section

Source§

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

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

impl DisplayWithOptions for Section

Source§

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

Source§

impl PartialEq for Section

Source§

fn eq(&self, other: &Section) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0§

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 ReadEndian for Section

Source§

const ENDIAN: EndianKind

The endianness of the type.
Source§

impl WriteEndian for Section

Source§

const ENDIAN: EndianKind

The endianness of the type.
Source§

impl StructuralPartialEq for Section

Auto Trait Implementations§

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

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

§

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> CustomError for T
where T: Display + Debug + Send + Sync + 'static,

Source§

fn as_any(&self) -> &(dyn Any + Sync + Send + 'static)

Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + Sync + Send + 'static)

Source§

fn as_box_any(self: Box<T>) -> Box<dyn Any + Sync + Send>

§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

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

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

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

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

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

impl<T> ToString for T
where T: Display + ?Sized,

§

fn to_string(&self) -> String

Converts the given value to a String. Read more
§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.