15#ifndef LLVM_SUPPORT_WIN64EH_H
16#define LLVM_SUPPORT_WIN64EH_H
133 return u.UnwindOpAndOpInfo & 0x0F;
136 return (
u.UnwindOpAndOpInfo >> 4) & 0x0F;
221 return reinterpret_cast<void *
>(
reinterpret_cast<uint32_t *
>(
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file defines the SmallVector class.
Represent a constant reference to an array (0 or more elements consecutively in memory),...
Tagged union holding either a T or a Error.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Represent a constant reference to a string, i.e.
StringRef getRegisterNameV3(unsigned Reg)
Return the register name for a 5-bit AMD64 integer register number.
EpilogInfoFlagsV3
V3 EPILOG_INFO flags.
@ EPILOG_PARENT_FRAGMENT_TRANSFER
@ EPILOG_INFO_LARGE
When set, the extended descriptor uses EPILOG_INFO_LARGE_EX_V3 (16-bit IpOffsetOfLastInstruction) and...
@ UNW_TerminateHandler
UNW_TerminateHandler - Specifies that this function has a termination handler.
@ UNW_FlagLarge
UNW_FlagLarge - V3 only.
@ UNW_ExceptionHandler
UNW_ExceptionHandler - Specifies that this function has an exception handler.
@ UNW_ChainInfo
UNW_ChainInfo - Specifies that this UnwindInfo structure is chained to another one.
UnwindOpcodes
UnwindOpcodes - Enumeration whose values specify a single operation in the prolog of a function.
@ UOP_WideSaveRegsR4R11LR
Expected< DecodedWOD > decodeWOD(ArrayRef< uint8_t > Pool, unsigned Offset)
Decode one WOD from the pool at the given byte offset.
WODOpcode
V3 Winding Operation Descriptor opcodes.
@ WOD_PUSH_CANONICAL_FRAME
Expected< DecodedUnwindInfoV3 > decodeUnwindInfoV3(ArrayRef< uint8_t > Data)
Parse a V3 UNWIND_INFO from raw bytes.
detail::packed_endian_specific_integral< uint32_t, llvm::endianness::little, unaligned > ulittle32_t
detail::packed_endian_specific_integral< uint16_t, llvm::endianness::little, unaligned > ulittle16_t
This is an optimization pass for GlobalISel generic memory operations.
FunctionAddr VTableAddr uintptr_t uintptr_t Data
Decoded V3 epilog descriptor.
uint16_t IpOffsetOfLastInstruction
bool isLarge() const
Whether the EPILOG_INFO_LARGE flag is set.
SmallVector< uint16_t, 8 > IpOffsets
uint16_t PayloadSize
Total bytes consumed by header + payload (used to locate handler/chain).
SmallVector< DecodedEpilogV3, 4 > Epilogs
ArrayRef< uint8_t > WODPool
bool isLarge() const
Whether the UNW_FlagLarge flag is set.
SmallVector< uint16_t, 8 > PrologIpOffsets
Decoded V3 Winding Operation Descriptor.
RuntimeFunction - An entry in the table of functions with unwind info.
support::ulittle32_t StartAddress
support::ulittle32_t EndAddress
support::ulittle32_t UnwindInfoOffset
UnwindInfo - An entry in the exception table.
void * getExceptionData()
Return pointer to exception-specific data.
uint8_t getFrameOffset() const
uint8_t getFrameRegister() const
UnwindCode UnwindCodes[1]
const void * getLanguageSpecificData() const
Return pointer to language specific data part of UnwindInfo.
void setLanguageSpecificHandlerOffset(uint32_t offset)
Set image-relative offset of language-specific exception handler.
uint8_t FrameRegisterAndOffset
const RuntimeFunction * getChainedFunctionEntry() const
Return pointer to chained unwind info.
uint32_t getLanguageSpecificHandlerOffset() const
Return image-relative offset of language-specific exception handler.
void * getLanguageSpecificData()
Return pointer to language specific data part of UnwindInfo.
uint8_t getVersion() const
RuntimeFunction * getChainedFunctionEntry()
Return pointer to chained unwind info.
UnwindCode - This union describes a single operation in a function prolog, or part thereof.
struct llvm::Win64EH::UnwindCode::@155363032112205007051067226341223137067342247116 u
uint8_t getOpInfo() const
support::ulittle16_t FrameOffset
uint8_t getUnwindOp() const
uint32_t getEpilogOffset() const
Gets the offset for an UOP_Epilog unwind code.
uint8_t UnwindOpAndOpInfo