summaryrefslogtreecommitdiff
path: root/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2013-08-29 00:19:03 +0000
committerKevin Enderby <enderby@apple.com>2013-08-29 00:19:03 +0000
commite54726a87a49e3254696b05787f4635dc59fe750 (patch)
tree0ea1260c236a33808143f67fd8aa10365ebd1875 /lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
parentc08bd51181bd9df392065baa40586aabf94fa80f (diff)
downloadllvm-e54726a87a49e3254696b05787f4635dc59fe750.tar.gz
llvm-e54726a87a49e3254696b05787f4635dc59fe750.tar.bz2
llvm-e54726a87a49e3254696b05787f4635dc59fe750.tar.xz
The darwin integrated assembler for X86 in 64-bit mode is not rejecting
32-bit absolute addressing in instructions likei this: mov $_f, %rsi which is not supported in 64-bit mode. rdar://8827134 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189543 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp')
-rw-r--r--lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp b/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
index 6eff224e26..9db4cabb1c 100644
--- a/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
+++ b/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
@@ -323,8 +323,13 @@ void X86MachObjectWriter::RecordX86_64Relocation(MachObjectWriter *Writer,
report_fatal_error("TLVP symbol modifier should have been rip-rel");
} else if (Modifier != MCSymbolRefExpr::VK_None)
report_fatal_error("unsupported symbol modifier in relocation");
- else
+ else {
Type = macho::RIT_X86_64_Unsigned;
+ unsigned Kind = Fixup.getKind();
+ if (Kind == X86::reloc_signed_4byte)
+ report_fatal_error("32-bit absolute addressing is not supported in "
+ "64-bit mode");
+ }
}
}