LinkerScript.h revision 22add6ff3426df1a85089fe6a6e1597ee3b6f300
17abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao//===- ScriptOptions.h ----------------------------------------------------===//
27abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao//
37abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao//                     The MCLinker Project
47abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao//
57abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao// This file is distributed under the University of Illinois Open Source
67abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao// License. See LICENSE.TXT for details.
77abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao//
87abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao//===----------------------------------------------------------------------===//
97abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#ifndef MCLD_SCRIPT_OPTIONS_H
107abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#define MCLD_SCRIPT_OPTIONS_H
117abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#ifdef ENABLE_UNITTEST
127abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#include <gtest.h>
137abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#endif
147abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#include <string>
157abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#include <llvm/ADT/StringRef.h>
167abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#include <mcld/ADT/StringEntry.h>
177abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#include <mcld/ADT/StringHash.h>
187abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#include <mcld/ADT/HashTable.h>
197abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao#include <mcld/Object/SectionMap.h>
207abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao
217abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liaonamespace mcld {
227abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao
237abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao/** \class ScriptOptions
247abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao *
257abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao */
267abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liaoclass ScriptOptions
277abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao{
287abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liaopublic:
297abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  typedef HashTable<StringEntry<llvm::StringRef>,
307abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao                    StringHash<ELF>,
317abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao                    StringEntryFactory<llvm::StringRef> > SymbolRenameMap;
327abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao
337abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  typedef HashTable<StringEntry<uint64_t>,
347abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao                    StringHash<ELF>,
357abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao                    StringEntryFactory<uint64_t> > AddressMap;
367abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao
377abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liaopublic:
387abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  ScriptOptions();
397abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao
407abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  ~ScriptOptions();
417abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao
427abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  const SymbolRenameMap& renameMap() const { return m_SymbolRenames; }
437abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  SymbolRenameMap&       renameMap()       { return m_SymbolRenames; }
447abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao
457abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  const AddressMap& addressMap() const { return m_AddressMap; }
467abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  AddressMap&       addressMap()       { return m_AddressMap; }
477abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao
487abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  const SectionMap& sectionMap() const { return m_SectionMap; }
497abe37e4aee38cc79d91dd069a37d7e91d5bef53Shih-wei Liao  SectionMap&       sectionMap()       { return m_SectionMap; }
50
51private:
52  SymbolRenameMap m_SymbolRenames;
53  AddressMap m_AddressMap;
54  SectionMap m_SectionMap;
55};
56
57} // namespace of mcld
58
59#endif
60
61