[LLD][COFF] Add load config checks to warn if incorrect for CFGuard
Control Flow Guard requires specific flags and VA's be included in the load config directory to be functional. In case CFGuard is enabled via linker flags, we can check to make sure this is the case and give the user a warning if otherwise. MSVC provides a proper `_load_config_used` by default, so this is more relevant for the MinGW target in which current versions of mingw-w64 does not provide this symbol. The checks (only if CFGuard is enabled) include: - The `_load_config_used` struct shall exist. - Alignment of the `_load_config_used` struct (shall be aligned to pointer size.) - The `_load_config_used` struct shall be large enough to contain the required fields. - The values of the following fields are checked against the expected values: - GuardCFFunctionTable - GuardCFFunctionCount - GuardFlags - GuardAddressTakenIatEntryTable - GuardAddressTakenIatEntryCount - GuardLongJumpTargetTable - GuardLongJumpTargetCount - GuardEHContinuationTable - GuardEHContinuationCount Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D133099
Loading
Please sign in to comment