diff options
-rw-r--r-- | lld/lib/ReaderWriter/ELF/ReaderELF.cpp | 8 | ||||
-rw-r--r-- | lld/test/elf/sections.objtxt | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/lld/lib/ReaderWriter/ELF/ReaderELF.cpp b/lld/lib/ReaderWriter/ELF/ReaderELF.cpp index 365150ae9e0..45b57022404 100644 --- a/lld/lib/ReaderWriter/ELF/ReaderELF.cpp +++ b/lld/lib/ReaderWriter/ELF/ReaderELF.cpp @@ -237,11 +237,11 @@ public: 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 @@ public: // 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)); diff --git a/lld/test/elf/sections.objtxt b/lld/test/elf/sections.objtxt index 152c249bba7..929abf25504 100644 --- a/lld/test/elf/sections.objtxt +++ b/lld/test/elf/sections.objtxt @@ -24,7 +24,7 @@ READOBJ: Total: 20 ED: 'e_indent[EI_DATA]', 0x01 ED: 'e_machine', 0x0003 ED: Section 1 -ED: 'sh_addralign', 0x00000002 +ED: 'sh_addralign', 0x00000001 ED: Section 2 ED: 'sh_addralign', 0x00000008 ED: Section 7 |