finish up support for callw: PR7195
authorChris Lattner <sabre@nondot.org>
Wed, 7 Jul 2010 22:35:13 +0000 (22:35 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 7 Jul 2010 22:35:13 +0000 (22:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107826 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MachObjectWriter.cpp
lib/Target/X86/X86MCCodeEmitter.cpp

index fbe068b58ec85dabd7f7a15a0e016c3af3be1c35..7ca09511bdebd2515c3db3a83ce80d0af6c04ec1 100644 (file)
@@ -33,6 +33,7 @@ static unsigned getFixupKindLog2Size(unsigned Kind) {
   default: llvm_unreachable("invalid fixup kind!");
   case X86::reloc_pcrel_1byte:
   case FK_Data_1: return 0;
+  case X86::reloc_pcrel_2byte:
   case FK_Data_2: return 1;
   case X86::reloc_pcrel_4byte:
   case X86::reloc_riprel_4byte:
@@ -47,6 +48,7 @@ static bool isFixupKindPCRel(unsigned Kind) {
   default:
     return false;
   case X86::reloc_pcrel_1byte:
+  case X86::reloc_pcrel_2byte:
   case X86::reloc_pcrel_4byte:
   case X86::reloc_riprel_4byte:
   case X86::reloc_riprel_4byte_movq_load:
index 24c48fdd97950dd40557652379e7f5228b71fb08..af1b4069936b66b0e46f613e561a46ec95f8ccf0 100644 (file)
@@ -201,7 +201,7 @@ EmitImmediate(const MCOperand &DispOp, unsigned Size, MCFixupKind FixupKind,
       FixupKind == MCFixupKind(X86::reloc_riprel_4byte_movq_load))
     ImmOffset -= 4;
   if (FixupKind == MCFixupKind(X86::reloc_pcrel_2byte))
-    ImmOffset -= 4;// FIXME: This should be 2, but 'as' produces an offset of 4.
+    ImmOffset -= 2;
   if (FixupKind == MCFixupKind(X86::reloc_pcrel_1byte))
     ImmOffset -= 1;