[lld] r178467 - [ELF][Hexagon] Create .got.plt entries with the appropriate alignment
Shankar Easwaran
shankare at codeaurora.org
Mon Apr 1 08:14:34 PDT 2013
Author: shankare
Date: Mon Apr 1 10:14:34 2013
New Revision: 178467
URL: http://llvm.org/viewvc/llvm-project?rev=178467&view=rev
Log:
[ELF][Hexagon] Create .got.plt entries with the appropriate alignment
Modified:
lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h
lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicAtoms.h
lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp
lld/trunk/test/elf/Hexagon/dynlib-gotoff.test
lld/trunk/test/elf/Hexagon/dynlib-hash.test
lld/trunk/test/elf/Hexagon/dynlib-syms.test
Modified: lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h?rev=178467&r1=178466&r2=178467&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h Mon Apr 1 10:14:34 2013
@@ -54,6 +54,9 @@ void DynamicLibraryWriter<ELFT>::buildDy
atom->_virtualAddr, atom);
}
+ for (const UndefinedAtom *a : file.undefined())
+ this->_dynamicSymbolTable->addSymbol(a, ELF::SHN_UNDEF);
+
OutputELFWriter<ELFT>::buildDynamicSymbolTable(file);
}
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicAtoms.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicAtoms.h?rev=178467&r1=178466&r2=178467&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicAtoms.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicAtoms.h Mon Apr 1 10:14:34 2013
@@ -17,27 +17,29 @@ namespace lld {
namespace elf {
class HexagonGOTAtom : public GOTAtom {
- static const uint8_t _defaultContent[8];
+ static const uint8_t _defaultContent[4];
public:
HexagonGOTAtom(const File &f) : GOTAtom(f, ".got") {}
virtual ArrayRef<uint8_t> rawContent() const {
- return ArrayRef<uint8_t>(_defaultContent, 8);
+ return ArrayRef<uint8_t>(_defaultContent, 4);
}
virtual Alignment alignment() const { return Alignment(2); }
};
class HexagonGOTPLTAtom : public GOTAtom {
- static const uint8_t _defaultContent[8];
+ static const uint8_t _defaultContent[4];
public:
HexagonGOTPLTAtom(const File &f) : GOTAtom(f, ".got.plt") {}
virtual ArrayRef<uint8_t> rawContent() const {
- return ArrayRef<uint8_t>(_defaultContent, 8);
+ return ArrayRef<uint8_t>(_defaultContent, 4);
}
+
+ virtual Alignment alignment() const { return Alignment(2); }
};
class HexagonGOTPLT0Atom : public GOTAtom {
@@ -49,10 +51,12 @@ public:
virtual ArrayRef<uint8_t> rawContent() const {
return ArrayRef<uint8_t>(_defaultContent, 16);
}
+
+ virtual Alignment alignment() const { return Alignment(3); }
};
-const uint8_t HexagonGOTAtom::_defaultContent[8] = { 0 };
-const uint8_t HexagonGOTPLTAtom::_defaultContent[8] = { 0 };
+const uint8_t HexagonGOTAtom::_defaultContent[4] = { 0 };
+const uint8_t HexagonGOTPLTAtom::_defaultContent[4] = { 0 };
const uint8_t HexagonGOTPLT0Atom::_defaultContent[16] = { 0 };
class HexagonPLTAtom : public PLTAtom {
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp?rev=178467&r1=178466&r2=178467&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp Mon Apr 1 10:14:34 2013
@@ -38,6 +38,7 @@ template <class Derived> class GOTPLTPas
void handleReference(const DefinedAtom &atom, const Reference &ref) {
switch (ref.kind()) {
case R_HEX_PLT_B22_PCREL:
+ case R_HEX_B22_PCREL:
static_cast<Derived *>(this)->handlePLT32(ref);
break;
case R_HEX_GOT_LO16:
Modified: lld/trunk/test/elf/Hexagon/dynlib-gotoff.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib-gotoff.test?rev=178467&r1=178466&r2=178467&view=diff
==============================================================================
--- lld/trunk/test/elf/Hexagon/dynlib-gotoff.test (original)
+++ lld/trunk/test/elf/Hexagon/dynlib-gotoff.test Mon Apr 1 10:14:34 2013
@@ -10,7 +10,7 @@ CHECKGOTPLT: alignment: 2^3
CHECKGOTPLT: section-name: .got.plt
- name: __got_c
CHECKGOTPLT: type: got
-CHECKGOTPLT: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]
+CHECKGOTPLT: content: [ 00, 00, 00, 00 ]
CHECKGOTPLT: alignment: 2^2
CHECKGOTPLT: section-name: .got
CHECKGOTPLT: permissions: rw-
@@ -20,7 +20,7 @@ CHECKGOTPLT: offset: 0
CHECKGOTPLT: target: c
- name: __got_shankar
CHECKGOTPLT: type: got
-CHECKGOTPLT: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]
+CHECKGOTPLT: content: [ 00, 00, 00, 00 ]
CHECKGOTPLT: alignment: 2^2
CHECKGOTPLT: section-name: .got
CHECKGOTPLT: permissions: rw-
@@ -30,8 +30,8 @@ CHECKGOTPLT: offset: 0
CHECKGOTPLT: target: shankar
- name: __got_fn
CHECKGOTPLT: type: got
-CHECKGOTPLT: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]
-CHECKGOTPLT: alignment: 2^3
+CHECKGOTPLT: content: [ 00, 00, 00, 00 ]
+CHECKGOTPLT: alignment: 2^2
CHECKGOTPLT: section-name: .got.plt
CHECKGOTPLT: permissions: rw-
CHECKGOTPLT: references:
@@ -43,8 +43,8 @@ CHECKGOTPLT: offset: 0
target: .PLT0
- name: __got_fn1
CHECKGOTPLT: type: got
-CHECKGOTPLT: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]
-CHECKGOTPLT: alignment: 2^3
+CHECKGOTPLT: content: [ 00, 00, 00, 00 ]
+CHECKGOTPLT: alignment: 2^2
CHECKGOTPLT: section-name: .got.plt
CHECKGOTPLT: permissions: rw-
CHECKGOTPLT: references:
@@ -56,8 +56,8 @@ CHECKGOTPLT: offset: 0
target: .PLT0
- name: __got_fn2
CHECKGOTPLT: type: got
-CHECKGOTPLT: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]
-CHECKGOTPLT: alignment: 2^3
+CHECKGOTPLT: content: [ 00, 00, 00, 00 ]
+CHECKGOTPLT: alignment: 2^2
CHECKGOTPLT: section-name: .got.plt
CHECKGOTPLT: permissions: rw-
CHECKGOTPLT: references:
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=178467&r1=178466&r2=178467&view=diff
==============================================================================
--- lld/trunk/test/elf/Hexagon/dynlib-hash.test (original)
+++ lld/trunk/test/elf/Hexagon/dynlib-hash.test Mon Apr 1 10:14:34 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 06000000 05000000 01000000 ................
-CHECKHASH: 00c4 04000000 00000000 00000000 00000000 ................
-CHECKHASH: 00d4 00000000 03000000 02000000 ............
+CHECKHASH: 00b4 03000000 07000000 06000000 01000000 ................
+CHECKHASH: 00c4 04000000 00000000 00000000 00000000 ................
+CHECKHASH: 00d4 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=178467&r1=178466&r2=178467&view=diff
==============================================================================
--- lld/trunk/test/elf/Hexagon/dynlib-syms.test (original)
+++ lld/trunk/test/elf/Hexagon/dynlib-syms.test Mon Apr 1 10:14:34 2013
@@ -3,6 +3,6 @@ RUN: -output=%t -output=%t -noinhibit-ex
RUN: llvm-nm -n -s %t > %t1
RUN: FileCheck -check-prefix=CHECKSYMS %s < %t1
-CHECKSYMS: 00000288 A _DYNAMIC
-CHECKSYMS: 00001010 A _GLOBAL_OFFSET_TABLE_
+CHECKSYMS: 000002a8 A _DYNAMIC
+CHECKSYMS: 00001008 A _GLOBAL_OFFSET_TABLE_
CHECKSYMS: 00002000 A _SDA_BASE_
More information about the llvm-commits
mailing list