Package ghidra.program.model.listing
Class InstructionPcodeOverride
- java.lang.Object
-
- ghidra.program.model.listing.InstructionPcodeOverride
-
- All Implemented Interfaces:
PcodeOverride
public class InstructionPcodeOverride extends java.lang.Object implements PcodeOverride
-
-
Field Summary
Fields Modifier and Type Field Description protected Instruction
instr
-
Constructor Summary
Constructors Constructor Description InstructionPcodeOverride(Instruction instr)
This constructor caches the primary and overriding "from" references ofinstr
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description InjectPayload
getCallFixup(Address callDestAddr)
Returns the call-fixup for a specified call destination.Address
getFallThroughOverride()
Get the fall-through override address which may have been applied to the current instruction.FlowOverride
getFlowOverride()
Get the flow override which may have been applied to the current instruction.Address
getInstructionStart()
Address
getOverridingReference(RefType type)
Get the primary overriding reference address ofRefType
type
from the current instructionAddress
getPrimaryCallReference()
Get the primary call reference address from the current instructionboolean
hasCallFixup(Address callDestAddr)
Returns the call-fixup for a specified call destination.boolean
hasPotentialOverride()
Returns a boolean indicating whether there are any primary overriding references at the current instructionboolean
isCallOtherCallOverrideRefApplied()
Returns a boolean indicating whether a callother call override has been applied at the current instructionboolean
isCallOtherJumpOverrideApplied()
Returns a boolean indicating whether a callother jump override has been applied at the current instructionboolean
isCallOverrideRefApplied()
Returns a boolean indicating whether a call override has been applied at the current instructionboolean
isJumpOverrideRefApplied()
Returns a boolean indicating whether a jump override has been applied at the current instructionvoid
setCallOtherCallOverrideRefApplied()
Register that a callother call override has been applied at the current instructionvoid
setCallOtherJumpOverrideRefApplied()
Register that a callother jump override has been applied at the current instructionvoid
setCallOverrideRefApplied()
Register that a call override has been applied at the current instruction.void
setJumpOverrideRefApplied()
Register that a jump override has been applied at the current instruction
-
-
-
Field Detail
-
instr
protected Instruction instr
-
-
Constructor Detail
-
InstructionPcodeOverride
public InstructionPcodeOverride(Instruction instr)
This constructor caches the primary and overriding "from" references ofinstr
. This cache is never updated; the assumption is that this object is short-lived (duration ofPcodeEmit
)- Parameters:
instr
- the instruction
-
-
Method Detail
-
getFallThroughOverride
public Address getFallThroughOverride()
Description copied from interface:PcodeOverride
Get the fall-through override address which may have been applied to the current instruction.- Specified by:
getFallThroughOverride
in interfacePcodeOverride
- Returns:
- fall-through override address or null
-
getFlowOverride
public FlowOverride getFlowOverride()
Description copied from interface:PcodeOverride
Get the flow override which may have been applied to the current instruction.- Specified by:
getFlowOverride
in interfacePcodeOverride
- Returns:
- flow override or null
-
getInstructionStart
public Address getInstructionStart()
- Specified by:
getInstructionStart
in interfacePcodeOverride
- Returns:
- current instruction address
-
getOverridingReference
public Address getOverridingReference(RefType type)
Description copied from interface:PcodeOverride
Get the primary overriding reference address ofRefType
type
from the current instruction- Specified by:
getOverridingReference
in interfacePcodeOverride
- Parameters:
type
- type of reference- Returns:
- call reference address or null
-
getPrimaryCallReference
public Address getPrimaryCallReference()
Description copied from interface:PcodeOverride
Get the primary call reference address from the current instruction- Specified by:
getPrimaryCallReference
in interfacePcodeOverride
- Returns:
- call reference address or null
-
hasCallFixup
public boolean hasCallFixup(Address callDestAddr)
Description copied from interface:PcodeOverride
Returns the call-fixup for a specified call destination.- Specified by:
hasCallFixup
in interfacePcodeOverride
- Parameters:
callDestAddr
- call destination address. This address is used to identify a function which may have been tagged with a CallFixup.- Returns:
- true if call destination function has been tagged with a call-fixup
-
getCallFixup
public InjectPayload getCallFixup(Address callDestAddr)
Description copied from interface:PcodeOverride
Returns the call-fixup for a specified call destination. If the destination function has not be tagged or was tagged with an unknown CallFixup name this method will return null.- Specified by:
getCallFixup
in interfacePcodeOverride
- Parameters:
callDestAddr
- call destination address. This address is used to identify a function which may have been tagged with a CallFixup.- Returns:
- call fixup object or null
-
setCallOverrideRefApplied
public void setCallOverrideRefApplied()
Description copied from interface:PcodeOverride
Register that a call override has been applied at the current instruction.- Specified by:
setCallOverrideRefApplied
in interfacePcodeOverride
-
isCallOverrideRefApplied
public boolean isCallOverrideRefApplied()
Description copied from interface:PcodeOverride
Returns a boolean indicating whether a call override has been applied at the current instruction- Specified by:
isCallOverrideRefApplied
in interfacePcodeOverride
- Returns:
- has call override been applied
-
setJumpOverrideRefApplied
public void setJumpOverrideRefApplied()
Description copied from interface:PcodeOverride
Register that a jump override has been applied at the current instruction- Specified by:
setJumpOverrideRefApplied
in interfacePcodeOverride
-
isJumpOverrideRefApplied
public boolean isJumpOverrideRefApplied()
Description copied from interface:PcodeOverride
Returns a boolean indicating whether a jump override has been applied at the current instruction- Specified by:
isJumpOverrideRefApplied
in interfacePcodeOverride
- Returns:
- has jump override been applied
-
setCallOtherCallOverrideRefApplied
public void setCallOtherCallOverrideRefApplied()
Description copied from interface:PcodeOverride
Register that a callother call override has been applied at the current instruction- Specified by:
setCallOtherCallOverrideRefApplied
in interfacePcodeOverride
-
isCallOtherCallOverrideRefApplied
public boolean isCallOtherCallOverrideRefApplied()
Description copied from interface:PcodeOverride
Returns a boolean indicating whether a callother call override has been applied at the current instruction- Specified by:
isCallOtherCallOverrideRefApplied
in interfacePcodeOverride
- Returns:
- has callother call override been applied
-
setCallOtherJumpOverrideRefApplied
public void setCallOtherJumpOverrideRefApplied()
Description copied from interface:PcodeOverride
Register that a callother jump override has been applied at the current instruction- Specified by:
setCallOtherJumpOverrideRefApplied
in interfacePcodeOverride
-
isCallOtherJumpOverrideApplied
public boolean isCallOtherJumpOverrideApplied()
Description copied from interface:PcodeOverride
Returns a boolean indicating whether a callother jump override has been applied at the current instruction- Specified by:
isCallOtherJumpOverrideApplied
in interfacePcodeOverride
- Returns:
- has callother jump override been applied
-
hasPotentialOverride
public boolean hasPotentialOverride()
Description copied from interface:PcodeOverride
Returns a boolean indicating whether there are any primary overriding references at the current instruction- Specified by:
hasPotentialOverride
in interfacePcodeOverride
- Returns:
- are there primary overriding references
-
-