From: Alan Maguire <alan.maguire@oracle.com>
To: acme@kernel.org
Cc: dxu@dxuuu.xyz, dwarves@vger.kernel.org,
andrii.nakryiko@gmail.com, jolsa@kernel.org, williams@redhat.com,
kcarcia@redhat.com, bpf@vger.kernel.org, eddyz87@gmail.com,
Alan Maguire <alan.maguire@oracle.com>
Subject: [PATCH dwarves 1/2] pahole: replace use of "all" with "default" for --btf_features
Date: Tue, 23 Apr 2024 17:01:59 +0100 [thread overview]
Message-ID: <20240423160200.3139270-2-alan.maguire@oracle.com> (raw)
In-Reply-To: <20240423160200.3139270-1-alan.maguire@oracle.com>
It is confusing that --btf_features allows specification of "all"
features and additional non-standard features like "reproducible_build"
so rename "all" to "default". To make the code clearer, avoid other
references to default values of --btf_features values, replacing these
with references to the initial value.
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
---
man-pages/pahole.1 | 4 +--
pahole.c | 75 ++++++++++++++++++++++++----------------------
2 files changed, 41 insertions(+), 38 deletions(-)
diff --git a/man-pages/pahole.1 b/man-pages/pahole.1
index 64de343..92ebf8f 100644
--- a/man-pages/pahole.1
+++ b/man-pages/pahole.1
@@ -290,7 +290,7 @@ Allow using all the BTF features supported by pahole.
.TP
.B \-\-btf_features=FEATURE_LIST
-Encode BTF using the specified feature list, or specify 'all' for all standard features supported. This option can be used as an alternative to unsing multiple BTF-related options. Supported standard features are
+Encode BTF using the specified feature list, or specify 'default' for all standard features supported. This option can be used as an alternative to unsing multiple BTF-related options. Supported standard features are
.nf
encode_force Ignore invalid symbols when encoding BTF; for example
@@ -310,7 +310,7 @@ Encode BTF using the specified feature list, or specify 'all' for all standard f
in different CUs.
.fi
-Supported non-standard features (not enabled for 'all')
+Supported non-standard features (not enabled for 'default')
.nf
reproducible_build Ensure generated BTF is consistent every time;
diff --git a/pahole.c b/pahole.c
index 38cc636..8458475 100644
--- a/pahole.c
+++ b/pahole.c
@@ -1239,11 +1239,11 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = dwarves_print_version;
#define ARGP_reproducible_build 345
/* --btf_features=feature1[,feature2,..] allows us to specify
- * a list of requested BTF features or "all" to enable all features.
- * These are translated into the appropriate conf_load values via a
- * struct btf_feature which specifies the associated conf_load
- * boolean field and whether its default (representing the feature being
- * off) is false or true.
+ * a list of requested BTF features or "default" to enable all default
+ * features. These are translated into the appropriate conf_load values
+ * via a struct btf_feature which specifies the associated conf_load
+ * boolean field and whether its initial value (representing the feature
+ * being off) is false or true.
*
* btf_features is for opting _into_ features so for a case like
* conf_load->btf_gen_floats, the translation is simple; the presence
@@ -1262,51 +1262,54 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = dwarves_print_version;
* --btf_features are enabled, and if a feature is not specified,
* it is disabled.
*
- * If --btf_features is not used, the usual pahole defaults for
+ * If --btf_features is not used, the usual pahole values for
* BTF encoding apply; we encode type/decl tags, do not encode
* floats, etc. This ensures backwards compatibility.
*/
-#define BTF_FEATURE(name, alias, default_value, enable_for_all) \
- { #name, #alias, &conf_load.alias, default_value, enable_for_all }
+#define BTF_DEFAULT_FEATURE(name, alias, initial_value) \
+ { #name, #alias, &conf_load.alias, initial_value, true }
+
+#define BTF_NON_DEFAULT_FEATURE(name, alias, initial_value) \
+ { #name, #alias, &conf_load.alias, initial_value, false }
struct btf_feature {
const char *name;
const char *option_alias;
bool *conf_value;
- bool default_value;
- bool enable_for_all; /* some nonstandard features may not
- * be enabled for --btf_features=all
- */
+ bool initial_value;
+ bool default_enabled; /* some nonstandard features may not
+ * be enabled for --btf_features=default
+ */
} btf_features[] = {
- BTF_FEATURE(encode_force, btf_encode_force, false, true),
- BTF_FEATURE(var, skip_encoding_btf_vars, true, true),
- BTF_FEATURE(float, btf_gen_floats, false, true),
- BTF_FEATURE(decl_tag, skip_encoding_btf_decl_tag, true, true),
- BTF_FEATURE(type_tag, skip_encoding_btf_type_tag, true, true),
- BTF_FEATURE(enum64, skip_encoding_btf_enum64, true, true),
- BTF_FEATURE(optimized_func, btf_gen_optimized, false, true),
- BTF_FEATURE(consistent_func, skip_encoding_btf_inconsistent_proto, false, true),
- BTF_FEATURE(reproducible_build, reproducible_build, false, false),
+ BTF_DEFAULT_FEATURE(encode_force, btf_encode_force, false),
+ BTF_DEFAULT_FEATURE(var, skip_encoding_btf_vars, true),
+ BTF_DEFAULT_FEATURE(float, btf_gen_floats, false),
+ BTF_DEFAULT_FEATURE(decl_tag, skip_encoding_btf_decl_tag, true),
+ BTF_DEFAULT_FEATURE(type_tag, skip_encoding_btf_type_tag, true),
+ BTF_DEFAULT_FEATURE(enum64, skip_encoding_btf_enum64, true),
+ BTF_DEFAULT_FEATURE(optimized_func, btf_gen_optimized, false),
+ BTF_DEFAULT_FEATURE(consistent_func, skip_encoding_btf_inconsistent_proto, false),
+ BTF_NON_DEFAULT_FEATURE(reproducible_build, reproducible_build, false),
};
#define BTF_MAX_FEATURE_STR 1024
-bool set_btf_features_defaults;
+bool set_btf_features_initial;
static void init_btf_features(void)
{
int i;
- /* Only set default values once, as multiple --btf_features=
- * may be specified on command-line, and setting defaults
+ /* Only set initial values once, as multiple --btf_features=
+ * may be specified on command-line, and setting values
* again could clobber values. The aim is to enable
* all features set across all --btf_features options.
*/
- if (set_btf_features_defaults)
+ if (set_btf_features_initial)
return;
for (i = 0; i < ARRAY_SIZE(btf_features); i++)
- *btf_features[i].conf_value = btf_features[i].default_value;
- set_btf_features_defaults = true;
+ *btf_features[i].conf_value = btf_features[i].initial_value;
+ set_btf_features_initial = true;
}
static struct btf_feature *find_btf_feature(char *name)
@@ -1322,10 +1325,10 @@ static struct btf_feature *find_btf_feature(char *name)
static void enable_btf_feature(struct btf_feature *feature)
{
- /* switch "default-off" features on, and "default-on" features
- * off; i.e. negate the default value.
+ /* switch "initial-off" features on, and "initial-on" features
+ * off; i.e. negate the initial value.
*/
- *feature->conf_value = !feature->default_value;
+ *feature->conf_value = !feature->initial_value;
}
static void show_supported_btf_features(FILE *output)
@@ -1351,11 +1354,11 @@ static void parse_btf_features(const char *features, bool strict)
init_btf_features();
- if (strcmp(features, "all") == 0) {
+ if (strcmp(features, "default") == 0) {
int i;
for (i = 0; i < ARRAY_SIZE(btf_features); i++) {
- if (btf_features[i].enable_for_all)
+ if (btf_features[i].default_enabled)
enable_btf_feature(&btf_features[i]);
}
return;
@@ -1367,10 +1370,10 @@ static void parse_btf_features(const char *features, bool strict)
struct btf_feature *feature = find_btf_feature(feature_name);
if (!feature) {
- /* --btf_features=all,nonstandard_feature should be
+ /* --btf_features=default,nonstandard_feature should be
* allowed.
*/
- if (strcmp(feature_name, "all") == 0) {
+ if (strcmp(feature_name, "default") == 0) {
parse_btf_features(feature_name, strict);
} else if (strict) {
fprintf(stderr, "Feature '%s' in '%s' is not supported. Supported BTF features are:\n",
@@ -1819,7 +1822,7 @@ static const struct argp_option pahole__options[] = {
.name = "btf_features",
.key = ARGP_btf_features,
.arg = "FEATURE_LIST",
- .doc = "Specify supported BTF features in FEATURE_LIST or 'all' for all supported features. See the pahole manual page for the list of supported features."
+ .doc = "Specify supported BTF features in FEATURE_LIST or 'default' for default set of supported features. See the pahole manual page for the list of supported, default features."
},
{
.name = "supported_btf_features",
@@ -1830,7 +1833,7 @@ static const struct argp_option pahole__options[] = {
.name = "btf_features_strict",
.key = ARGP_btf_features_strict,
.arg = "FEATURE_LIST_STRICT",
- .doc = "Specify supported BTF features in FEATURE_LIST_STRICT or 'all' for all supported features. Unlike --btf_features, unrecognized features will trigger an error."
+ .doc = "Specify supported BTF features in FEATURE_LIST_STRICT or 'default' for default set of supported features. Unlike --btf_features, unrecognized features will trigger an error."
},
{
.name = "reproducible_build",
--
2.39.3
next prev parent reply other threads:[~2024-04-23 16:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-23 16:01 [PATCH dwarves 0/2] replace --btf_features="all" with "default" Alan Maguire
2024-04-23 16:01 ` Alan Maguire [this message]
2024-04-23 16:02 ` [PATCH dwarves 2/2] tests: update reproducible_build test to use "default" Alan Maguire
2024-04-23 17:54 ` [PATCH dwarves 0/2] replace --btf_features="all" with "default" Arnaldo Carvalho de Melo
2024-04-24 3:32 ` Daniel Xu
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=20240423160200.3139270-2-alan.maguire@oracle.com \
--to=alan.maguire@oracle.com \
--cc=acme@kernel.org \
--cc=andrii.nakryiko@gmail.com \
--cc=bpf@vger.kernel.org \
--cc=dwarves@vger.kernel.org \
--cc=dxu@dxuuu.xyz \
--cc=eddyz87@gmail.com \
--cc=jolsa@kernel.org \
--cc=kcarcia@redhat.com \
--cc=williams@redhat.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 NNTP newsgroup(s).