Skip to content

Commit

Permalink
Revert: Fix alignment of unwind data.
Browse files Browse the repository at this point in the history
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185790 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
redstar committed Jul 8, 2013
1 parent 113d32c commit 9c411e6
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 238 deletions.
19 changes: 7 additions & 12 deletions lib/MC/MCWin64EH.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,11 +159,11 @@ static void EmitUnwindInfo(MCStreamer &streamer, MCWin64EHUnwindInfo *info) {

MCContext &context = streamer.getContext();
streamer.EmitValueToAlignment(4);
// Upper 3 bits are the version number (currently 1).
uint8_t flags = 0x01;
info->Symbol = context.CreateTempSymbol();
streamer.EmitLabel(info->Symbol);

// Upper 3 bits are the version number (currently 1).
uint8_t flags = 0x01;
if (info->ChainedParent)
flags |= Win64EH::UNW_ChainInfo << 3;
else {
Expand Down Expand Up @@ -199,26 +199,21 @@ static void EmitUnwindInfo(MCStreamer &streamer, MCWin64EHUnwindInfo *info) {
EmitUnwindCode(streamer, info->Begin, inst);
}

// For alignment purposes, the instruction array will always have an even
// number of entries, with the final entry potentially unused (in which case
// the array will be one longer than indicated by the count of unwind codes
// field).
if (numCodes & 1) {
streamer.EmitIntValue(0, 2);
}

if (flags & (Win64EH::UNW_ChainInfo << 3))
EmitRuntimeFunction(streamer, info->ChainedParent);
else if (flags &
((Win64EH::UNW_TerminateHandler|Win64EH::UNW_ExceptionHandler) << 3))
streamer.EmitValue(MCSymbolRefExpr::Create(info->ExceptionHandler,
MCSymbolRefExpr::VK_COFF_IMGREL32,
context), 4);
else if (numCodes == 0) {
else if (numCodes < 2) {
// The minimum size of an UNWIND_INFO struct is 8 bytes. If we're not
// a chained unwind info, if there is no handler, and if there are fewer
// than 2 slots used in the unwind code array, we have to pad to 8 bytes.
streamer.EmitIntValue(0, 4);
if (numCodes == 1)
streamer.EmitIntValue(0, 2);
else
streamer.EmitIntValue(0, 4);
}
}

Expand Down
65 changes: 0 additions & 65 deletions test/MC/COFF/seh-align1.s

This file was deleted.

78 changes: 0 additions & 78 deletions test/MC/COFF/seh-align2.s

This file was deleted.

83 changes: 0 additions & 83 deletions test/MC/COFF/seh-align3.s

This file was deleted.

0 comments on commit 9c411e6

Please sign in to comment.