1533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//===- ScriptOptions.h ----------------------------------------------------===//
2533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//
3533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//                     The MCLinker Project
4533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//
5533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines// This file is distributed under the University of Illinois Open Source
6533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines// License. See LICENSE.TXT for details.
7533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//
8533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//===----------------------------------------------------------------------===//
9533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#ifndef MCLD_LDLITE_SCRIPT_OPTIONS_H
10533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#define MCLD_LDLITE_SCRIPT_OPTIONS_H
11533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <llvm/Support/CommandLine.h>
12533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <string>
13533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
14533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesnamespace mcld {
15533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
16533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesclass LinkerScript;
17533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
18533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines/** \class ScriptOptions
19533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines *  \brief ScriptOptions are used to modify the default link script. Some
20533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines *  positional options, such as --defsym, also can modify default link script
21533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines *  is not listed here. These special options belong to Positional Options.
22533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines */
23533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesclass ScriptOptions
24533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines{
25533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinespublic:
26533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  ScriptOptions();
27533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
28533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  bool parse(LinkerScript& pScript);
29533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
30533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesprivate:
31533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::list<std::string>& m_WrapList;
32533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::list<std::string>& m_PortList;
33533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::list<std::string>& m_AddressMapList;
34533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<unsigned long long>& m_BssSegAddr;
35533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<unsigned long long>& m_DataSegAddr;
36533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<unsigned long long>& m_TextSegAddr;
37533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines};
38533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
39533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines} // namespace of mcld
40533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
41533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#endif
42533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
43