@@ -297,6 +297,10 @@ Encode BTF using the specified feature list, or specify 'all' for all features s
So for example, specifying \-\-btf_encode=var,enum64 will result in a BTF encoding that (as well as encoding basic BTF information) will contain variables and enum64 values.
+.TP
+.B \-\-supported_btf_features
+Show set of BTF features supported by \-\-btf_features option and exit. Useful for checking which features are supported since \-\-btf_features will not emit an error if an unrecognized feature is specified.
+
.TP
.B \-l, \-\-show_first_biggest_size_base_type_member
Show first biggest size base_type member.
@@ -1230,6 +1230,7 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = dwarves_print_version;
#define ARGP_btf_gen_optimized 339
#define ARGP_skip_encoding_btf_inconsistent_proto 340
#define ARGP_btf_features 341
+#define ARGP_supported_btf_features 342
/* --btf_features=feature1[,feature2,..] allows us to specify
* a list of requested BTF features or "all" to enable all features.
@@ -1317,6 +1318,18 @@ static void enable_btf_feature(struct btf_feature *feature)
*feature->conf_value = !feature->default_value;
}
+static void show_supported_btf_features(FILE *output)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(btf_features); i++) {
+ if (i > 0)
+ fprintf(output, ",");
+ fprintf(output, "%s", btf_features[i].name);
+ }
+ fprintf(output, "\n");
+}
+
/* Translate --btf_features=feature1[,feature2] into conf_load values.
* Explicitly ignores unrecognized features to allow future specification
* of new opt-in features.
@@ -1779,6 +1792,11 @@ static const struct argp_option pahole__options[] = {
.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."
},
+ {
+ .name = "supported_btf_features",
+ .key = ARGP_supported_btf_features,
+ .doc = "Show list of btf_features supported by pahole and exit."
+ },
{
.name = NULL,
}
@@ -1956,6 +1974,8 @@ static error_t pahole__options_parser(int key, char *arg,
conf_load.skip_encoding_btf_inconsistent_proto = true; break;
case ARGP_btf_features:
parse_btf_features(arg); break;
+ case ARGP_supported_btf_features:
+ show_supported_btf_features(stdout); exit(0);
default:
return ARGP_ERR_UNKNOWN;
}