From 9c77398d1c89f615735d304cd7eda3c3e9b1504f Mon Sep 17 00:00:00 2001 From: Charles Davis Date: Wed, 18 May 2011 04:47:22 +0000 Subject: [PATCH] While thinking about how to know where the functions' boundaries are for the purposes of the Win64 EH tables, I realized we had no way to tell where the function ends. (MASM bounds functions with PROC and ENDP keywords.) Add a directive to delimit the end of the function, and rename the 'frame' directive to more accurately reflect its duality with the new directive. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131522 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCStreamer.h | 5 +++-- lib/MC/MCStreamer.cpp | 10 ++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/include/llvm/MC/MCStreamer.h b/include/llvm/MC/MCStreamer.h index 03bd4e1d9ea..1a01d6baa9e 100644 --- a/include/llvm/MC/MCStreamer.h +++ b/include/llvm/MC/MCStreamer.h @@ -457,13 +457,14 @@ namespace llvm { virtual void EmitCFIRelOffset(int64_t Register, int64_t Offset); virtual void EmitCFIAdjustCfaOffset(int64_t Adjustment); - virtual void EmitWin64EHFrame(MCSymbol *Symbol, MCSymbol *EHandler = 0); + virtual void EmitWin64EHStartProc(MCSymbol *Symbol, MCSymbol *EHandler = 0); + virtual void EmitWin64EHEndProc(); virtual void EmitWin64EHPushReg(int64_t Register); virtual void EmitWin64EHSetFrame(int64_t Register, int64_t Offset); virtual void EmitWin64EHAllocStack(int64_t Size); virtual void EmitWin64EHSaveReg(int64_t Register, int64_t Offset); virtual void EmitWin64EHPushFrame(bool Code); - virtual void EmitWin64EHEndProlog(void); + virtual void EmitWin64EHEndProlog(); /// EmitInstruction - Emit the given @p Instruction into the current /// section. diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp index 62a2f768e29..5924d02802a 100644 --- a/lib/MC/MCStreamer.cpp +++ b/lib/MC/MCStreamer.cpp @@ -310,7 +310,13 @@ void MCStreamer::EmitCFISameValue(int64_t Register) { CurFrame->Instructions.push_back(Instruction); } -void MCStreamer::EmitWin64EHFrame(MCSymbol *Symbol, MCSymbol *EHandler) +void MCStreamer::EmitWin64EHStartProc(MCSymbol *Symbol, MCSymbol *EHandler) +{ + errs() << "Not implemented yet\n"; + abort(); +} + +void MCStreamer::EmitWin64EHEndProc() { errs() << "Not implemented yet\n"; abort(); @@ -346,7 +352,7 @@ void MCStreamer::EmitWin64EHPushFrame(bool Code) abort(); } -void MCStreamer::EmitWin64EHEndProlog(void) +void MCStreamer::EmitWin64EHEndProlog() { errs() << "Not implemented yet\n"; abort();