From: Christoph Reiter <reiter.christoph@gmail.com>
To: cygwin-apps@cygwin.com
Cc: Christoph Reiter <reiter.christoph@gmail.com>
Subject: [PATCH v2] peflags: add support for IMAGE_DLLCHARACTERISTICS_GUARD_CF
Date: Mon, 17 Apr 2023 20:40:34 +0200 [thread overview]
Message-ID: <20230417184034.2234-1-reiter.christoph@gmail.com> (raw)
This allows for setting, clearing, and displaying the value of the
"control flow guard" dll characteristics flag.
The flag for MSVC is called "/guard:cf" and the macro ends with "GUARD_CF".
To keep things consistent, it would make sense to name the option "guard-cf".
However, there's already "-c"/"control-flow-guard" in genpeimg for this flag,
and genpeimg shares all other options with peflags so far.
So, follow genpeimg and go with "-c" and "--control-flow-guard".
This is motivated by mingw-w64 and llvm v16 gaining support for
CFG (Control Flow Guard).
---
Renamed the option from -g/--guard-cf to -c/--control-flow-guard
peflags.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/peflags.c b/peflags.c
index b1cd7a8..93eaa0b 100644
--- a/peflags.c
+++ b/peflags.c
@@ -121,7 +121,7 @@ static const symbolic_flags_t pe_symbolic_flags[] = {
CF(0x0800, no-bind),
/*CF(0x1000, reserved_0x1000),*/
CF(0x2000, wdmdriver),
-/*CF(0x4000, reserved_0x4000),*/
+ CF(0x4000, control-flow-guard),
CF(0x8000, tsaware),
{0, 0, 0}
};
@@ -182,6 +182,7 @@ sizeof_values_t sizeof_vals[5] = {
static struct option long_options[] = {
{"dynamicbase", optional_argument, NULL, 'd'},
{"high-entropy-va", optional_argument, NULL, 'e'},
+ {"control-flow-guard", optional_argument, NULL, 'c'},
{"forceinteg", optional_argument, NULL, 'f'},
{"nxcompat", optional_argument, NULL, 'n'},
{"no-isolation", optional_argument, NULL, 'i'},
@@ -204,7 +205,7 @@ static struct option long_options[] = {
{NULL, no_argument, NULL, 0}
};
static const char *short_options
- = "d::e::f::n::i::s::b::W::t::w::l::S::x::X::y::Y::z::T:vhV";
+ = "d::e::c::f::n::i::s::b::W::t::w::l::S::x::X::y::Y::z::T:vhV";
static void short_usage (FILE *f);
static void help (FILE *f);
@@ -706,6 +707,11 @@ parse_args (int argc, char *argv[])
optarg,
IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA);
break;
+ case 'c':
+ handle_pe_flag_option (long_options[option_index].name,
+ optarg,
+ IMAGE_DLLCHARACTERISTICS_GUARD_CF);
+ break;
case 'n':
handle_pe_flag_option (long_options[option_index].name,
optarg,
@@ -1079,6 +1085,8 @@ help (FILE *f)
" -e,\n"
" --high-entropy-va [BOOL] Image is compatible with 64-bit address space\n"
" layout randomization (ASLR).\n"
+" -c,\n"
+" --control-flow-guard [BOOL] Image supports Control Flow Guard.\n"
" -f, --forceinteg [BOOL] Code integrity checks are enforced.\n"
" -n, --nxcompat [BOOL] Image is compatible with data execution\n"
" prevention (DEP).\n"
--
2.40.0
next reply other threads:[~2023-04-17 18:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-17 18:40 Christoph Reiter [this message]
2023-04-18 7:44 ` Corinna Vinschen
2023-04-18 16:47 ` Christoph Reiter
2023-04-19 15:06 ` Brian Inglis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230417184034.2234-1-reiter.christoph@gmail.com \
--to=reiter.christoph@gmail.com \
--cc=cygwin-apps@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).