LLVM
3.7.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
work
release_test
rc4
llvm.src
include
llvm
MC
MCWinEH.h
Go to the documentation of this file.
1
//===- MCWinEH.h - Windows Unwinding Support --------------------*- C++ -*-===//
2
//
3
// The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
10
#ifndef LLVM_MC_MCWINEH_H
11
#define LLVM_MC_MCWINEH_H
12
13
#include <vector>
14
15
namespace
llvm {
16
class
MCContext;
17
class
MCSection;
18
class
MCStreamer;
19
class
MCSymbol
;
20
class
StringRef;
21
22
namespace
WinEH
{
23
struct
Instruction
{
24
const
MCSymbol
*
Label
;
25
const
unsigned
Offset
;
26
const
unsigned
Register
;
27
const
unsigned
Operation
;
28
29
Instruction
(
unsigned
Op,
MCSymbol
*L,
unsigned
Reg
,
unsigned
Off)
30
:
Label
(L),
Offset
(Off),
Register
(Reg),
Operation
(Op) {}
31
};
32
33
struct
FrameInfo
{
34
const
MCSymbol
*
Begin
;
35
const
MCSymbol
*
End
;
36
const
MCSymbol
*
ExceptionHandler
;
37
const
MCSymbol
*
Function
;
38
const
MCSymbol
*
PrologEnd
;
39
const
MCSymbol
*
Symbol
;
40
41
bool
HandlesUnwind
;
42
bool
HandlesExceptions
;
43
44
int
LastFrameInst
;
45
const
FrameInfo
*
ChainedParent
;
46
std::vector<Instruction>
Instructions
;
47
48
FrameInfo
()
49
:
Begin
(nullptr),
End
(nullptr),
ExceptionHandler
(nullptr),
50
Function
(nullptr),
PrologEnd
(nullptr),
Symbol
(nullptr),
51
HandlesUnwind
(
false
),
HandlesExceptions
(
false
),
LastFrameInst
(-1),
52
ChainedParent
(nullptr),
Instructions
() {}
53
FrameInfo
(
const
MCSymbol
*
Function
,
const
MCSymbol
*BeginFuncEHLabel)
54
:
Begin
(BeginFuncEHLabel),
End
(nullptr),
ExceptionHandler
(nullptr),
55
Function(Function),
PrologEnd
(nullptr),
Symbol
(nullptr),
56
HandlesUnwind
(
false
),
HandlesExceptions
(
false
),
LastFrameInst
(-1),
57
ChainedParent
(nullptr),
Instructions
() {}
58
FrameInfo
(
const
MCSymbol
*
Function
,
const
MCSymbol
*BeginFuncEHLabel,
59
const
FrameInfo
*
ChainedParent
)
60
:
Begin
(BeginFuncEHLabel),
End
(nullptr),
ExceptionHandler
(nullptr),
61
Function(Function),
PrologEnd
(nullptr),
Symbol
(nullptr),
62
HandlesUnwind
(
false
),
HandlesExceptions
(
false
),
LastFrameInst
(-1),
63
ChainedParent(ChainedParent),
Instructions
() {}
64
};
65
66
class
UnwindEmitter
{
67
public
:
68
static
MCSection
*
getPDataSection
(
const
MCSymbol
*
Function
,
69
MCContext
&Context);
70
static
MCSection
*
getXDataSection
(
const
MCSymbol
*Function,
71
MCContext
&Context);
72
73
virtual
~UnwindEmitter
() { }
74
75
//
76
// This emits the unwind info sections (.pdata and .xdata in PE/COFF).
77
//
78
virtual
void
Emit
(
MCStreamer
&Streamer)
const
= 0;
79
virtual
void
EmitUnwindInfo
(
MCStreamer
&Streamer,
FrameInfo
*FI)
const
= 0;
80
};
81
}
82
}
83
84
#endif
llvm::MCSection
Instances of this class represent a uniqued identifier for a section in the current translation unit...
Definition:
MCSection.h:48
llvm::MCSymbol
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition:
MCSymbol.h:39
llvm::WinEH::FrameInfo::End
const MCSymbol * End
Definition:
MCWinEH.h:35
llvm::WinEH::Instruction::Register
const unsigned Register
Definition:
MCWinEH.h:26
llvm::WinEH::FrameInfo::FrameInfo
FrameInfo(const MCSymbol *Function, const MCSymbol *BeginFuncEHLabel, const FrameInfo *ChainedParent)
Definition:
MCWinEH.h:58
llvm::WinEH::UnwindEmitter::Emit
virtual void Emit(MCStreamer &Streamer) const =0
llvm::Function
Definition:
Function.h:53
llvm::WinEH::FrameInfo::Instructions
std::vector< Instruction > Instructions
Definition:
MCWinEH.h:46
llvm::ISD::MCSymbol
Definition:
ISDOpcodes.h:130
llvm::WinEH::UnwindEmitter::~UnwindEmitter
virtual ~UnwindEmitter()
Definition:
MCWinEH.h:73
llvm::X86Disassembler::Reg
Reg
All possible values of the reg field in the ModR/M byte.
Definition:
X86DisassemblerDecoder.h:444
false
#define false
Definition:
ConvertUTF.c:65
llvm::WinEH::FrameInfo::HandlesUnwind
bool HandlesUnwind
Definition:
MCWinEH.h:41
llvm::MCContext
Context object for machine code objects.
Definition:
MCContext.h:48
llvm::MCStreamer
Streaming machine code generation interface.
Definition:
MCStreamer.h:157
llvm::WinEH::FrameInfo::ChainedParent
const FrameInfo * ChainedParent
Definition:
MCWinEH.h:45
llvm::WinEH::FrameInfo::FrameInfo
FrameInfo()
Definition:
MCWinEH.h:48
llvm::WinEH::FrameInfo::Symbol
const MCSymbol * Symbol
Definition:
MCWinEH.h:39
llvm::WinEH::FrameInfo::Begin
const MCSymbol * Begin
Definition:
MCWinEH.h:34
llvm::WinEH::FrameInfo::PrologEnd
const MCSymbol * PrologEnd
Definition:
MCWinEH.h:38
llvm::WinEH::UnwindEmitter::EmitUnwindInfo
virtual void EmitUnwindInfo(MCStreamer &Streamer, FrameInfo *FI) const =0
llvm::WinEH::Instruction::Instruction
Instruction(unsigned Op, MCSymbol *L, unsigned Reg, unsigned Off)
Definition:
MCWinEH.h:29
llvm::WinEH::FrameInfo::LastFrameInst
int LastFrameInst
Definition:
MCWinEH.h:44
llvm::WinEH::Instruction::Label
const MCSymbol * Label
Definition:
MCWinEH.h:24
llvm::WinEH::FrameInfo::Function
const MCSymbol * Function
Definition:
MCWinEH.h:37
llvm::WinEH::FrameInfo::HandlesExceptions
bool HandlesExceptions
Definition:
MCWinEH.h:42
llvm::WinEH::FrameInfo
Definition:
MCWinEH.h:33
llvm::ExceptionHandling::WinEH
ARM EHABI.
llvm::WinEH::UnwindEmitter
Definition:
MCWinEH.h:66
llvm::WinEH::Instruction::Offset
const unsigned Offset
Definition:
MCWinEH.h:25
llvm::WinEH::UnwindEmitter::getPDataSection
static MCSection * getPDataSection(const MCSymbol *Function, MCContext &Context)
Definition:
MCWinEH.cpp:63
llvm::WinEH::Instruction::Operation
const unsigned Operation
Definition:
MCWinEH.h:27
llvm::WinEH::UnwindEmitter::getXDataSection
static MCSection * getXDataSection(const MCSymbol *Function, MCContext &Context)
Definition:
MCWinEH.cpp:70
llvm::WinEH::Instruction
Definition:
MCWinEH.h:23
llvm::WinEH::FrameInfo::FrameInfo
FrameInfo(const MCSymbol *Function, const MCSymbol *BeginFuncEHLabel)
Definition:
MCWinEH.h:53
llvm::WinEH::FrameInfo::ExceptionHandler
const MCSymbol * ExceptionHandler
Definition:
MCWinEH.h:36
Generated on Mon Aug 31 2015 11:04:14 for LLVM by
1.8.6