[lld] [llvm] [LLD][COFF] Add more variety of CET flags (PR #150761)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Jul 26 06:19:11 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions h,cpp -- lld/COFF/Config.h lld/COFF/Driver.cpp lld/COFF/Writer.cpp llvm/include/llvm/BinaryFormat/COFF.h llvm/tools/llvm-readobj/COFFDumper.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index 8cdadb206..0f064323d 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -2145,13 +2145,14 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
config->integrityCheck =
args.hasFlag(OPT_integritycheck, OPT_integritycheck_no, false);
config->cetCompat = args.hasFlag(OPT_cetcompat, OPT_cetcompat_no, false);
- config->cetCompatStrict = args.hasFlag(OPT_cetcompatstrict, OPT_cetcompatstrict_no, false);
- config->cetCompatIpValidationRelaxed =
- args.hasFlag(OPT_cetipvalidationrelaxed, OPT_cetipvalidationrelaxed_no, false);
- config->cetCompatDynamicApisInProcOnly =
- args.hasFlag(OPT_cetdynamicapisinproc, OPT_cetdynamicapisinproc_no, false);
+ config->cetCompatStrict =
+ args.hasFlag(OPT_cetcompatstrict, OPT_cetcompatstrict_no, false);
+ config->cetCompatIpValidationRelaxed = args.hasFlag(
+ OPT_cetipvalidationrelaxed, OPT_cetipvalidationrelaxed_no, false);
+ config->cetCompatDynamicApisInProcOnly = args.hasFlag(
+ OPT_cetdynamicapisinproc, OPT_cetdynamicapisinproc_no, false);
config->hotpatchCompat =
- args.hasFlag(OPT_hotpatchcompatible, OPT_hotpatchcompatible_no, false);
+ args.hasFlag(OPT_hotpatchcompatible, OPT_hotpatchcompatible_no, false);
config->nxCompat = args.hasFlag(OPT_nxcompat, OPT_nxcompat_no, true);
for (auto *arg : args.filtered(OPT_swaprun))
parseSwaprun(arg->getValue());
diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp
index 5c72cca52..103dd7e39 100644
--- a/lld/COFF/Writer.cpp
+++ b/lld/COFF/Writer.cpp
@@ -1248,21 +1248,22 @@ void Writer::createMiscChunks() {
IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE;
}
if (config->cetCompatIpValidationRelaxed) {
- ex_characteristics_flags |=
+ ex_characteristics_flags |=
IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE;
}
if (config->cetCompatDynamicApisInProcOnly) {
- ex_characteristics_flags |=
+ ex_characteristics_flags |=
IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY;
}
if (config->hotpatchCompat) {
- ex_characteristics_flags |= IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE;
+ ex_characteristics_flags |=
+ IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE;
}
if (ex_characteristics_flags) {
- debugRecords.emplace_back(COFF::IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS,
- make<ExtendedDllCharacteristicsChunk>(
- ex_characteristics_flags));
+ debugRecords.emplace_back(
+ COFF::IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS,
+ make<ExtendedDllCharacteristicsChunk>(ex_characteristics_flags));
}
// Align and add each chunk referenced by the debug data directory.
diff --git a/llvm/include/llvm/BinaryFormat/COFF.h b/llvm/include/llvm/BinaryFormat/COFF.h
index e06fc39b5..64fe2160f 100644
--- a/llvm/include/llvm/BinaryFormat/COFF.h
+++ b/llvm/include/llvm/BinaryFormat/COFF.h
@@ -697,8 +697,10 @@ enum ExtendedDLLCharacteristics : unsigned {
IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT = 0x0001,
/// Image is CET compatible in strict mode
IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE = 0x0002,
- /// Image is CET compatible in such a way that context IP validation is relaxed
- IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE = 0x0004,
+ /// Image is CET compatible in such a way that context IP validation is
+ /// relaxed
+ IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE =
+ 0x0004,
/// Image is CET compatible in such a way that the use of
/// dynamic APIs is restricted to processes only
IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY = 0x0008,
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp
index 2f158e1bb..0f4ce3dca 100644
--- a/llvm/tools/llvm-readobj/COFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/COFFDumper.cpp
@@ -414,14 +414,23 @@ const EnumEntry<COFF::DLLCharacteristics> PEDLLCharacteristics[] = {
static const EnumEntry<COFF::ExtendedDLLCharacteristics>
PEExtendedDLLCharacteristics[] = {
- LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT ),
- LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE ),
- LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE),
- LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY ),
- LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_1 ),
- LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_2 ),
- LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_FORWARD_CFI_COMPAT ),
- LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE ),
+ LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT),
+ LLVM_READOBJ_ENUM_ENT(
+ COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE),
+ LLVM_READOBJ_ENUM_ENT(
+ COFF,
+ IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE),
+ LLVM_READOBJ_ENUM_ENT(
+ COFF,
+ IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY),
+ LLVM_READOBJ_ENUM_ENT(COFF,
+ IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_1),
+ LLVM_READOBJ_ENUM_ENT(COFF,
+ IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_2),
+ LLVM_READOBJ_ENUM_ENT(COFF,
+ IMAGE_DLL_CHARACTERISTICS_EX_FORWARD_CFI_COMPAT),
+ LLVM_READOBJ_ENUM_ENT(COFF,
+ IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE),
};
static const EnumEntry<COFF::SectionCharacteristics>
``````````
</details>
https://github.com/llvm/llvm-project/pull/150761
More information about the llvm-commits
mailing list