cl::desc("Apply forward-edge control-flow integrity"),
cl::init(false));
-cl::opt<bool>
-CFIEnforcing("cfi-enforcing",
- cl::desc("Enforce CFI or pass the violation to a function."),
- cl::init(false));
-
// Note that this option is linked to the cfi-enforcing option above: if
// cfi-enforcing is set, then the cfi-func-name option is entirely ignored. If
// cfi-enforcing is false and no cfi-func-name is set, then a default function
Options.MCOptions = InitMCTargetOptionsFromFlags();
Options.JTType = JTableType;
Options.FCFI = FCFI;
- Options.CFIEnforcing = CFIEnforcing;
- Options.CFIFuncName = CFIFuncName;
Options.ThreadModel = TMModel;
TrapFuncName(), FloatABIType(FloatABI::Default),
AllowFPOpFusion(FPOpFusion::Standard), JTType(JumpTable::Single),
FCFI(false), ThreadModel(ThreadModel::POSIX),
- CFIEnforcing(false), CFIFuncName() {}
+ CFIFuncName() {}
/// PrintMachineCode - This flag is enabled when the -print-machineinstrs
/// option is specified on the command line, and should enable debugging
/// for things like atomics
ThreadModel::Model ThreadModel;
- /// CFIEnforcing - This flags controls whether or not CFI violations cause
- /// the program to halt.
- bool CFIEnforcing;
-
/// getCFIFuncName - If this returns a non-empty string, then this is the
/// name of the function that will be called for each CFI violation in
/// non-enforcing mode.
ARE_EQUAL(JTType) &&
ARE_EQUAL(FCFI) &&
ARE_EQUAL(ThreadModel) &&
- ARE_EQUAL(CFIEnforcing) &&
ARE_EQUAL(CFIFuncName) &&
ARE_EQUAL(MCOptions);
#undef ARE_EQUAL
}
/// getCFIFuncName - If this returns a non-empty string, then it is the name of
-/// the function that gets called on CFI violations in CFI non-enforcing mode
-/// (!TargetOptions::CFIEnforcing).
+/// the function that gets called on CFI violations in CFI non-enforcing mode.
StringRef TargetOptions::getCFIFuncName() const {
return CFIFuncName;
}