[elf2] Relocate against common symbols.

llvm-svn: 248054
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index b2d7611..3342da9 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -738,8 +738,11 @@
     case SymbolBody::DefinedAbsoluteKind:
       SymVA = cast<DefinedAbsolute<ELFT>>(Body)->Sym.st_value;
       break;
-    case SymbolBody::DefinedCommonKind:
-      continue;
+    case SymbolBody::DefinedCommonKind: {
+      auto *DC = cast<DefinedCommon<ELFT>>(Body);
+      SymVA = DC->OutputSec->getVA() + DC->OffsetInBSS;
+      break;
+    }
     case SymbolBody::SharedKind:
       if (!relocNeedsGOT(Type))
         continue;
@@ -1063,6 +1066,7 @@
     uintX_t Align = C->MaxAlignment;
     Off = RoundUpToAlignment(Off, Align);
     C->OffsetInBSS = Off;
+    C->OutputSec = BSSSec;
     Off += Sym.st_size;
   }