* Return correct size and alignment for common symbols.

llvm-svn: 165170
diff --git a/lld/lib/ReaderWriter/ELF/ReaderELF.cpp b/lld/lib/ReaderWriter/ELF/ReaderELF.cpp
index 365150a..45b5702 100644
--- a/lld/lib/ReaderWriter/ELF/ReaderELF.cpp
+++ b/lld/lib/ReaderWriter/ELF/ReaderELF.cpp
@@ -237,11 +237,11 @@
 
   virtual uint64_t size() const {
 
-    // Common symbols are not allocated in object files so
-    // their size is zero.
+    // Common symbols are not allocated in object files,
+    // so use st_size to tell how many bytes are required.
     if ((_symbol->getType() == llvm::ELF::STT_COMMON)
         || _symbol->st_shndx == llvm::ELF::SHN_COMMON)
-      return (uint64_t)0;
+      return (uint64_t)_symbol->st_size;
 
     return _contentData.size();
 
@@ -317,7 +317,7 @@
     // constraints in st_value.
     if ((_symbol->getType() == llvm::ELF::STT_COMMON)
         || _symbol->st_shndx == llvm::ELF::SHN_COMMON) {
-      return (Alignment(_symbol->st_value));
+      return Alignment(llvm::Log2_64(_symbol->st_value));
     }
 
     return Alignment(llvm::Log2_64(_section->sh_addralign));