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