summaryrefslogtreecommitdiff
path: root/lib/MC/MCStreamer.cpp
diff options
context:
space:
mode:
authorCharles Davis <cdavis@mines.edu>2011-05-21 17:36:25 +0000
committerCharles Davis <cdavis@mines.edu>2011-05-21 17:36:25 +0000
commit81f3830f2ed0b26e8bd7ae62e127db427f9f350d (patch)
treecf33d62fb959cc9648b4d9eab8d68461af548c3b /lib/MC/MCStreamer.cpp
parent321fe74b2d40d7762175fbd3054fda00b5e70833 (diff)
downloadllvm-81f3830f2ed0b26e8bd7ae62e127db427f9f350d.tar.gz
llvm-81f3830f2ed0b26e8bd7ae62e127db427f9f350d.tar.bz2
llvm-81f3830f2ed0b26e8bd7ae62e127db427f9f350d.tar.xz
Don't allow .seh_handler and .seh_handlerdata directives inside chained
unwind areas. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131795 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCStreamer.cpp')
-rw-r--r--lib/MC/MCStreamer.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp
index 1ec7688a5e..a760f2cfb5 100644
--- a/lib/MC/MCStreamer.cpp
+++ b/lib/MC/MCStreamer.cpp
@@ -361,6 +361,8 @@ void MCStreamer::EmitWin64EHHandler(const MCSymbol *Sym, bool Unwind,
bool Except) {
EnsureValidW64UnwindInfo();
MCWin64EHUnwindInfo *CurFrame = CurrentW64UnwindInfo;
+ if (CurFrame->ChainedParent)
+ report_fatal_error("Chained unwind areas can't have handlers!");
CurFrame->ExceptionHandler = Sym;
if (!Except && !Unwind)
report_fatal_error("Don't know what kind of handler this is!");
@@ -372,6 +374,9 @@ void MCStreamer::EmitWin64EHHandler(const MCSymbol *Sym, bool Unwind,
void MCStreamer::EmitWin64EHHandlerData() {
EnsureValidW64UnwindInfo();
+ MCWin64EHUnwindInfo *CurFrame = CurrentW64UnwindInfo;
+ if (CurFrame->ChainedParent)
+ report_fatal_error("Chained unwind areas can't have handlers!");
}
void MCStreamer::EmitWin64EHPushReg(unsigned Register) {