diff options
Diffstat (limited to 'tools/bpf/bpftool/main.c')
| -rw-r--r-- | tools/bpf/bpftool/main.c | 27 | 
1 files changed, 25 insertions, 2 deletions
| diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c index 28237d7cef67..020e91a542d5 100644 --- a/tools/bpf/bpftool/main.c +++ b/tools/bpf/bpftool/main.c @@ -31,6 +31,7 @@ bool block_mount;  bool verifier_logs;  bool relaxed_maps;  bool use_loader; +bool legacy_libbpf;  struct btf *base_btf;  struct hashmap *refs_table; @@ -92,6 +93,7 @@ static int do_version(int argc, char **argv)  		jsonw_name(json_wtr, "features");  		jsonw_start_object(json_wtr);	/* features */  		jsonw_bool_field(json_wtr, "libbfd", has_libbfd); +		jsonw_bool_field(json_wtr, "libbpf_strict", !legacy_libbpf);  		jsonw_bool_field(json_wtr, "skeletons", has_skeletons);  		jsonw_end_object(json_wtr);	/* features */ @@ -105,6 +107,10 @@ static int do_version(int argc, char **argv)  			printf(" libbfd");  			nb_features++;  		} +		if (!legacy_libbpf) { +			printf("%s libbpf_strict", nb_features++ ? "," : ""); +			nb_features++; +		}  		if (has_skeletons)  			printf("%s skeletons", nb_features++ ? "," : "");  		printf("\n"); @@ -396,10 +402,14 @@ int main(int argc, char **argv)  		{ "debug",	no_argument,	NULL,	'd' },  		{ "use-loader",	no_argument,	NULL,	'L' },  		{ "base-btf",	required_argument, NULL, 'B' }, +		{ "legacy",	no_argument,	NULL,	'l' },  		{ 0 }  	}; +	bool version_requested = false;  	int opt, ret; +	setlinebuf(stdout); +  	last_do_help = do_help;  	pretty_output = false;  	json_output = false; @@ -408,11 +418,12 @@ int main(int argc, char **argv)  	bin_name = argv[0];  	opterr = 0; -	while ((opt = getopt_long(argc, argv, "VhpjfLmndB:", +	while ((opt = getopt_long(argc, argv, "VhpjfLmndB:l",  				  options, NULL)) >= 0) {  		switch (opt) {  		case 'V': -			return do_version(argc, argv); +			version_requested = true; +			break;  		case 'h':  			return do_help(argc, argv);  		case 'p': @@ -454,6 +465,9 @@ int main(int argc, char **argv)  		case 'L':  			use_loader = true;  			break; +		case 'l': +			legacy_libbpf = true; +			break;  		default:  			p_err("unrecognized option '%s'", argv[optind - 1]);  			if (json_output) @@ -463,11 +477,20 @@ int main(int argc, char **argv)  		}  	} +	if (!legacy_libbpf) { +		ret = libbpf_set_strict_mode(LIBBPF_STRICT_ALL); +		if (ret) +			p_err("failed to enable libbpf strict mode: %d", ret); +	} +  	argc -= optind;  	argv += optind;  	if (argc < 0)  		usage(); +	if (version_requested) +		return do_version(argc, argv); +  	ret = cmd_select(cmds, argc, argv, do_help);  	if (json_output) |