blob: f5d330fbeb22f9fb6715778e6356acf37893869e [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//===- MCTargetOptions.h - MC Target Options --------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
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 LLVM_MC_MCTARGETOPTIONS_H
11#define LLVM_MC_MCTARGETOPTIONS_H
12
13#include <string>
14#include <vector>
15
16namespace llvm {
17
18enum class ExceptionHandling {
19 None, /// No exception support
20 DwarfCFI, /// DWARF-like instruction based exceptions
21 SjLj, /// setjmp/longjmp based exceptions
22 ARM, /// ARM EHABI
23 WinEH, /// Windows Exception Handling
24 Wasm, /// WebAssembly Exception Handling
25};
26
27enum class DebugCompressionType {
28 None, /// No compression
29 GNU, /// zlib-gnu style compression
30 Z, /// zlib style complession
31};
32
33class StringRef;
34
35class MCTargetOptions {
36public:
37 enum AsmInstrumentation {
38 AsmInstrumentationNone,
39 AsmInstrumentationAddress
40 };
41
42 /// Enables AddressSanitizer instrumentation at machine level.
43 bool SanitizeAddress : 1;
44
45 bool MCRelaxAll : 1;
46 bool MCNoExecStack : 1;
47 bool MCFatalWarnings : 1;
48 bool MCNoWarn : 1;
49 bool MCNoDeprecatedWarn : 1;
50 bool MCSaveTempLabels : 1;
51 bool MCUseDwarfDirectory : 1;
52 bool MCIncrementalLinkerCompatible : 1;
53 bool MCPIECopyRelocations : 1;
54 bool ShowMCEncoding : 1;
55 bool ShowMCInst : 1;
56 bool AsmVerbose : 1;
57
58 /// Preserve Comments in Assembly.
59 bool PreserveAsmComments : 1;
60
61 int DwarfVersion = 0;
62
63 std::string ABIName;
64 std::string SplitDwarfFile;
65
66 /// Additional paths to search for `.include` directives when using the
67 /// integrated assembler.
68 std::vector<std::string> IASSearchPaths;
69
70 MCTargetOptions();
71
72 /// getABIName - If this returns a non-empty string this represents the
73 /// textual name of the ABI that we want the backend to use, e.g. o32, or
74 /// aapcs-linux.
75 StringRef getABIName() const;
76};
77
78} // end namespace llvm
79
80#endif // LLVM_MC_MCTARGETOPTIONS_H