ELFDynObjReader.h revision d0fbbb227051be16931a1aa9b4a7722ac039c698
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
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) 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