summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSid Manning <sidneym@codeaurora.org>2012-10-03 21:46:48 +0000
committerSid Manning <sidneym@codeaurora.org>2012-10-03 21:46:48 +0000
commit05c82a42dd501cbcc9f0872635bc252133f9227c (patch)
tree83f6f45c6de6c3a8ff675abdea215ce03a4900f8
parent83805259e12b5187b310810af46949896e8930a4 (diff)
downloadbcm5719-llvm-05c82a42dd501cbcc9f0872635bc252133f9227c.tar.gz
bcm5719-llvm-05c82a42dd501cbcc9f0872635bc252133f9227c.zip
* Return correct size and alignment for common symbols.
llvm-svn: 165170
-rw-r--r--lld/lib/ReaderWriter/ELF/ReaderELF.cpp8
-rw-r--r--lld/test/elf/sections.objtxt2
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
OpenPOWER on IntegriCloud