Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'Build BPF selftests and its libbpf, bpftool in debug mode'

Andrii Nakryiko says:

====================

Build BPF selftests and libbpf and bpftool, that are used as part of
selftests, in debug mode (specifically, -Og). This makes it much simpler and
nicer to do development and/or bug fixing. See patch #4 for some unscientific
measurements.

This patch set fixes new maybe-unitialized warnings produced in -Og build
mode. Patch #1 fixes the blocker which was causing some XDP selftests failures
due to non-zero padding in bpf_xdp_set_link_opts, which only happened in debug
mode.
====================

Signed-off-by: Alexei Starovoitov <ast@kernel.org>

+13 -7
+3
tools/bpf/bpftool/btf.c
··· 546 546 NEXT_ARG(); 547 547 if (argc < 1) { 548 548 p_err("expecting value for 'format' option\n"); 549 + err = -EINVAL; 549 550 goto done; 550 551 } 551 552 if (strcmp(*argv, "c") == 0) { ··· 556 555 } else { 557 556 p_err("unrecognized format specifier: '%s', possible values: raw, c", 558 557 *argv); 558 + err = -EINVAL; 559 559 goto done; 560 560 } 561 561 NEXT_ARG(); 562 562 } else { 563 563 p_err("unrecognized option: '%s'", *argv); 564 + err = -EINVAL; 564 565 goto done; 565 566 } 566 567 }
+1 -2
tools/bpf/bpftool/main.c
··· 276 276 int n_argc; 277 277 FILE *fp; 278 278 char *cp; 279 - int err; 279 + int err = 0; 280 280 int i; 281 281 282 282 if (argc < 2) { ··· 370 370 } else { 371 371 if (!json_output) 372 372 printf("processed %d commands\n", lines); 373 - err = 0; 374 373 } 375 374 err_close: 376 375 if (fp != stdin)
+1 -1
tools/bpf/bpftool/map.c
··· 100 100 void *value) 101 101 { 102 102 __u32 value_id; 103 - int ret; 103 + int ret = 0; 104 104 105 105 /* start of key-value pair */ 106 106 jsonw_start_object(d->jw);
+1
tools/lib/bpf/libbpf.h
··· 507 507 struct bpf_xdp_set_link_opts { 508 508 size_t sz; 509 509 int old_fd; 510 + size_t :0; 510 511 }; 511 512 #define bpf_xdp_set_link_opts__last_field old_fd 512 513
+5 -2
tools/testing/selftests/bpf/Makefile
··· 21 21 22 22 BPF_GCC ?= $(shell command -v bpf-gcc;) 23 23 SAN_CFLAGS ?= 24 - CFLAGS += -g -rdynamic -Wall -O2 $(GENFLAGS) $(SAN_CFLAGS) \ 24 + CFLAGS += -g -Og -rdynamic -Wall $(GENFLAGS) $(SAN_CFLAGS) \ 25 25 -I$(CURDIR) -I$(INCLUDE_DIR) -I$(GENDIR) -I$(LIBDIR) \ 26 26 -I$(TOOLSINCDIR) -I$(APIDIR) -I$(OUTPUT) \ 27 27 -Dbpf_prog_load=bpf_prog_test_load \ ··· 201 201 $(HOST_BPFOBJ) | $(HOST_BUILD_DIR)/bpftool 202 202 $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOLDIR) \ 203 203 CC=$(HOSTCC) LD=$(HOSTLD) \ 204 + EXTRA_CFLAGS='-g -Og' \ 204 205 OUTPUT=$(HOST_BUILD_DIR)/bpftool/ \ 205 206 prefix= DESTDIR=$(HOST_SCRATCH_DIR)/ install 206 207 ··· 219 218 ../../../include/uapi/linux/bpf.h \ 220 219 | $(INCLUDE_DIR) $(BUILD_DIR)/libbpf 221 220 $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(BUILD_DIR)/libbpf/ \ 221 + EXTRA_CFLAGS='-g -Og' \ 222 222 DESTDIR=$(SCRATCH_DIR) prefix= all install_headers 223 223 224 224 ifneq ($(BPFOBJ),$(HOST_BPFOBJ)) ··· 227 225 ../../../include/uapi/linux/bpf.h \ 228 226 | $(INCLUDE_DIR) $(HOST_BUILD_DIR)/libbpf 229 227 $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) \ 230 - OUTPUT=$(HOST_BUILD_DIR)/libbpf/ CC=$(HOSTCC) LD=$(HOSTLD) \ 228 + EXTRA_CFLAGS='-g -Og' \ 229 + OUTPUT=$(HOST_BUILD_DIR)/libbpf/ CC=$(HOSTCC) LD=$(HOSTLD) \ 231 230 DESTDIR=$(HOST_SCRATCH_DIR)/ prefix= all install_headers 232 231 endif 233 232
+2 -2
tools/testing/selftests/bpf/xdpxceiver.c
··· 297 297 static void xsk_populate_fill_ring(struct xsk_umem_info *umem) 298 298 { 299 299 int ret, i; 300 - u32 idx; 300 + u32 idx = 0; 301 301 302 302 ret = xsk_ring_prod__reserve(&umem->fq, XSK_RING_PROD__DEFAULT_NUM_DESCS, &idx); 303 303 if (ret != XSK_RING_PROD__DEFAULT_NUM_DESCS) ··· 584 584 585 585 static void tx_only(struct xsk_socket_info *xsk, u32 *frameptr, int batch_size) 586 586 { 587 - u32 idx; 587 + u32 idx = 0; 588 588 unsigned int i; 589 589 bool tx_invalid_test = stat_test_type == STAT_TEST_TX_INVALID; 590 590 u32 len = tx_invalid_test ? XSK_UMEM__DEFAULT_FRAME_SIZE + 1 : PKT_SIZE;