ELFObjectWriter.h revision d0fbbb227051be16931a1aa9b4a7722ac039c698
15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- ELFObjectWriter.h --------------------------------------------------===//
25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//                     The MCLinker Project
45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source
65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details.
75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===//
95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifndef MCLD_ELF_OBJECT_WRITER_H
105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define MCLD_ELF_OBJECT_WRITER_H
115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifdef ENABLE_UNITTEST
125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <gtest.h>
135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif
145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/ObjectWriter.h>
155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/ELFWriter.h>
165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
17d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao#include <llvm/Support/system_error.h>
18d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
1922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaonamespace mcld {
205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass Module;
22d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaoclass LinkerConfig;
2322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass MemoryArea;
245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass GNULDBackend;
255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/** \class ELFObjectWriter
275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  \brief ELFObjectWriter writes the target-independent parts of object files.
285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  ELFObjectWriter reads a MCLDFile and writes into raw_ostream
295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *
305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */
315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass ELFObjectWriter : public ObjectWriter, protected ELFWriter
325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic:
34d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao  ELFObjectWriter(GNULDBackend& pBackend,
35d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao                  const LinkerConfig& pConfig);
365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  ~ELFObjectWriter();
385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  llvm::error_code writeObject(Module& pModule, MemoryArea& pOutput);
405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoprivate:
42d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao  const LinkerConfig& m_Config;
435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao};
445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld
465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif
48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
49