private:
virtual void addDefaultAtoms();
- virtual void addFiles(InputFiles&);
+ virtual void addFiles(InputFiles &);
virtual void finalizeDefaultAtomValues();
-
+ virtual void createDefaultSections();
+ LLD_UNIQUE_BUMP_PTR(InterpSection<ELFT>) _interpSection;
CRuntimeFile<ELFT> _runtimeFile;
};
this->_targetHandler.addFiles(inputFiles);
}
+template <class ELFT> void ExecutableWriter<ELFT>::createDefaultSections() {
+ OutputELFWriter<ELFT>::createDefaultSections();
+ if (this->_targetInfo.isDynamic()) {
+ _interpSection.reset(new (this->_alloc) InterpSection<ELFT>(
+ this->_targetInfo, ".interp", DefaultLayout<ELFT>::ORDER_INTERP,
+ this->_targetInfo.getInterpreter()));
+ this->_layout->addSection(_interpSection.get());
+ }
+}
+
/// Finalize the value of all the absolute symbols that we
/// created
-template<class ELFT>
-void ExecutableWriter<ELFT>::finalizeDefaultAtomValues() {
+template <class ELFT> void ExecutableWriter<ELFT>::finalizeDefaultAtomValues() {
auto bssStartAtomIter = this->_layout->findAbsoluteAtom("__bss_start");
auto bssEndAtomIter = this->_layout->findAbsoluteAtom("__bss_end");
auto underScoreEndAtomIter = this->_layout->findAbsoluteAtom("_end");
LLD_UNIQUE_BUMP_PTR(DynamicTable<ELFT>) _dynamicTable;
LLD_UNIQUE_BUMP_PTR(DynamicSymbolTable<ELFT>) _dynamicSymbolTable;
LLD_UNIQUE_BUMP_PTR(StringTable<ELFT>) _dynamicStringTable;
- LLD_UNIQUE_BUMP_PTR(InterpSection<ELFT>) _interpSection;
LLD_UNIQUE_BUMP_PTR(HashSection<ELFT>) _hashTable;
llvm::StringSet<> _soNeeded;
/// @}
true));
_dynamicSymbolTable.reset(new (_alloc) DynamicSymbolTable<ELFT>(
_targetInfo, ".dynsym", DefaultLayout<ELFT>::ORDER_DYNAMIC_SYMBOLS));
- _interpSection.reset(new (_alloc) InterpSection<ELFT>(
- _targetInfo, ".interp", DefaultLayout<ELFT>::ORDER_INTERP,
- _targetInfo.getInterpreter()));
_hashTable.reset(new (_alloc) HashSection<ELFT>(
_targetInfo, ".hash", DefaultLayout<ELFT>::ORDER_HASH));
_layout->addSection(_dynamicTable.get());
_layout->addSection(_dynamicStringTable.get());
_layout->addSection(_dynamicSymbolTable.get());
- _layout->addSection(_interpSection.get());
_layout->addSection(_hashTable.get());
_dynamicSymbolTable->setStringSection(_dynamicStringTable.get());
if (_layout->hasDynamicRelocationTable())