summaryrefslogtreecommitdiffstats
path: root/lld/ELF/SymbolTable.cpp
diff options
context:
space:
mode:
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