ELFObjectWriter.h revision 22add6ff3426df1a85089fe6a6e1597ee3b6f300
1//===- ELFObjectWriter.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_WRITER_H
10#define MCLD_ELF_OBJECT_WRITER_H
11#ifdef ENABLE_UNITTEST
12#include <gtest.h>
13#endif
14#include <llvm/Support/system_error.h>
15#include <mcld/LD/ObjectWriter.h>
16#include <mcld/LD/ELFWriter.h>
17
18namespace mcld {
19
20class Module;
21class MemoryArea;
22class FragmentLinker;
23class GNULDBackend;
24
25/** \class ELFObjectWriter
26 *  \brief ELFObjectWriter writes the target-independent parts of object files.
27 *  ELFObjectWriter reads a MCLDFile and writes into raw_ostream
28 *
29 */
30class ELFObjectWriter : public ObjectWriter, protected ELFWriter
31{
32public:
33  ELFObjectWriter(GNULDBackend& pBackend, FragmentLinker& pLinker);
34
35  ~ELFObjectWriter();
36
37  llvm::error_code writeObject(Module& pModule, MemoryArea& pOutput);
38
39private:
40  FragmentLinker& m_Linker;
41};
42
43} // namespace of mcld
44
45#endif
46
47