summaryrefslogtreecommitdiffstats
path: root/lld/ELF/SymbolTable.cpp
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2015-09-08 22:34:57 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2015-09-08 22:34:57 +0000
commit546c64c733dd040f905d76e00deb8b07419f560d (patch)
treeec7b42995461592ef4c20309495f6fd387b2a46c /lld/ELF/SymbolTable.cpp
parent07f3af2e82ef9178fa2251552200850efc1aeea6 (diff)
downloadbcm5719-llvm-546c64c733dd040f905d76e00deb8b07419f560d.tar.gz
bcm5719-llvm-546c64c733dd040f905d76e00deb8b07419f560d.zip
[lld][elf2] Fix hard coded entry address.
llvm-svn: 247089
Diffstat (limited to 'lld/ELF/SymbolTable.cpp')
-rw-r--r--lld/ELF/SymbolTable.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp
index e66a399084e..e62297271ed 100644
--- a/lld/ELF/SymbolTable.cpp
+++ b/lld/ELF/SymbolTable.cpp
@@ -17,7 +17,7 @@ using namespace llvm::object;
using namespace lld;
using namespace lld::elf2;
-SymbolTable::SymbolTable() {
+SymbolTable::SymbolTable() : EntrySym(nullptr) {
}
void SymbolTable::addFile(std::unique_ptr<InputFile> File) {
@@ -33,8 +33,10 @@ void SymbolTable::addFile(std::unique_ptr<InputFile> File) {
}
template <class ELFT> void SymbolTable::init() {
- resolve<ELFT>(new (Alloc)
- Undefined<ELFT>("_start", Undefined<ELFT>::Synthetic));
+ if (EntrySym)
+ return;
+ EntrySym = new (Alloc) Undefined<ELFT>("_start", Undefined<ELFT>::Synthetic);
+ resolve<ELFT>(EntrySym);
}
template <class ELFT> void SymbolTable::addELFFile(ELFFileBase *File) {
OpenPOWER on IntegriCloud