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 MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D28130
This commit is contained in:
parent
5171310e66
commit
f6d95a0110
@ -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
|
||||
|
@ -81,7 +81,9 @@ static struct option long_opts[] = {
|
||||
#else
|
||||
#define SUPPORTED_ENDIAN ELFDATA2MSB
|
||||
#endif
|
||||
|
||||
|
||||
static bool iflag;
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
@ -100,8 +102,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;
|
||||
@ -197,6 +202,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"
|
||||
|
||||
@ -229,7 +235,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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user