git: 369a4023e671 - stable/12 - elftcl: add -i flag to ignore unknown flags
Ed Maste
emaste at FreeBSD.org
Tue Jan 19 02:50:25 UTC 2021
The branch stable/12 has been updated by emaste:
URL: https://cgit.FreeBSD.org/src/commit/?id=369a4023e671c35390574d42b1b409b55946faf8
commit 369a4023e671c35390574d42b1b409b55946faf8
Author: Ed Maste <emaste at FreeBSD.org>
AuthorDate: 2021-01-13 03:24:52 +0000
Commit: Ed Maste <emaste at FreeBSD.org>
CommitDate: 2021-01-19 02:49:55 +0000
elftcl: add -i flag to ignore unknown flags
This may allow an identical elfctl invocation to be used on multiple
FreeBSD versions, with features not implemented on older releases being
silently ignored.
PR: 252629 (related)
Reviewed by: kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D28130
(cherry picked from commit f6d95a01103a49a94c876d5a51bb4be25c06d964)
---
usr.bin/elfctl/elfctl.1 | 6 +++++-
usr.bin/elfctl/elfctl.c | 13 ++++++++++---
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/usr.bin/elfctl/elfctl.1 b/usr.bin/elfctl/elfctl.1
index 176c2c42b22a..f93b558fdf0d 100644
--- a/usr.bin/elfctl/elfctl.1
+++ b/usr.bin/elfctl/elfctl.1
@@ -26,7 +26,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 1, 2020
+.Dd January 12, 2021
.Dt ELFCTL 1
.Os
.Sh NAME
@@ -35,6 +35,7 @@
.Sh SYNOPSIS
.Nm
.Op Fl h | Fl -help
+.Op Fl i
.Op Fl l
.Op Fl e Ar featurelist
.Ar
@@ -47,6 +48,9 @@ The options are as follows:
.Bl -tag -width indent
.It Fl h | Fl -help
Print a usage message and exit.
+.It Fl i
+Ignore unknown feature flags in
+.Ar featurelist .
.It Fl l
List known ELF feature flags.
.It Fl e Ar featurelist
diff --git a/usr.bin/elfctl/elfctl.c b/usr.bin/elfctl/elfctl.c
index d18d828e151c..725752375d16 100644
--- a/usr.bin/elfctl/elfctl.c
+++ b/usr.bin/elfctl/elfctl.c
@@ -83,7 +83,9 @@ static struct option long_opts[] = {
#else
#define SUPPORTED_ENDIAN ELFDATA2MSB
#endif
-
+
+static bool iflag;
+
int
main(int argc, char **argv)
{
@@ -102,8 +104,11 @@ main(int argc, char **argv)
if (elf_version(EV_CURRENT) == EV_NONE)
errx(EXIT_FAILURE, "elf_version error");
- while ((ch = getopt_long(argc, argv, "hle:", long_opts, NULL)) != -1) {
+ while ((ch = getopt_long(argc, argv, "hile:", long_opts, NULL)) != -1) {
switch (ch) {
+ case 'i':
+ iflag = true;
+ break;
case 'l':
print_features();
lflag = true;
@@ -199,6 +204,7 @@ Usage: %s [options] file...\n\
Set or display the control features for an ELF object.\n\n\
Supported options are:\n\
-l List known control features.\n\
+ -i Ignore unknown features.\n\
-e [+-=]feature,list Edit features from a comma separated list.\n\
-h | --help Print a usage message and exit.\n"
@@ -231,7 +237,8 @@ convert_to_feature_val(char *feature_str, uint32_t *feature_val)
}
if (i == len) {
warnx("%s is not a valid feature", feature);
- return (false);
+ if (!iflag)
+ return (false);
}
}
More information about the dev-commits-src-all
mailing list