[lld] r190610 - [lld][ELF] Fix vaddr of the first section
Shankar Easwaran
shankare at codeaurora.org
Thu Sep 12 08:43:18 PDT 2013
Author: shankare
Date: Thu Sep 12 10:43:17 2013
New Revision: 190610
URL: http://llvm.org/viewvc/llvm-project?rev=190610&view=rev
Log:
[lld][ELF] Fix vaddr of the first section
The first section in the output was not aligned to the alignment of the section.
Modified:
lld/trunk/lib/ReaderWriter/ELF/Atoms.h
lld/trunk/lib/ReaderWriter/ELF/Chunk.h
lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h
lld/trunk/test/elf/Hexagon/dynlib-hash.test
lld/trunk/test/elf/Hexagon/dynlib-syms.test
Modified: lld/trunk/lib/ReaderWriter/ELF/Atoms.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Atoms.h?rev=190610&r1=190609&r2=190610&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Atoms.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Atoms.h Thu Sep 12 10:43:17 2013
@@ -314,6 +314,7 @@ public:
break;
case (llvm::ELF::SHF_MERGE|llvm::ELF::SHF_STRINGS):
case llvm::ELF::SHF_STRINGS:
+ case llvm::ELF::SHF_MERGE:
ret = typeConstant;
break;
default:
Modified: lld/trunk/lib/ReaderWriter/ELF/Chunk.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Chunk.h?rev=190610&r1=190609&r2=190610&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Chunk.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Chunk.h Thu Sep 12 10:43:17 2013
@@ -51,8 +51,9 @@ public:
StringRef name() const { return _name; }
// Kind of chunk
Kind kind() const { return _kind; }
- uint64_t fileSize() const { return _fsize; }
- uint64_t align2() const { return _align2; }
+ uint64_t fileSize() const { return _fsize; }
+ void setAlign(uint64_t align) { _align2 = align; }
+ uint64_t align2() const { return _align2; }
// The ordinal value of the chunk
uint64_t ordinal() const { return _ordinal;}
Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=190610&r1=190609&r2=190610&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h Thu Sep 12 10:43:17 2013
@@ -705,6 +705,7 @@ DefaultLayout<ELFT>::assignVirtualAddres
for (auto si : _segments) {
if (si->segmentType() == llvm::ELF::PT_LOAD) {
firstLoadSegment = si;
+ si->firstSection()->setAlign(si->align2());
break;
}
}
Modified: lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h?rev=190610&r1=190609&r2=190610&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h Thu Sep 12 10:43:17 2013
@@ -270,6 +270,8 @@ public:
return _segmentSlices.end();
}
+ Chunk<ELFT> *firstSection() { return _sections[0]; }
+
private:
/// \brief Check if the chunk needs to be aligned
Modified: lld/trunk/test/elf/Hexagon/dynlib-hash.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib-hash.test?rev=190610&r1=190609&r2=190610&view=diff
==============================================================================
--- lld/trunk/test/elf/Hexagon/dynlib-hash.test (original)
+++ lld/trunk/test/elf/Hexagon/dynlib-hash.test Thu Sep 12 10:43:17 2013
@@ -4,6 +4,6 @@ RUN: llvm-objdump -s %t > %t1
RUN: FileCheck -check-prefix=CHECKHASH %s < %t1
CHECKHASH: Contents of section .hash:
-CHECKHASH: 00b4 03000000 07000000 06000000 01000000 ................
-CHECKHASH: 00c4 04000000 00000000 00000000 00000000 ................
-CHECKHASH: 00d4 00000000 03000000 02000000 05000000 ................
+CHECKHASH: 00c0 03000000 07000000 06000000 01000000 ................
+CHECKHASH: 00d0 04000000 00000000 00000000 00000000 ................
+CHECKHASH: 00e0 00000000 03000000 02000000 05000000 ................
Modified: lld/trunk/test/elf/Hexagon/dynlib-syms.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib-syms.test?rev=190610&r1=190609&r2=190610&view=diff
==============================================================================
--- lld/trunk/test/elf/Hexagon/dynlib-syms.test (original)
+++ lld/trunk/test/elf/Hexagon/dynlib-syms.test Thu Sep 12 10:43:17 2013
@@ -3,6 +3,6 @@ RUN: -o %t --noinhibit-exec -shared
RUN: llvm-nm -n -s %t > %t1
RUN: FileCheck -check-prefix=CHECKSYMS %s < %t1
-CHECKSYMS: 000002a8 A _DYNAMIC
+CHECKSYMS: 000002b8 A _DYNAMIC
CHECKSYMS: 00001008 A _GLOBAL_OFFSET_TABLE_
CHECKSYMS: 00002000 A _SDA_BASE_
More information about the llvm-commits
mailing list