class MCSymbol;
class MCContext;
+namespace WinEH {
+enum class EncodingType {
+ ET_Invalid, /// Invalid
+ ET_Alpha, /// Windows Alpha
+ ET_Alpha64, /// Windows AXP64
+ ET_ARM, /// Windows NT (Windows on ARM)
+ ET_CE, /// Windows CE ARM, PowerPC, SH3, SH4
+ ET_Itanium, /// Windows x64, Windows Itanium (IA-64)
+ ET_MIPS = ET_Alpha,
+};
+}
+
namespace ExceptionHandling {
enum ExceptionsType { None, DwarfCFI, SjLj, ARM, Win64 };
}
/// false.
bool SupportsDebugInformation;
- /// True if target supports exception handling. Defaults to None
+ /// Exception handling format for the target. Defaults to None.
ExceptionHandling::ExceptionsType ExceptionsType;
+ /// Windows exception handling data (.pdata) encoding. Defaults to Invalid.
+ WinEH::EncodingType WinEHEncodingType;
+
/// True if Dwarf2 output generally uses relocations for references to other
/// .debug_* sections.
bool DwarfUsesRelocationsAcrossSections;
ExceptionHandling::ExceptionsType getExceptionHandlingType() const {
return ExceptionsType;
}
+ WinEH::EncodingType getWinEHEncodingType() const {
+ return WinEHEncodingType;
+ }
bool isExceptionHandlingDwarf() const {
return (ExceptionsType == ExceptionHandling::DwarfCFI ||
ExceptionsType == ExceptionHandling::ARM ||
HasLEB128 = false;
SupportsDebugInformation = false;
ExceptionsType = ExceptionHandling::None;
+ WinEHEncodingType = WinEH::EncodingType::ET_Invalid;
DwarfUsesRelocationsAcrossSections = true;
DwarfFDESymbolsUseAbsDiff = false;
DwarfRegNumForCFI = false;
// - MCAsmInfoDarwin is handling this case
// - Generic_GCC toolchains enable the integrated assembler on a per
// architecture basis.
- // - The target subclasses for AArch64, ARM, and X86 handle these cases
+ // - The target subclasses for AArch64, ARM, and X86 handle these cases
UseIntegratedAssembler = false;
CompressDebugSections = false;