ELFObjectReader.h revision d8a752331fe7a30ce41835f139aa8a4c675ad07a
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