1 //===- ELFDynObjReader.h --------------------------------------------------===// 2 // 3 // The MCLinker Project 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 #ifndef MCLD_ELF_DYNAMIC_SHARED_OBJECT_READER_H 10 #define MCLD_ELF_DYNAMIC_SHARED_OBJECT_READER_H 11 #ifdef ENABLE_UNITTEST 12 #include <gtest.h> 13 #endif 14 #include <mcld/LD/DynObjReader.h> 15 #include <llvm/Support/system_error.h> 16 17 namespace mcld { 18 19 class Input; 20 class LinkerConfig; 21 class IRBuilder; 22 class GNULDBackend; 23 class ELFReaderIF; 24 25 /** \class ELFDynObjReader 26 * \brief ELFDynObjReader reads ELF dynamic shared objects. 27 * 28 */ 29 class ELFDynObjReader : public DynObjReader 30 { 31 public: 32 ELFDynObjReader(GNULDBackend& pBackend, 33 IRBuilder& pBuilder, 34 const LinkerConfig& pConfig); 35 ~ELFDynObjReader(); 36 37 // ----- observers ----- // 38 bool isMyFormat(Input &pFile) const; 39 40 // ----- readers ----- // 41 bool readHeader(Input& pFile); 42 43 bool readSymbols(Input& pInput); 44 45 private: 46 ELFReaderIF *m_pELFReader; 47 IRBuilder& m_Builder; 48 }; 49 50 } // namespace of mcld 51 52 #endif 53 54