ELFObjectWriter.h revision affc150dc44fab1911775a49636d0ce85333b634
1f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang//===- ELFObjectWriter.h --------------------------------------------------===//
2f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang//
3f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang//                     The MCLinker Project
4f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang//
5f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang// This file is distributed under the University of Illinois Open Source
6f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang// License. See LICENSE.TXT for details.
7f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang//
8f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang//===----------------------------------------------------------------------===//
9f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#ifndef MCLD_ELF_OBJECT_WRITER_H
10f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#define MCLD_ELF_OBJECT_WRITER_H
11f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#ifdef ENABLE_UNITTEST
12f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#include <gtest.h>
13f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#endif
14f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#include <llvm/Support/system_error.h>
15f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#include <mcld/LD/ObjectWriter.h>
16f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#include <mcld/LD/ELFWriter.h>
17c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang
18c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Changnamespace mcld
19f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang{
20f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang
21f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Changclass Input;
22f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Changclass MCLinker;
23f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Changclass GNULDBackend;
24f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang
25f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang/** \class ELFObjectWriter
26f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang *  \brief ELFObjectWriter writes the target-independent parts of object files.
27f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang *  ELFObjectWriter reads a MCLDFile and writes into raw_ostream
28f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang *
29f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang */
30f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Changclass ELFObjectWriter : public ObjectWriter, protected ELFWriter
31f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang{
32f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Changpublic:
33f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang  ELFObjectWriter(GNULDBackend& pBackend, MCLinker& pLinker);
34f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang
35f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang  ~ELFObjectWriter();
36f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang
37f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang  llvm::error_code writeObject(Output& pOutput)
38f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang  { return llvm::make_error_code(llvm::errc::not_supported); }
39f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang
40f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Changprivate:
41f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang  MCLinker& m_Linker;
42f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang};
43f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang
44f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang} // namespace of mcld
45f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang
46f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#endif
47f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang
48f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang