Package ghidra.app.util.bin.format.omf
Class OmfSegmentHeader
java.lang.Object
ghidra.app.util.bin.format.omf.OmfRecord
ghidra.app.util.bin.format.omf.OmfSegmentHeader
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassAn InputStream that produces the bytes for the dataBlocks in this segment. -
Field Summary
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidAdd an explicit data-block to this segment.protected voidAdd a compressed-form data-block to this segmentprotected voidAdd an explicit data-block to this segment that might extend the length of this segment.getAddress(Language language) intintintgetName()getRawDataStream(BinaryReader reader, MessageLog log) Get an InputStream that reads in the raw data for this segmentlonglongbooleanbooleanisCode()booleanbooleanbooleanprotected longrelocateSegment(long firstValidAddress, int alignOverride) Given the first possible address where this segment can reside, relocate the segment based on this address and alignment considerations.protected voidresolveNames(ArrayList<String> nameList) Resolve special names from the name list such as: segment, class, overlay, names.protected voidsortData()Sort the data-blocks within this segmentMethods inherited from class ghidra.app.util.bin.format.omf.OmfRecord
calcCheckSum, getRecordLength, getRecordType, hasBigFields, readCheckSumByte, readIndex, readInt1Or2, readInt2Or4, readRecord, readRecordHeader, readString, validCheckSum
-
Constructor Details
-
OmfSegmentHeader
- Throws:
IOException
-
-
Method Details
-
isCode
public boolean isCode()- Returns:
- true if this is a code segment
-
isReadable
public boolean isReadable()- Returns:
- true if this segment is readable
-
isWritable
public boolean isWritable()- Returns:
- true if this segment is writable
-
isExecutable
public boolean isExecutable()- Returns:
- true if this segment is executable
-
getFrameDatum
public int getFrameDatum()- Returns:
- the segment selector needed for this object
-
getAddress
- Parameters:
language- is the Program language for this binary- Returns:
- the starting Address for this segment
-
getName
- Returns:
- the name of this segment
-
getClassName
- Returns:
- the class name of this segment
-
getOverlayName
- Returns:
- the name of the overlay, or the empty string
-
getStartAddress
public long getStartAddress()- Returns:
- the load image address for this segment
-
getSegmentLength
public long getSegmentLength()- Returns:
- the length of the segment in bytes
-
getAlignment
public int getAlignment()- Returns:
- the alignment required for this segment
-
getCombine
public int getCombine()- Returns:
- special combining rules for this segment
-
hasNonZeroData
public boolean hasNonZeroData()- Returns:
- true if this block uses filler other than zero bytes
-
sortData
protected void sortData()Sort the data-blocks within this segment -
getRawDataStream
Get an InputStream that reads in the raw data for this segment- Parameters:
reader- is the image file readerlog- the log- Returns:
- the InputStream
- Throws:
IOException- for problems reading from the image file
-
relocateSegment
Given the first possible address where this segment can reside, relocate the segment based on this address and alignment considerations.- Parameters:
firstValidAddress- is the first possible Address for the segmentalignOverride- if non-negative, overrides alignment info from the segment header- Returns:
- the next possible address for following segments
- Throws:
OmfException- for bad alignment information
-
resolveNames
Resolve special names from the name list such as: segment, class, overlay, names. This routine also determines the read/write/execute permissions for the segment based on the class name.- Parameters:
nameList- is the array of names associated with the file- Throws:
OmfException- for improper name indices
-
addEnumeratedData
Add an explicit data-block to this segment.- Parameters:
rec- is the data-block
-
appendEnumeratedData
Add an explicit data-block to this segment that might extend the length of this segment. Borland compilers in particular produce data-blocks that can extend the segment in this way.- Parameters:
rec- is the data-block
-
addIteratedData
Add a compressed-form data-block to this segment- Parameters:
rec- is the data-block
-