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
This commit is contained in:
Kevin Enderby 2013-08-29 00:19:03 +00:00
parent c08bd51181
commit e54726a87a
2 changed files with 11 additions and 1 deletions

View File

@ -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");
}
}
}

View File

@ -0,0 +1,5 @@
// RUN: not llvm-mc -triple x86_64-apple-darwin10 %s -filetype=obj -o - 2> %t.err > %t
// RUN: FileCheck --check-prefix=CHECK-ERROR < %t.err %s
mov $_f, %rsi
// CHECK-ERROR: 32-bit absolute addressing is not supported in 64-bit mode