com.pnfsoftware.jeb.core.units.code.android.ir.IDTryData |
dexdec
exception handling information, optionally provided by an IR method context
.
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
abstract boolean |
addProtectionFromBlock(int srcBlkOffset, int dstBlkOffset)
Append the protection of the source block on to the destination block.
| ||||||||||
abstract boolean |
compareHandlers(int blkOffset1, int blkOffset2)
Compare the protection information of two blocks.
| ||||||||||
abstract IDTryData |
copy()
Perform a deep-copy this object.
| ||||||||||
abstract boolean |
copyProtectedBlock(int srcBlkOffset, int dstBlkOffset)
Copy the protection information of a block to another block.
| ||||||||||
abstract boolean |
copyProtectionFromBlock(int blkOffset, int srcBlkOffset)
This method is deprecated.
use
copyProtectedBlock(int, int) instead, however be careful with the
parameter order, which has been switched: source block first, destination block
second
| ||||||||||
abstract List<IDExceptionHandler> |
getBlockHandlers(int blkOffset)
Retrieve the handlers protecting the provided block.
| ||||||||||
abstract Set<Integer> |
getHandledExceptionTypesAt(int handlerOffset)
Retrieve all the exception types handled by the provided handler.
| ||||||||||
abstract List<IDExceptionHandler> |
getHandlersForBlock(int blkOffset)
This method is deprecated.
use
getBlockHandlers(int) instead
| ||||||||||
abstract List<Integer> |
getProtectedBlocks()
Retrieve a copy of the list of protected blocks.
| ||||||||||
abstract boolean |
hasProtectedBlocks()
Determine whether this object carries some protection information.
| ||||||||||
abstract boolean |
isEmpty()
Determine whether this object carries some protection information.
| ||||||||||
abstract boolean |
isProtectedBlock(int blkOffset)
Determine whether a block is protected.
| ||||||||||
abstract boolean |
moveProtectedBlock(int srcBlkOffset, int dstBlkOffset)
Move the protection information of a block to another block.
| ||||||||||
abstract boolean |
protectBlock(int blkOffset, int exTypeIndex, int handlerOffset, int position)
Add a handler to the list of exception handlers protecting the provided block.
| ||||||||||
abstract void |
setBlockHandlers(int blkOffset, Collection<IDExceptionHandler> handlers)
Set the handlers for the provided block.
| ||||||||||
abstract boolean |
unprotectBlock(int blkOffset, int handlerOffset, int exTypeIndex)
Remove a specific specific protection for a block.
| ||||||||||
abstract boolean |
unprotectBlock(int blkOffset, int handlerOffset)
Remove a specific protection for a block.
| ||||||||||
abstract boolean |
unprotectBlock(int blkOffset)
Unprotect a block.
| ||||||||||
abstract void |
updateOffsets(Map<Integer, Integer> oldToNewOffsets)
This method is deprecated.
use
updateTargets(Map) or updateTargets(Map, boolean) instead
| ||||||||||
abstract int |
updateTargets(Map<Integer, Integer> oldToNewOffsets)
Update the targets of this object.
| ||||||||||
abstract int |
updateTargets(Map<Integer, Integer> oldToNewOffsets, boolean failOnMissedEntry)
Update the targets of this object.
|
Append the protection of the source block on to the destination block.
srcBlkOffset | source block |
---|---|
dstBlkOffset | destination block |
Compare the protection information of two blocks.
blkOffset1 | a block |
---|---|
blkOffset2 | another block |
Copy the protection information of a block to another block.
srcBlkOffset | source block |
---|---|
dstBlkOffset | destination block |
This method is deprecated.
use copyProtectedBlock(int, int)
instead, however be careful with the
parameter order, which has been switched: source block first, destination block
second
Copy the protection information (exception handlers) of a block to another block.
blkOffset | block to be protected (if it was protected, the original protection information will be overwritten) |
---|---|
srcBlkOffset | source block, whose protection information will be copied over to the source block |
Retrieve the handlers protecting the provided block.
blkOffset | block |
---|
Retrieve all the exception types handled by the provided handler.
handlerOffset | offset of the handler block (an entry-point block when an exception is caught) |
---|
Retrieve a copy of the list of protected blocks.
Determine whether this object carries some protection information. The reverse of
isEmpty()
.
Determine whether this object carries some protection information. The reverse of
hasProtectedBlocks()
.
Determine whether a block is protected.
blkOffset | block |
---|
Move the protection information of a block to another block. The source block will be left unprotected. The destination block will be protected as the source block was.
srcBlkOffset | source block |
---|---|
dstBlkOffset | destination |
Add a handler to the list of exception handlers protecting the provided block. If no handler protects the block, a new list is created.
blkOffset | block |
---|---|
exTypeIndex | exception type index |
handlerOffset | offset of the handler entry-point |
position | insertion index (negative value is allowed, e.g. -1 means append) |
Set the handlers for the provided block. The list of provided handlers will be copied.
blkOffset | block |
---|---|
handlers | a list of handlers; empty to unprotect the block |
Remove a specific specific protection for a block.
blkOffset | block |
---|---|
handlerOffset | offset of the handler |
exTypeIndex | expected handled exception type |
Remove a specific protection for a block. All handling leading to the provided handler offset will be removed.
blkOffset | block |
---|---|
handlerOffset | offset of the handler |
Unprotect a block.
blkOffset | block |
---|
Update the targets of this object. All block offsets (protected blocks, handler blocks) will be updated.
oldToNewOffsets | a map of old block offsets to new block offsets |
---|
Update the targets of this object. All block offsets (protected blocks, handler blocks) will be updated.
oldToNewOffsets | a map of old block offsets to new block offsets |
---|---|
failOnMissedEntry | if true, the method will raise if a (current) branch target cannot be mapped to a new target (i.e., if there is no entry for a branch target in the map) |