aboutsummaryrefslogtreecommitdiffstats
path: root/lib/MC/MCWin64EH.cpp
diff options
context:
space:
mode:
authorKai Nacke <kai.nacke@redstar.de>2013-07-08 04:46:55 +0000
committerKai Nacke <kai.nacke@redstar.de>2013-07-08 04:46:55 +0000
commit9611873724b9f8d6cbbed7924c972e8d026cc263 (patch)
tree73be273781db6649c17b07665aa30a7d310efc6e /lib/MC/MCWin64EH.cpp
parent9c411e649e86c1734bc087d0e87208569ae1cb5c (diff)
downloadexternal_llvm-9611873724b9f8d6cbbed7924c972e8d026cc263.zip
external_llvm-9611873724b9f8d6cbbed7924c972e8d026cc263.tar.gz
external_llvm-9611873724b9f8d6cbbed7924c972e8d026cc263.tar.bz2
Revert: Generate IMAGE_REL_AMD64_ADDR32NB relocations for SEH data structures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185791 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCWin64EH.cpp')
-rw-r--r--lib/MC/MCWin64EH.cpp26
1 files changed, 5 insertions, 21 deletions
diff --git a/lib/MC/MCWin64EH.cpp b/lib/MC/MCWin64EH.cpp
index c3d568b..8db1fa2 100644
--- a/lib/MC/MCWin64EH.cpp
+++ b/lib/MC/MCWin64EH.cpp
@@ -128,29 +128,14 @@ static void EmitUnwindCode(MCStreamer &streamer, MCSymbol *begin,
}
}
-static void EmitSymbolRefWithOfs(MCStreamer &streamer,
- const MCSymbol *Base,
- const MCSymbol *Other) {
- MCContext &Context = streamer.getContext();
- const MCSymbolRefExpr *BaseRef = MCSymbolRefExpr::Create(Base, Context);
- const MCSymbolRefExpr *OtherRef = MCSymbolRefExpr::Create(Other, Context);
- const MCExpr *Ofs = MCBinaryExpr::CreateSub(OtherRef, BaseRef, Context);
- const MCSymbolRefExpr *BaseRefRel = MCSymbolRefExpr::Create(Base,
- MCSymbolRefExpr::VK_COFF_IMGREL32,
- Context);
- streamer.EmitValue(MCBinaryExpr::CreateAdd(BaseRefRel, Ofs, Context), 4);
-}
-
static void EmitRuntimeFunction(MCStreamer &streamer,
const MCWin64EHUnwindInfo *info) {
MCContext &context = streamer.getContext();
streamer.EmitValueToAlignment(4);
- EmitSymbolRefWithOfs(streamer, info->Function, info->Begin);
- EmitSymbolRefWithOfs(streamer, info->Function, info->End);
- streamer.EmitValue(MCSymbolRefExpr::Create(info->Symbol,
- MCSymbolRefExpr::VK_COFF_IMGREL32,
- context), 4);
+ streamer.EmitValue(MCSymbolRefExpr::Create(info->Begin, context), 4);
+ streamer.EmitValue(MCSymbolRefExpr::Create(info->End, context), 4);
+ streamer.EmitValue(MCSymbolRefExpr::Create(info->Symbol, context), 4);
}
static void EmitUnwindInfo(MCStreamer &streamer, MCWin64EHUnwindInfo *info) {
@@ -203,9 +188,8 @@ static void EmitUnwindInfo(MCStreamer &streamer, MCWin64EHUnwindInfo *info) {
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);
+ streamer.EmitValue(MCSymbolRefExpr::Create(info->ExceptionHandler, context),
+ 4);
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