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 Instructioninstr
-
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 InjectPayloadgetCallFixup(Address callDestAddr)Returns the call-fixup for a specified call destination.AddressgetFallThroughOverride()Get the fall-through override address which may have been applied to the current instruction.FlowOverridegetFlowOverride()Get the flow override which may have been applied to the current instruction.AddressgetInstructionStart()AddressgetOverridingReference(RefType type)Get the primary overriding reference address ofRefTypetypefrom the current instructionAddressgetPrimaryCallReference()Get the primary call reference address from the current instructionbooleanhasCallFixup(Address callDestAddr)Returns the call-fixup for a specified call destination.booleanhasPotentialOverride()Returns a boolean indicating whether there are any primary overriding references at the current instructionbooleanisCallOtherCallOverrideRefApplied()Returns a boolean indicating whether a callother call override has been applied at the current instructionbooleanisCallOtherJumpOverrideApplied()Returns a boolean indicating whether a callother jump override has been applied at the current instructionbooleanisCallOverrideRefApplied()Returns a boolean indicating whether a call override has been applied at the current instructionbooleanisJumpOverrideRefApplied()Returns a boolean indicating whether a jump override has been applied at the current instructionvoidsetCallOtherCallOverrideRefApplied()Register that a callother call override has been applied at the current instructionvoidsetCallOtherJumpOverrideRefApplied()Register that a callother jump override has been applied at the current instructionvoidsetCallOverrideRefApplied()Register that a call override has been applied at the current instruction.voidsetJumpOverrideRefApplied()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:PcodeOverrideGet the fall-through override address which may have been applied to the current instruction.- Specified by:
getFallThroughOverridein interfacePcodeOverride- Returns:
- fall-through override address or null
-
getFlowOverride
public FlowOverride getFlowOverride()
Description copied from interface:PcodeOverrideGet the flow override which may have been applied to the current instruction.- Specified by:
getFlowOverridein interfacePcodeOverride- Returns:
- flow override or null
-
getInstructionStart
public Address getInstructionStart()
- Specified by:
getInstructionStartin interfacePcodeOverride- Returns:
- current instruction address
-
getOverridingReference
public Address getOverridingReference(RefType type)
Description copied from interface:PcodeOverrideGet the primary overriding reference address ofRefTypetypefrom the current instruction- Specified by:
getOverridingReferencein interfacePcodeOverride- Parameters:
type- type of reference- Returns:
- call reference address or null
-
getPrimaryCallReference
public Address getPrimaryCallReference()
Description copied from interface:PcodeOverrideGet the primary call reference address from the current instruction- Specified by:
getPrimaryCallReferencein interfacePcodeOverride- Returns:
- call reference address or null
-
hasCallFixup
public boolean hasCallFixup(Address callDestAddr)
Description copied from interface:PcodeOverrideReturns the call-fixup for a specified call destination.- Specified by:
hasCallFixupin 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:PcodeOverrideReturns 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:
getCallFixupin 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:PcodeOverrideRegister that a call override has been applied at the current instruction.- Specified by:
setCallOverrideRefAppliedin interfacePcodeOverride
-
isCallOverrideRefApplied
public boolean isCallOverrideRefApplied()
Description copied from interface:PcodeOverrideReturns a boolean indicating whether a call override has been applied at the current instruction- Specified by:
isCallOverrideRefAppliedin interfacePcodeOverride- Returns:
- has call override been applied
-
setJumpOverrideRefApplied
public void setJumpOverrideRefApplied()
Description copied from interface:PcodeOverrideRegister that a jump override has been applied at the current instruction- Specified by:
setJumpOverrideRefAppliedin interfacePcodeOverride
-
isJumpOverrideRefApplied
public boolean isJumpOverrideRefApplied()
Description copied from interface:PcodeOverrideReturns a boolean indicating whether a jump override has been applied at the current instruction- Specified by:
isJumpOverrideRefAppliedin interfacePcodeOverride- Returns:
- has jump override been applied
-
setCallOtherCallOverrideRefApplied
public void setCallOtherCallOverrideRefApplied()
Description copied from interface:PcodeOverrideRegister that a callother call override has been applied at the current instruction- Specified by:
setCallOtherCallOverrideRefAppliedin interfacePcodeOverride
-
isCallOtherCallOverrideRefApplied
public boolean isCallOtherCallOverrideRefApplied()
Description copied from interface:PcodeOverrideReturns a boolean indicating whether a callother call override has been applied at the current instruction- Specified by:
isCallOtherCallOverrideRefAppliedin interfacePcodeOverride- Returns:
- has callother call override been applied
-
setCallOtherJumpOverrideRefApplied
public void setCallOtherJumpOverrideRefApplied()
Description copied from interface:PcodeOverrideRegister that a callother jump override has been applied at the current instruction- Specified by:
setCallOtherJumpOverrideRefAppliedin interfacePcodeOverride
-
isCallOtherJumpOverrideApplied
public boolean isCallOtherJumpOverrideApplied()
Description copied from interface:PcodeOverrideReturns a boolean indicating whether a callother jump override has been applied at the current instruction- Specified by:
isCallOtherJumpOverrideAppliedin interfacePcodeOverride- Returns:
- has callother jump override been applied
-
hasPotentialOverride
public boolean hasPotentialOverride()
Description copied from interface:PcodeOverrideReturns a boolean indicating whether there are any primary overriding references at the current instruction- Specified by:
hasPotentialOverridein interfacePcodeOverride- Returns:
- are there primary overriding references
-
-