ELFDynObjReader.h revision f33f6de54db174aa679a4b6d1e040d37e95541c0
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_LD_ELFDYNOBJREADER_H
10#define MCLD_LD_ELFDYNOBJREADER_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
17namespace mcld {
18
19class Input;
20class LinkerConfig;
21class IRBuilder;
22class GNULDBackend;
23class ELFReaderIF;
24
25/** \class ELFDynObjReader
26 *  \brief ELFDynObjReader reads ELF dynamic shared objects.
27 *
28 */
29class ELFDynObjReader : public DynObjReader
30{
31public:
32  ELFDynObjReader(GNULDBackend& pBackend,
33                  IRBuilder& pBuilder,
34                  const LinkerConfig& pConfig);
35  ~ELFDynObjReader();
36
37  // -----  observers  ----- //
38  bool isMyFormat(Input &pFile, bool &pContinue) const;
39
40  // -----  readers  ----- //
41  bool readHeader(Input& pFile);
42
43  bool readSymbols(Input& pInput);
44
45private:
46  ELFReaderIF *m_pELFReader;
47  IRBuilder& m_Builder;
48};
49
50} // namespace of mcld
51
52#endif
53
54