Produce ELF::R_386_GOTPC relocations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116728 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp
index 45e9c3b..2eb6208 100644
--- a/lib/MC/ELFObjectWriter.cpp
+++ b/lib/MC/ELFObjectWriter.cpp
@@ -707,7 +707,12 @@
           break;
         }
         break;
-      case FK_Data_4: Type = ELF::R_386_32; break;
+      case FK_Data_4:
+        if (Symbol->getName() == "_GLOBAL_OFFSET_TABLE_")
+          Type = ELF::R_386_GOTPC;
+        else
+          Type = ELF::R_386_32;
+        break;
       case FK_Data_2: Type = ELF::R_386_16; break;
       case X86::reloc_pcrel_1byte:
       case FK_Data_1: Type = ELF::R_386_8; break;