Class GoPcHeader
java.lang.Object
ghidra.app.util.bin.format.golang.rtti.GoPcHeader
A low-level structure embedded in golang binaries that contains useful bootstrapping
information.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic AddressfindPclntabAddress(GoRttiMapper programContext, AddressRange range, TaskMonitor monitor) Searches (possibly slowly) for a pclntab structure in the specified memory range, which is typically necessary in stripped PE binaries.Returns address of the cu tab slice, used by the cuOffset field's markup annotation.Returns the address of the filetab slice, used by the filetabOffset field's markup annotationReturns address of the func name slicebytegetMinLC()Returns the min lc, used as the GoPcValueEvaluator's pcquantumReturns the address of the pcln slice, used by the pclnOffset field's markup annotationstatic AddressgetPclntabAddress(Program program) Returns theAddress(if present) of the go pclntab section or symbol.Returns the address of the pctab slice, used by the pctabOffset field's markup annotationbyteReturns the pointer sizeReturns the address of where the text area starts.static booleanhasPclntab(Program program) Returns true if the specified program has an easily found pclntabbooleanReturns true if this pcln structure contains a textStart value (only present >= 1.18)static booleanisPclntab(ByteProvider provider) Returns true if there is a pclntab at the current position of the specified ByteProvider.
-
Field Details
-
GOPCLNTAB_SECTION_NAME
- See Also:
-
GO_1_2_MAGIC
public static final int GO_1_2_MAGIC- See Also:
-
GO_1_16_MAGIC
public static final int GO_1_16_MAGIC- See Also:
-
GO_1_18_MAGIC
public static final int GO_1_18_MAGIC- See Also:
-
-
Constructor Details
-
GoPcHeader
public GoPcHeader()
-
-
Method Details
-
getPclntabAddress
Returns theAddress(if present) of the go pclntab section or symbol. -
hasPclntab
Returns true if the specified program has an easily found pclntab- Parameters:
program-Program- Returns:
- boolean true if program has a pclntab, false otherwise
-
findPclntabAddress
public static Address findPclntabAddress(GoRttiMapper programContext, AddressRange range, TaskMonitor monitor) throws IOException Searches (possibly slowly) for a pclntab structure in the specified memory range, which is typically necessary in stripped PE binaries.- Parameters:
programContext-GoRttiMapperrange- memory range to search (typically .rdata or .noptrdata sections)monitor-TaskMonitorthat will let the user cancel- Returns:
Addressof the found pclntab structure, or null if not found- Throws:
IOException- if error reading
-
isPclntab
Returns true if there is a pclntab at the current position of the specified ByteProvider.- Parameters:
provider-ByteProvider- Returns:
- boolean true if the byte provider has the magic signature of a pclntab
- Throws:
IOException- if error reading
-
getGoVersion
-
hasTextStart
public boolean hasTextStart()Returns true if this pcln structure contains a textStart value (only present >= 1.18)- Returns:
-
getTextStart
Returns the address of where the text area starts.- Returns:
- address of text starts
-
getFuncnameAddress
Returns address of the func name slice- Returns:
- address of func name slice
-
getCuAddress
Returns address of the cu tab slice, used by the cuOffset field's markup annotation.- Returns:
- address of the cu tab slice
-
getFiletabAddress
Returns the address of the filetab slice, used by the filetabOffset field's markup annotation- Returns:
- address of the filetab slice
-
getPctabAddress
Returns the address of the pctab slice, used by the pctabOffset field's markup annotation- Returns:
- address of the pctab slice
-
getPclnAddress
Returns the address of the pcln slice, used by the pclnOffset field's markup annotation- Returns:
- address of the pcln slice
-
getMinLC
public byte getMinLC()Returns the min lc, used as the GoPcValueEvaluator's pcquantum- Returns:
- minLc
-
getPtrSize
public byte getPtrSize()Returns the pointer size- Returns:
- pointer size
-