bpftools: update to standalone bpftools + libbpf, use the latest version

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau 2022-03-15 14:33:59 +01:00
parent 9c8cd1462d
commit 00cbf6f6ab
6 changed files with 64 additions and 117 deletions

View File

@ -34,6 +34,8 @@ define Package/qosify
DEPENDS:=+libbpf +libubox +libubus +kmod-sched-cake +kmod-sched-bpf +kmod-ifb +tc-full $(BPF_DEPENDS) DEPENDS:=+libbpf +libubox +libubus +kmod-sched-cake +kmod-sched-bpf +kmod-ifb +tc-full $(BPF_DEPENDS)
endef endef
TARGET_CFLAGS += -Wno-error=deprecated-declarations
define Build/Compile define Build/Compile
$(call CompileBPF,$(PKG_BUILD_DIR)/qosify-bpf.c) $(call CompileBPF,$(PKG_BUILD_DIR)/qosify-bpf.c)
$(Build/Compile/Default) $(Build/Compile/Default)

View File

@ -8,12 +8,14 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=bpftools PKG_NAME:=bpftools
PKG_VERSION:=5.11.16
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_SOURCE:=linux-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://github.com/libbpf/bpftool
PKG_SOURCE_URL:=@KERNEL/linux/kernel/v5.x PKG_SOURCE_PROTO:=git
PKG_HASH:=21163681d130cbce5a6be39019e2c69e44f284855ddd70b1a3bd039249540f43 PKG_SOURCE_DATE:=2022-03-08
PKG_SOURCE_VERSION:=04c465fd1f561f67796dc68bbfe1aa7cfa956c3c
PKG_MIRROR_HASH:=e22a954cd186f43228a96586bbdc120b11e6c87360ab88ae96ba37afb9c7cb58
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
PKG_MAINTAINER:=Tony Ambardar <itugrok@yahoo.com> PKG_MAINTAINER:=Tony Ambardar <itugrok@yahoo.com>
@ -21,16 +23,6 @@ PKG_USE_MIPS16:=0
PKG_BUILD_PARALLEL:=1 PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1 PKG_INSTALL:=1
LINUX_VERSION:=$(PKG_VERSION)
LINUX_TLD:=linux-$(LINUX_VERSION)
BPF_FILES:= \
kernel/bpf scripts tools/Makefile tools/bpf tools/perf/perf-sys.h \
tools/arch tools/build tools/include tools/lib tools/scripts
TAR_OPTIONS+= \
--transform="s;$(LINUX_TLD)/;$(PKG_NAME)-$(PKG_VERSION)/;" \
$(addprefix $(LINUX_TLD)/,$(BPF_FILES))
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk include $(INCLUDE_DIR)/nls.mk
@ -77,7 +69,7 @@ define Package/libbpf
TITLE:=libbpf - eBPF helper library TITLE:=libbpf - eBPF helper library
VARIANT:=lib VARIANT:=lib
LICENSE:=LGPL-2.1 OR BSD-2-Clause LICENSE:=LGPL-2.1 OR BSD-2-Clause
ABI_VERSION:=0 ABI_VERSION:=$(PKG_ABI_VERSION)
URL:=http://www.kernel.org URL:=http://www.kernel.org
DEPENDS:=+libelf DEPENDS:=+libelf
endef endef
@ -93,47 +85,35 @@ ifneq ($(BUILD_VARIANT),lib)
TARGET_LDFLAGS += -Wl,--gc-sections TARGET_LDFLAGS += -Wl,--gc-sections
endif endif
ifeq ($(BUILD_VARIANT),full)
full:=1
else
full:=0
endif
MAKE_VARS = \ MAKE_VARS = \
EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \ EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)"
MAKE_FLAGS += \ MAKE_FLAGS += \
BPFTOOL_VERSION="$(LINUX_VERSION)" \
FEATURES_DUMP="$(PKG_BUILD_DIR)/FEATURE-DUMP.openwrt" \
OUTPUT="$(PKG_BUILD_DIR)/" \ OUTPUT="$(PKG_BUILD_DIR)/" \
prefix="/usr" \ prefix="/usr" \
$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \
LIBSUBDIR=lib \
check_feat=0 \
feature-clang-bpf-co-re=0 \
feature-reallocarray=1 \
feature-zlib=1 \
feature-libbfd=$(full) \
feature-libcap=0 \
feature-disassembler-four-args=$(full)
ifeq ($(BUILD_VARIANT),full) ifeq ($(BUILD_VARIANT),lib)
HAVE_LIBBFD:=1 MAKE_PATH = libbpf/src
HAVE_LIBCAP:=0 else
HAVE_CLANG:=0 MAKE_PATH = src
MAKE_PATH:=tools/bpf/bpftool
else ifeq ($(BUILD_VARIANT),minimal)
HAVE_LIBBFD:=0
HAVE_LIBCAP:=0
HAVE_CLANG:=0
MAKE_PATH:=tools/bpf/bpftool
else ifeq ($(BUILD_VARIANT),lib)
HAVE_LIBBFD:=0
HAVE_LIBCAP:=0
HAVE_CLANG:=0
MAKE_PATH:=tools/lib/bpf
endif endif
# Perform a "throw-away" make to create a FEATURE-DUMP.* file to edit later.
# The "//" in the make target is actually needed, very unPOSIXly.
define Build/Configure
+$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/tools/bpf/bpftool \
$(MAKE_FLAGS) FEATURES_DUMP= $(PKG_BUILD_DIR)//libbpf/libbpf.a
(cd $(PKG_BUILD_DIR); cat FEATURE-DUMP.bpftool libbpf/FEATURE-DUMP.libbpf \
| sort | uniq > FEATURE-DUMP.openwrt)
$(SED) 's/feature-libbfd=1/feature-libbfd=$(HAVE_LIBBFD)/' \
-e 's/feature-libcap=1/feature-libcap=$(HAVE_LIBCAP)/' \
-e 's/feature-clang-bpf-co-re=1/feature-clang-bpf-co-re=$(HAVE_CLANG)/' \
$(PKG_BUILD_DIR)/FEATURE-DUMP.openwrt
endef
define Build/InstallDev/libbpf define Build/InstallDev/libbpf
$(INSTALL_DIR) $(1)/usr/include/bpf $(INSTALL_DIR) $(1)/usr/include/bpf
$(CP) $(PKG_INSTALL_DIR)/usr/include/bpf/*.h $(1)/usr/include/bpf/ $(CP) $(PKG_INSTALL_DIR)/usr/include/bpf/*.h $(1)/usr/include/bpf/

View File

@ -0,0 +1,10 @@
--- a/libbpf/src/Makefile
+++ b/libbpf/src/Makefile
@@ -25,6 +25,7 @@ ALL_CFLAGS := $(INCLUDES)
SHARED_CFLAGS += -fPIC -fvisibility=hidden -DSHARED
+CFLAGS = $(EXTRA_CFLAGS)
CFLAGS ?= -g -O2 -Werror -Wall -std=gnu89
ALL_CFLAGS += $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
ALL_LDFLAGS += $(LDFLAGS)

View File

@ -0,0 +1,26 @@
--- a/libbpf/include/linux/list.h
+++ b/libbpf/include/linux/list.h
@@ -3,6 +3,8 @@
#ifndef __LINUX_LIST_H
#define __LINUX_LIST_H
+#include <linux/types.h>
+
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
--- a/src/Makefile
+++ b/src/Makefile
@@ -73,10 +73,10 @@ CFLAGS += -W -Wall -Wextra -Wno-unused-p
CFLAGS += $(filter-out -Wswitch-enum -Wnested-externs,$(EXTRA_WARNINGS))
CFLAGS += -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ \
-I$(if $(OUTPUT),$(OUTPUT),.) \
- -I$(LIBBPF_INCLUDE) \
-I$(srctree)/src/kernel/bpf/ \
-I$(srctree)/include \
- -I$(srctree)/include/uapi
+ -I$(srctree)/include/uapi \
+ -I$(LIBBPF_INCLUDE)
ifneq ($(BPFTOOL_VERSION),)
CFLAGS += -DBPFTOOL_VERSION='"$(BPFTOOL_VERSION)"'
endif

View File

@ -1,51 +0,0 @@
From afe3f4c765b17ced23811fe652c7f7adf7a0c0cf Mon Sep 17 00:00:00 2001
From: Tony Ambardar <Tony.Ambardar@gmail.com>
Date: Mon, 14 Sep 2020 23:05:26 -0700
Subject: [PATCH] tools/arch/powerpc: fix EDEADLOCK redefinition errors in
errno.h
A few archs like powerpc have different errno.h values for macros
EDEADLOCK and EDEADLK. In code including both libc and linux versions of
errno.h, this can result in multiple definitions of EDEADLOCK in the
include chain. Definitions to the same value (e.g. seen with mips) do
not raise warnings, but on powerpc there are redefinitions changing the
value, which raise warnings and errors (with "-Werror").
Guard against these redefinitions to avoid build errors like the following,
first seen cross-compiling libbpf v5.8.9 for powerpc using GCC 8.4.0 with
musl 1.1.24:
In file included from ../../arch/powerpc/include/uapi/asm/errno.h:5,
from ../../include/linux/err.h:8,
from libbpf.c:29:
../../include/uapi/asm-generic/errno.h:40: error: "EDEADLOCK" redefined [-Werror]
#define EDEADLOCK EDEADLK
In file included from toolchain-powerpc_8540_gcc-8.4.0_musl/include/errno.h:10,
from libbpf.c:26:
toolchain-powerpc_8540_gcc-8.4.0_musl/include/bits/errno.h:58: note: this is the location of the previous definition
#define EDEADLOCK 58
cc1: all warnings being treated as errors
make[5]: *** [target-powerpc_8540_musl/bpftools-5.8.9/tools/build/Makefile.build:97: /home/kodidev/openwrt-project/build_dir/target-powerpc_8540_musl/bpftools-minimal/bpftools-5.8.9//libbpf/staticobjs/libbpf.o] Error 1
Fixes: 95f28190aa01 ("tools include arch: Grab a copy of errno.h for arch's
supported by perf")
Fixes: c3617f72036c ("UAPI: (Scripted) Disintegrate arch/powerpc/include/asm")
Reported-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
---
tools/arch/powerpc/include/uapi/asm/errno.h | 1 +
1 file changed, 1 insertion(+)
--- a/tools/arch/powerpc/include/uapi/asm/errno.h
+++ b/tools/arch/powerpc/include/uapi/asm/errno.h
@@ -2,6 +2,7 @@
#ifndef _ASM_POWERPC_ERRNO_H
#define _ASM_POWERPC_ERRNO_H
+#undef EDEADLOCK
#include <asm-generic/errno.h>
#undef EDEADLOCK

View File

@ -1,20 +0,0 @@
--- a/tools/bpf/bpftool/btf_dumper.c
+++ b/tools/bpf/bpftool/btf_dumper.c
@@ -5,6 +5,7 @@
#include <stdio.h> /* for (FILE *) used by json_writer */
#include <string.h>
#include <unistd.h>
+#include <linux/compiler.h>
#include <asm/byteorder.h>
#include <linux/bitops.h>
#include <linux/btf.h>
--- a/tools/bpf/bpftool/map_perf_ring.c
+++ b/tools/bpf/bpftool/map_perf_ring.c
@@ -16,6 +16,7 @@
#include <time.h>
#include <unistd.h>
#include <linux/bpf.h>
+#include <linux/compiler.h>
#include <linux/perf_event.h>
#include <sys/ioctl.h>
#include <sys/mman.h>