ELFObjectReader.h revision 5460a1f25d9ddecb5c70667267d66d51af177a99
1//===- ELFObjectReader.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_OBJECT_READER_H 10#define MCLD_ELF_OBJECT_READER_H 11#ifdef ENABLE_UNITTEST 12#include <gtest.h> 13#endif 14 15#include <mcld/LD/ObjectReader.h> 16#include <llvm/Support/system_error.h> 17 18namespace mcld 19{ 20 21class Input; 22class MCLinker; 23class GNULDBackend; 24class ELFReaderIF; 25 26/** \lclass ELFObjectReader 27 * \brief ELFObjectReader reads target-independent parts of ELF object file 28 */ 29class ELFObjectReader : public ObjectReader 30{ 31public: 32 ELFObjectReader(GNULDBackend& pBackend, MCLinker& pLinker); 33 34 ~ELFObjectReader(); 35 36 // ----- observers ----- // 37 bool isMyFormat(Input &pFile) const; 38 39 // ----- readers ----- // 40 bool readObject(Input& pFile); 41 42 virtual bool readSections(Input& pFile); 43 44 virtual bool readSymbols(Input& pFile); 45 46 /// readRelocations - read relocation sections 47 /// 48 /// This function should be called after symbol resolution. 49 virtual bool readRelocations(Input& pFile); 50 51private: 52 ELFReaderIF* m_pELFReader; 53 MCLinker& m_Linker; 54}; 55 56} // namespace of mcld 57 58#endif 59 60