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