blob: e0b6b20e3773975eb0898377768bcdf060224b82 [file] [log] [blame]
Rui Ueyama411c63602015-05-28 19:09:30 +00001//===- Config.h -----------------------------------------------------------===//
2//
3// The LLVM Linker
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLD_COFF_CONFIG_H
11#define LLD_COFF_CONFIG_H
12
13#include "llvm/ADT/StringRef.h"
Rui Ueyama3d3e6fb2015-05-29 16:06:00 +000014#include "llvm/Object/COFF.h"
Rui Ueyama411c63602015-05-28 19:09:30 +000015#include <cstdint>
16#include <set>
17#include <string>
18
19namespace lld {
20namespace coff {
21
Rui Ueyama15cc47e2015-05-29 16:34:31 +000022using llvm::COFF::WindowsSubsystem;
23
Rui Ueyama411c63602015-05-28 19:09:30 +000024class Configuration {
25public:
Rui Ueyama3d3e6fb2015-05-29 16:06:00 +000026 llvm::COFF::MachineTypes MachineType = llvm::COFF::IMAGE_FILE_MACHINE_AMD64;
Rui Ueyama411c63602015-05-28 19:09:30 +000027 bool Verbose = false;
Rui Ueyama3ee0fe42015-05-31 03:55:46 +000028 WindowsSubsystem Subsystem = llvm::COFF::IMAGE_SUBSYSTEM_UNKNOWN;
Rui Ueyama5cff6852015-05-31 03:34:08 +000029 std::string EntryName;
Rui Ueyamab41b7e52015-05-29 16:21:11 +000030
Rui Ueyama411c63602015-05-28 19:09:30 +000031 uint64_t ImageBase = 0x140000000;
Rui Ueyamab41b7e52015-05-29 16:21:11 +000032 uint64_t StackReserve = 1024 * 1024;
33 uint64_t StackCommit = 4096;
Rui Ueyamac377e9a2015-05-29 16:23:40 +000034 uint64_t HeapReserve = 1024 * 1024;
35 uint64_t HeapCommit = 4096;
Rui Ueyamab9dcdb52015-05-29 16:28:29 +000036 uint32_t MajorImageVersion = 0;
37 uint32_t MinorImageVersion = 0;
Rui Ueyama15cc47e2015-05-29 16:34:31 +000038 uint32_t MajorOSVersion = 6;
39 uint32_t MinorOSVersion = 0;
Rui Ueyama411c63602015-05-28 19:09:30 +000040
41 bool insertFile(llvm::StringRef Path) {
42 return VisitedFiles.insert(Path.lower()).second;
43 }
44
45private:
46 std::set<std::string> VisitedFiles;
47};
48
49extern Configuration *Config;
50
51} // namespace coff
52} // namespace lld
53
54#endif