- java.lang.Object
-
- com.ibm.j9ddr.corereaders.elf.unwind.Unwind
-
public class Unwind extends Object
Class for parsing the unwind information from a .eh_frame header It creates a list of FDE's (Frame Description Entry) objects and the associated CIE's (Common Information Entry) for the process when created. It can then be used to get the unwind table for a given instruction address. The table can then be applied to the current register state to create the previous register state (or at least the register state that matters for further unwinding.) See: http://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
Unwind.DW_EH_PE
-
Constructor Summary
Constructors Constructor Description Unwind(LinuxProcessAddressSpace _process)
Create an unwinder for a process. eh_frame information is added later when the program header entries containing it are found.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addCallFrameInformation(long libraryBaseAddress, ProgramHeaderEntry ph, String libName)
UnwindTable
getUnwindTableForInstructionAddress(long instructionPointer)
static long
readSignedLEB128(ImageInputStream cfiStream)
static long
readUnsignedLEB128(ImageInputStream cfiStream)
-
-
-
Constructor Detail
-
Unwind
public Unwind(LinuxProcessAddressSpace _process)
Create an unwinder for a process. eh_frame information is added later when the program header entries containing it are found.- Parameters:
_process
- The process the unwinder will work with.
-
-
Method Detail
-
addCallFrameInformation
public void addCallFrameInformation(long libraryBaseAddress, ProgramHeaderEntry ph, String libName) throws CorruptDataException, IOException
- Throws:
CorruptDataException
IOException
-
readUnsignedLEB128
public static long readUnsignedLEB128(ImageInputStream cfiStream) throws IOException
- Throws:
IOException
-
readSignedLEB128
public static long readSignedLEB128(ImageInputStream cfiStream) throws IOException
- Throws:
IOException
-
getUnwindTableForInstructionAddress
public UnwindTable getUnwindTableForInstructionAddress(long instructionPointer) throws CorruptDataException, IOException
- Throws:
CorruptDataException
IOException
-
-