diff options
author | Charles Davis <cdavis@mines.edu> | 2011-05-21 17:36:25 +0000 |
---|---|---|
committer | Charles Davis <cdavis@mines.edu> | 2011-05-21 17:36:25 +0000 |
commit | 81f3830f2ed0b26e8bd7ae62e127db427f9f350d (patch) | |
tree | cf33d62fb959cc9648b4d9eab8d68461af548c3b | |
parent | 321fe74b2d40d7762175fbd3054fda00b5e70833 (diff) | |
download | external_llvm-81f3830f2ed0b26e8bd7ae62e127db427f9f350d.zip external_llvm-81f3830f2ed0b26e8bd7ae62e127db427f9f350d.tar.gz external_llvm-81f3830f2ed0b26e8bd7ae62e127db427f9f350d.tar.bz2 |
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
-rw-r--r-- | lib/MC/MCStreamer.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp index 1ec7688..a760f2c 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) { |