[SRU][BIONIC][PATCH v3 0/2] add bpftool to linux-tools-common

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU][BIONIC][PATCH v3 0/2] add bpftool to linux-tools-common

Quentin Monnet
BugLink: https://bugs.launchpad.net/bugs/1774815

[Impact]

bpftool is a debugging and introspection tool for BPF elements,
developed by the BPF kernel community. It is essential to list and dump
BPF programs and maps loaded on the system. Its sources are located in
the kernel repository, and because it is not packaged, administrators
willing to use bpftool must download the whole kernel sources, compile
and install the utility.

[Fix]

Adding bpftool to linux-tools and linux-tools-common packages makes it
easily accessible. These packages are already used to provide other
tools located in the kernel repository, such as perf.

The bpftool version provided with kernel 4.15 does not build properly,
because the API changed at some point in bfd.h from binutils-dev. Also,
it should be noted that the binutils-dev package description forbids
dependencies on libbfd:

   This package includes header files and static libraries necessary to
   build programs which use the GNU BFD library, which is part of
   binutils.  Note that building Debian packages which depend on the
   shared libbfd is Not Allowed.

Therefore, the proposed solution here is to get rid of the
libbfd/binutils-dev dependency entirely. So far it was used by perf
only, but perf can also be compiled without it anyway. Removing
binutils-dev also avoids being locked to a specific libbfd version in
case of future API changes.

This series contains four patches: the first to add feature detection to
bpftool Makefile, the second to use those features and to leave out the
bits relying on libbpfd. Then third patch removes dependency on
binutils-dev for the Linux package. At last, fourth patch adds packaging
for bpftool.

[Testcase]

A test linux package was successfully built, at:

https://launchpad.net/~qmonnet/+archive/ubuntu/ppa-linux-bpftool

(Built with:
  do_zfs=false
  do_dkms_nvidia=false
  do_dkms_vbox=false
  skipabi=true
  skipmodule=true
  skipretpoline=true)

Packages linux-tools-$(uname -r) and linux-tools-common can be built
with "debian/rules binary", and contain bpftool's binary and related
files (redirection script, bpftool manual pages, bash completion),
respectively.

[Regression Potential]

Low, as far as I can tell:

- binutils-dev was only used for building perf, but it is not mandatory
  and perf can be built without libbfd. The dependency on binutils-dev
  has been successfully removed on eoan.

- The backported patches touch only bpftool and one feature in
  tools/build/feature (only used with bpftool), all of it user space
  tools not used for anything other than bpftool itself.

- bpftool packaging does not change the way other tools are packaged
  (apart from creating $(toolsman)/man8 a few lines earlier), and should
  have no impact on the packaging of other tools. One dependency is
  added to Build-Depends-Indep.

---
Packaging for bpftool is upstream in eoan/master-next as commit 8579afd20b0c.

Discussion on v2 for bionic is available at:
https://lists.ubuntu.com/archives/kernel-team/2019-October/104622.html

Changes in v3:
- Remove dependency on libbpf (bintutils-dev package). This adds two
  patches: one to actually remove the dependency, the other (backported)
  to make bpftool build without libbfd. The commit fixing the build for
  binutils >= 2.9, backported in the previous iteration to fix bpftool
  compilation, is kept in this series because it adds feature detection
  to bpftool Makefile (required to build without libbfd).

Changes in v2:
- Patch has been applied to eoan.
- Switch from python-docutils to python3-docutils for the dependency
  providing rst2man for manual pages.
- Set CROSS_COMPILE when building bpftool.

I have been away from work for some time, please accept my sincere
apologies for the delay since v2 - especially because I chased up in the
past to have the set reviewed.

Quentin Monnet (1):
  UBUNTU: [Debian] package bpftool in linux-tools-common

Roman Gushchin (1):
  tools/bpftool: fix bpftool build with bintutils >= 2.9

Seth Forshee (1):
  UBUNTU: [Debian] Remove binutils-dev build dependency

Stanislav Fomichev (1):
  bpftool: make libbfd optional

 debian.master/control.stub.in                 |  2 +-
 debian.master/rules.d/amd64.mk                |  1 +
 debian.master/rules.d/arm64.mk                |  1 +
 debian.master/rules.d/armhf.mk                |  1 +
 debian.master/rules.d/i386.mk                 |  1 +
 debian.master/rules.d/ppc64el.mk              |  1 +
 debian.master/rules.d/s390x.mk                |  1 +
 debian/rules                                  |  2 +-
 debian/rules.d/1-maintainer.mk                |  1 +
 debian/rules.d/2-binary-arch.mk               |  9 +++++
 debian/rules.d/3-binary-indep.mk              | 12 +++++-
 tools/bpf/Makefile                            | 29 +++++++++++++++
 tools/bpf/bpf_jit_disasm.c                    |  7 ++++
 tools/bpf/bpftool/Makefile                    | 37 ++++++++++++++++++-
 tools/bpf/bpftool/jit_disasm.c                | 13 +++++++
 tools/bpf/bpftool/main.c                      |  3 --
 tools/bpf/bpftool/main.h                      | 13 +++++++
 tools/bpf/bpftool/prog.c                      |  3 ++
 tools/build/feature/Makefile                  |  4 ++
 .../feature/test-disassembler-four-args.c     | 15 ++++++++
 20 files changed, 148 insertions(+), 8 deletions(-)
 create mode 100644 tools/build/feature/test-disassembler-four-args.c

--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][BIONIC][PATCH v3 1/4] tools/bpftool: fix bpftool build with bintutils >= 2.9

Quentin Monnet
From: Roman Gushchin <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1774815

Bpftool build is broken with binutils version 2.29 and later.
The cause is commit 003ca0fd2286 ("Refactor disassembler selection")
in the binutils repo, which changed the disassembler() function
signature.

Fix this by adding a new "feature" to the tools/build/features
infrastructure and make it responsible for decision which
disassembler() function signature to use.

Signed-off-by: Roman Gushchin <[hidden email]>
Cc: Jakub Kicinski <[hidden email]>
Cc: Alexei Starovoitov <[hidden email]>
Cc: Daniel Borkmann <[hidden email]>
Acked-by: Jakub Kicinski <[hidden email]>
Signed-off-by: Daniel Borkmann <[hidden email]>
(backported from commit fb982666e380c1632a74495b68b3c33a66e76430)
Signed-off-by: Quentin Monnet <[hidden email]>
---
 tools/bpf/Makefile                            | 29 +++++++++++++++++++
 tools/bpf/bpf_jit_disasm.c                    |  7 +++++
 tools/bpf/bpftool/Makefile                    | 24 +++++++++++++++
 tools/bpf/bpftool/jit_disasm.c                |  7 +++++
 tools/build/feature/Makefile                  |  4 +++
 .../feature/test-disassembler-four-args.c     | 15 ++++++++++
 6 files changed, 86 insertions(+)
 create mode 100644 tools/build/feature/test-disassembler-four-args.c

diff --git a/tools/bpf/Makefile b/tools/bpf/Makefile
index 07a6697466ef..c8ec0ae16bf0 100644
--- a/tools/bpf/Makefile
+++ b/tools/bpf/Makefile
@@ -9,6 +9,35 @@ MAKE = make
 CFLAGS += -Wall -O2
 CFLAGS += -D__EXPORTED_HEADERS__ -I../../include/uapi -I../../include
 
+ifeq ($(srctree),)
+srctree := $(patsubst %/,%,$(dir $(CURDIR)))
+srctree := $(patsubst %/,%,$(dir $(srctree)))
+endif
+
+FEATURE_USER = .bpf
+FEATURE_TESTS = libbfd disassembler-four-args
+FEATURE_DISPLAY = libbfd disassembler-four-args
+
+check_feat := 1
+NON_CHECK_FEAT_TARGETS := clean bpftool_clean
+ifdef MAKECMDGOALS
+ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
+  check_feat := 0
+endif
+endif
+
+ifeq ($(check_feat),1)
+ifeq ($(FEATURES_DUMP),)
+include $(srctree)/tools/build/Makefile.feature
+else
+include $(FEATURES_DUMP)
+endif
+endif
+
+ifeq ($(feature-disassembler-four-args), 1)
+CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
+endif
+
 %.yacc.c: %.y
  $(YACC) -o $@ -d $<
 
diff --git a/tools/bpf/bpf_jit_disasm.c b/tools/bpf/bpf_jit_disasm.c
index 75bf526a0168..30044bc4f389 100644
--- a/tools/bpf/bpf_jit_disasm.c
+++ b/tools/bpf/bpf_jit_disasm.c
@@ -72,7 +72,14 @@ static void get_asm_insns(uint8_t *image, size_t len, int opcodes)
 
  disassemble_init_for_target(&info);
 
+#ifdef DISASM_FOUR_ARGS_SIGNATURE
+ disassemble = disassembler(info.arch,
+   bfd_big_endian(bfdf),
+   info.mach,
+   bfdf);
+#else
  disassemble = disassembler(bfdf);
+#endif
  assert(disassemble);
 
  do {
diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
index ec3052c0b004..9e433c3f8bbe 100644
--- a/tools/bpf/bpftool/Makefile
+++ b/tools/bpf/bpftool/Makefile
@@ -55,6 +55,30 @@ CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow
 CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf -I$(srctree)/kernel/bpf/
 LIBS = -lelf -lbfd -lopcodes $(LIBBPF)
 
+FEATURE_USER = .bpftool
+FEATURE_TESTS = libbfd disassembler-four-args
+FEATURE_DISPLAY = libbfd disassembler-four-args
+
+check_feat := 1
+NON_CHECK_FEAT_TARGETS := clean uninstall doc doc-clean doc-install doc-uninstall
+ifdef MAKECMDGOALS
+ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
+  check_feat := 0
+endif
+endif
+
+ifeq ($(check_feat),1)
+ifeq ($(FEATURES_DUMP),)
+include $(srctree)/tools/build/Makefile.feature
+else
+include $(FEATURES_DUMP)
+endif
+endif
+
+ifeq ($(feature-disassembler-four-args), 1)
+CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
+endif
+
 include $(wildcard *.d)
 
 all: $(OUTPUT)bpftool
diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c
index 86376f923d28..034d91284ae5 100644
--- a/tools/bpf/bpftool/jit_disasm.c
+++ b/tools/bpf/bpftool/jit_disasm.c
@@ -110,7 +110,14 @@ void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes)
 
  disassemble_init_for_target(&info);
 
+#ifdef DISASM_FOUR_ARGS_SIGNATURE
+ disassemble = disassembler(info.arch,
+   bfd_big_endian(bfdf),
+   info.mach,
+   bfdf);
+#else
  disassemble = disassembler(bfdf);
+#endif
  assert(disassemble);
 
  if (json_output)
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index 15071cb176bc..3a0de97284ee 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -13,6 +13,7 @@ FILES=                                          \
          test-hello.bin                         \
          test-libaudit.bin                      \
          test-libbfd.bin                        \
+         test-disassembler-four-args.bin        \
          test-libbfd-liberty.bin                \
          test-libbfd-liberty-z.bin              \
          test-cplus-demangle.bin                \
@@ -188,6 +189,9 @@ $(OUTPUT)test-libpython-version.bin:
 $(OUTPUT)test-libbfd.bin:
  $(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
 
+$(OUTPUT)test-disassembler-four-args.bin:
+ $(BUILD) -lbfd -lopcodes
+
 $(OUTPUT)test-libbfd-liberty.bin:
  $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty
 
diff --git a/tools/build/feature/test-disassembler-four-args.c b/tools/build/feature/test-disassembler-four-args.c
new file mode 100644
index 000000000000..45ce65cfddf0
--- /dev/null
+++ b/tools/build/feature/test-disassembler-four-args.c
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <bfd.h>
+#include <dis-asm.h>
+
+int main(void)
+{
+ bfd *abfd = bfd_openr(NULL, NULL);
+
+ disassembler(bfd_get_arch(abfd),
+     bfd_big_endian(abfd),
+     bfd_get_mach(abfd),
+     abfd);
+
+ return 0;
+}
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][BIONIC][PATCH v3 2/4] bpftool: make libbfd optional

Quentin Monnet
In reply to this post by Quentin Monnet
From: Stanislav Fomichev <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1774815

Make it possible to build bpftool without libbfd. libbfd and libopcodes are
typically provided in dev/dbg packages (binutils-dev in debian) which we
usually don't have installed on the fleet machines and we'd like a way to have
bpftool version that works without installing any additional packages.
This excludes support for disassembling jit-ted code and prints an error if
the user tries to use these features.

Tested by:
cat > FEATURES_DUMP.bpftool <<EOF
feature-libbfd=0
feature-disassembler-four-args=1
feature-reallocarray=0
feature-libelf=1
feature-libelf-mmap=1
feature-bpf=1
EOF
FEATURES_DUMP=$PWD/FEATURES_DUMP.bpftool make
ldd bpftool | grep libbfd

Signed-off-by: Stanislav Fomichev <[hidden email]>
Acked-by: Jakub Kicinski <[hidden email]>
Signed-off-by: Alexei Starovoitov <[hidden email]>
(backported from commit 29a9c10e4110e368443f0b606d71557edee7f2cc)
Signed-off-by: Quentin Monnet <[hidden email]>
---
 tools/bpf/bpftool/Makefile     | 13 +++++++++++--
 tools/bpf/bpftool/jit_disasm.c |  6 ++++++
 tools/bpf/bpftool/main.c       |  3 ---
 tools/bpf/bpftool/main.h       | 13 +++++++++++++
 tools/bpf/bpftool/prog.c       |  3 +++
 5 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
index 9e433c3f8bbe..b0a1cbde0819 100644
--- a/tools/bpf/bpftool/Makefile
+++ b/tools/bpf/bpftool/Makefile
@@ -53,7 +53,7 @@ CC = gcc
 CFLAGS += -O2
 CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow
 CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf -I$(srctree)/kernel/bpf/
-LIBS = -lelf -lbfd -lopcodes $(LIBBPF)
+LIBS = -lelf $(LIBBPF)
 
 FEATURE_USER = .bpftool
 FEATURE_TESTS = libbfd disassembler-four-args
@@ -83,7 +83,16 @@ include $(wildcard *.d)
 
 all: $(OUTPUT)bpftool
 
-SRCS=$(wildcard *.c)
+BFD_SRCS = jit_disasm.c
+
+SRCS = $(filter-out $(BFD_SRCS),$(wildcard *.c))
+
+ifeq ($(feature-libbfd),1)
+CFLAGS += -DHAVE_LIBBFD_SUPPORT
+SRCS += $(BFD_SRCS)
+LIBS += -lbfd -lopcodes
+endif
+
 OBJS=$(patsubst %.c,$(OUTPUT)%.o,$(SRCS)) $(OUTPUT)disasm.o
 
 $(OUTPUT)disasm.o: $(srctree)/kernel/bpf/disasm.c
diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c
index 034d91284ae5..ec046e3061d6 100644
--- a/tools/bpf/bpftool/jit_disasm.c
+++ b/tools/bpf/bpftool/jit_disasm.c
@@ -170,3 +170,9 @@ void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes)
 
  bfd_close(bfdf);
 }
+
+int disasm_init(void)
+{
+ bfd_init();
+ return 0;
+}
diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c
index d294bc8168be..b11429bb65cb 100644
--- a/tools/bpf/bpftool/main.c
+++ b/tools/bpf/bpftool/main.c
@@ -33,7 +33,6 @@
 
 /* Author: Jakub Kicinski <[hidden email]> */
 
-#include <bfd.h>
 #include <ctype.h>
 #include <errno.h>
 #include <getopt.h>
@@ -327,8 +326,6 @@ int main(int argc, char **argv)
  if (argc < 0)
  usage();
 
- bfd_init();
-
  ret = cmd_select(cmds, argc, argv, do_help);
 
  if (json_output)
diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h
index bff330b49791..af86de84ff30 100644
--- a/tools/bpf/bpftool/main.h
+++ b/tools/bpf/bpftool/main.h
@@ -117,7 +117,20 @@ int do_map(int argc, char **arg);
 
 int prog_parse_fd(int *argc, char ***argv);
 
+#ifdef HAVE_LIBBFD_SUPPORT
 void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes);
+int disasm_init(void);
+#else
+static inline
+void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes)
+{
+}
+static inline int disasm_init(void)
+{
+ p_err("No libbfd support");
+ return -1;
+}
+#endif
 void print_hex_data_json(uint8_t *data, size_t len);
 
 #endif
diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c
index 26df1a936ebf..caede2cd784a 100644
--- a/tools/bpf/bpftool/prog.c
+++ b/tools/bpf/bpftool/prog.c
@@ -521,6 +521,9 @@ static int do_dump(int argc, char **argv)
  int fd;
 
  if (is_prefix(*argv, "jited")) {
+ if (disasm_init())
+ return -1;
+
  member_len = &info.jited_prog_len;
  member_ptr = &info.jited_prog_insns;
  } else if (is_prefix(*argv, "xlated")) {
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][BIONIC][PATCH v3 3/4] UBUNTU: [Debian] Remove binutils-dev build dependency

Quentin Monnet
In reply to this post by Quentin Monnet
From: Seth Forshee <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1774815

This keeps giving us problems with introducing unwanted binary
dependencies in linux-tools. These tools will work without these
dependencies, albeit with somewhat reduced functionality. Aside
from that I can't see that this dependency is needed, so let's
try removing it.

Signed-off-by: Seth Forshee <[hidden email]>
(backported from commit 721d5f0c58073e6133db5dc05cf46200170fd80a)
Signed-off-by: Quentin Monnet <[hidden email]>
---
 debian.master/control.stub.in | 1 -
 1 file changed, 1 deletion(-)

diff --git a/debian.master/control.stub.in b/debian.master/control.stub.in
index 0afc7e6219a7..0fca6d2ddbc6 100644
--- a/debian.master/control.stub.in
+++ b/debian.master/control.stub.in
@@ -34,7 +34,6 @@ Build-Depends:
  automake <!stage1>,
  libtool <!stage1>,
  uuid-dev <!stage1>,
- binutils-dev <!stage1>,
  libnuma-dev [amd64 arm64 i386 ppc64el s390x] <!stage1>,
  dkms <!stage1>,
  wget <!stage1>,
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][BIONIC][PATCH v3 4/4] UBUNTU: [Debian] package bpftool in linux-tools-common

Quentin Monnet
In reply to this post by Quentin Monnet
BugLink: https://bugs.launchpad.net/bugs/1774815

bpftool is a debugging and introspection tool for BPF elements,
developed by the BPF kernel community. Its source code is located in the
kernel repository, at tools/bpf/bpftool. Package it in linux-tools and
linux-tools-common.

Along the binary, package manual pages and bash completion file.

bpftool itself is installed under /usr/sbin/, to be consistent with its
Makefile.

Dependency python3-docutils is added to Build-Depends-Indep, in order to
provide rst2man which is necessary to build bpftool's manual pages.

Signed-off-by: Quentin Monnet <[hidden email]>
---
 debian.master/control.stub.in    |  1 +
 debian.master/rules.d/amd64.mk   |  1 +
 debian.master/rules.d/arm64.mk   |  1 +
 debian.master/rules.d/armhf.mk   |  1 +
 debian.master/rules.d/i386.mk    |  1 +
 debian.master/rules.d/ppc64el.mk |  1 +
 debian.master/rules.d/s390x.mk   |  1 +
 debian/rules                     |  2 +-
 debian/rules.d/1-maintainer.mk   |  1 +
 debian/rules.d/2-binary-arch.mk  |  9 +++++++++
 debian/rules.d/3-binary-indep.mk | 12 +++++++++++-
 11 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/debian.master/control.stub.in b/debian.master/control.stub.in
index 0fca6d2ddbc6..75c51630d30b 100644
--- a/debian.master/control.stub.in
+++ b/debian.master/control.stub.in
@@ -47,6 +47,7 @@ Build-Depends-Indep:
  asciidoc <!stage1>,
  python-sphinx <!stage1>,
  python-sphinx-rtd-theme <!stage1>,
+ python3-docutils <!stage1>,
 Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/bionic
 XS-Testsuite: autopkgtest
 #XS-Testsuite-Depends: gcc-4.7 binutils
diff --git a/debian.master/rules.d/amd64.mk b/debian.master/rules.d/amd64.mk
index 4046adf3ebb3..3d248c270232 100644
--- a/debian.master/rules.d/amd64.mk
+++ b/debian.master/rules.d/amd64.mk
@@ -14,6 +14,7 @@ do_tools_usbip  = true
 do_tools_cpupower = true
 do_tools_perf   = true
 do_tools_perf_jvmti = true
+do_tools_bpftool = true
 do_tools_x86 = true
 do_tools_hyperv = true
 do_tools_host = true
diff --git a/debian.master/rules.d/arm64.mk b/debian.master/rules.d/arm64.mk
index c7e9a9c1e199..c49d25e752df 100644
--- a/debian.master/rules.d/arm64.mk
+++ b/debian.master/rules.d/arm64.mk
@@ -16,6 +16,7 @@ do_tools_usbip  = true
 do_tools_cpupower = true
 do_tools_perf   = true
 do_tools_perf_jvmti = true
+do_tools_bpftool = true
 
 do_dtbs = true
 do_zfs = true
diff --git a/debian.master/rules.d/armhf.mk b/debian.master/rules.d/armhf.mk
index d516ae13454c..085e8acdc8aa 100644
--- a/debian.master/rules.d/armhf.mk
+++ b/debian.master/rules.d/armhf.mk
@@ -14,5 +14,6 @@ do_tools_usbip  = true
 do_tools_cpupower = true
 do_tools_perf = true
 do_tools_perf_jvmti = true
+do_tools_bpftool = true
 
 do_dtbs = true
diff --git a/debian.master/rules.d/i386.mk b/debian.master/rules.d/i386.mk
index a422f9feba6c..89ad2a6c26cf 100644
--- a/debian.master/rules.d/i386.mk
+++ b/debian.master/rules.d/i386.mk
@@ -13,6 +13,7 @@ do_tools_usbip  = true
 do_tools_cpupower = true
 do_tools_perf   = true
 do_tools_perf_jvmti = true
+do_tools_bpftool = true
 do_tools_x86 = true
 do_tools_hyperv = true
 do_extras_package = true
diff --git a/debian.master/rules.d/ppc64el.mk b/debian.master/rules.d/ppc64el.mk
index c540bacaa166..3934ef482a57 100644
--- a/debian.master/rules.d/ppc64el.mk
+++ b/debian.master/rules.d/ppc64el.mk
@@ -15,6 +15,7 @@ do_tools_usbip    = true
 do_tools_cpupower = true
 do_tools_perf  = true
 do_tools_perf_jvmti = true
+do_tools_bpftool  = true
 
 #do_flavour_image_package = false
 do_zfs = true
diff --git a/debian.master/rules.d/s390x.mk b/debian.master/rules.d/s390x.mk
index dad66b1a674f..cbc188507892 100644
--- a/debian.master/rules.d/s390x.mk
+++ b/debian.master/rules.d/s390x.mk
@@ -16,5 +16,6 @@ do_tools_usbip    = true
 do_tools_cpupower = true
 do_tools_perf     = true
 do_tools_perf_jvmti = true
+do_tools_bpftool  = true
 
 do_zfs = true
diff --git a/debian/rules b/debian/rules
index babb28f904ae..4a4707637867 100755
--- a/debian/rules
+++ b/debian/rules
@@ -33,7 +33,7 @@ include $(DROOT)/rules.d/0-common-vars.mk
 # Maintainer targets
 include $(DROOT)/rules.d/1-maintainer.mk
 
-do_linux_tools=$(sort $(filter-out false,$(do_tools_usbip) $(do_tools_cpupower) $(do_tools_perf) $(do_tools_x86)))
+do_linux_tools=$(sort $(filter-out false,$(do_tools_usbip) $(do_tools_cpupower) $(do_tools_perf) $(do_tools_bpftool) $(do_tools_x86)))
 do_cloud_tools=$(sort $(filter-out false,$(do_tools_hyperv)))
 do_tools_common?=true
 do_tools_host?=false
diff --git a/debian/rules.d/1-maintainer.mk b/debian/rules.d/1-maintainer.mk
index 82683290cabb..e6e9f191afe1 100644
--- a/debian/rules.d/1-maintainer.mk
+++ b/debian/rules.d/1-maintainer.mk
@@ -84,6 +84,7 @@ printenv:
  @echo "do_linux_tools            = $(do_linux_tools)"
  @echo " do_tools_cpupower         = $(do_tools_cpupower)"
  @echo " do_tools_perf             = $(do_tools_perf)"
+ @echo " do_tools_bpftool          = $(do_tools_bpftool)"
  @echo " do_tools_x86              = $(do_tools_x86)"
  @echo " do_tools_host             = $(do_tools_host)"
  @echo "do_cloud_tools            = $(do_cloud_tools)"
diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
index 4bbc803a758f..e2ecd60fa445 100644
--- a/debian/rules.d/2-binary-arch.mk
+++ b/debian/rules.d/2-binary-arch.mk
@@ -375,6 +375,9 @@ ifeq ($(do_tools_perf_jvmti),true)
  $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/libperf-jvmti.so $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
 endif
 endif
+ifeq ($(do_tools_bpftool),true)
+ $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/bpftool $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
+endif
 ifeq ($(do_tools_x86),true)
  $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/x86_energy_perf_policy $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
  $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/turbostat $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
@@ -665,6 +668,9 @@ ifeq ($(do_tools_perf),true)
  cd $(builddirpa)/tools/perf && \
  $(kmake) prefix=/usr HAVE_NO_LIBBFD=1 HAVE_CPLUS_DEMANGLE_SUPPORT=1 CROSS_COMPILE=$(CROSS_COMPILE) NO_LIBPYTHON=1 NO_LIBPERL=1 PYTHON=python2.7
 endif
+ifeq ($(do_tools_bpftool),true)
+ $(kmake) CROSS_COMPILE=$(CROSS_COMPILE) -C $(builddirpa)/tools/bpf/bpftool
+endif
 ifeq ($(do_tools_x86),true)
  cd $(builddirpa)/tools/power/x86/x86_energy_perf_policy && make CROSS_COMPILE=$(CROSS_COMPILE)
  cd $(builddirpa)/tools/power/x86/turbostat && make CROSS_COMPILE=$(CROSS_COMPILE)
@@ -709,6 +715,9 @@ ifeq ($(do_tools_perf_jvmti),true)
  install -m755 $(builddirpa)/tools/perf/libperf-jvmti.so $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
 endif
 endif
+ifeq ($(do_tools_bpftool),true)
+ install -m755 $(builddirpa)/tools/bpf/bpftool/bpftool $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
+endif
 ifeq ($(do_tools_x86),true)
  install -m755 $(builddirpa)/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy \
  $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
diff --git a/debian/rules.d/3-binary-indep.mk b/debian/rules.d/3-binary-indep.mk
index b27275685612..e5c6bc0c2c8a 100644
--- a/debian/rules.d/3-binary-indep.mk
+++ b/debian/rules.d/3-binary-indep.mk
@@ -84,6 +84,7 @@ install-tools: toolspkg = $(tools_common_pkg_name)
 install-tools: toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin
 install-tools: toolssbin = $(CURDIR)/debian/$(toolspkg)/usr/sbin
 install-tools: toolsman = $(CURDIR)/debian/$(toolspkg)/usr/share/man
+install-tools: toolsbashcomp = $(CURDIR)/debian/$(toolspkg)/usr/share/bash-completion/completions
 install-tools: hosttoolspkg = $(hosttools_pkg_name)
 install-tools: hosttoolsbin = $(CURDIR)/debian/$(hosttoolspkg)/usr/bin
 install-tools: hosttoolsman = $(CURDIR)/debian/$(hosttoolspkg)/usr/share/man
@@ -102,7 +103,10 @@ ifeq ($(do_tools_common),true)
  rsync -a tools/ $(builddir)/tools/tools/
 
  install -d $(toolsbin)
+ install -d $(toolssbin)
  install -d $(toolsman)/man1
+ install -d $(toolsman)/man8
+ install -d $(toolsbashcomp)
 
  install -m755 debian/tools/generic $(toolsbin)/usbip
  install -m755 debian/tools/generic $(toolsbin)/usbipd
@@ -113,6 +117,13 @@ ifeq ($(do_tools_common),true)
 
  install -m755 debian/tools/generic $(toolsbin)/perf
 
+ install -m755 debian/tools/generic $(toolssbin)/bpftool
+ make -C $(builddir)/tools/tools/bpf/bpftool doc
+ install -m644 $(builddir)/tools/tools/bpf/bpftool/Documentation/*.8 \
+ $(toolsman)/man8
+ install -m644 $(builddir)/tools/tools/bpf/bpftool/bash-completion/bpftool \
+ $(toolsbashcomp)
+
  install -m755 debian/tools/generic $(toolsbin)/x86_energy_perf_policy
  install -m755 debian/tools/generic $(toolsbin)/turbostat
 
@@ -120,7 +131,6 @@ ifeq ($(do_tools_common),true)
  install -m644 $(builddir)/tools/tools/perf/Documentation/*.1 \
  $(toolsman)/man1
 
- install -d $(toolsman)/man8
  install -m644 $(CURDIR)/tools/power/x86/x86_energy_perf_policy/*.8 $(toolsman)/man8
  install -m644 $(CURDIR)/tools/power/x86/turbostat/*.8 $(toolsman)/man8
 
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU][BIONIC][PATCH v3 0/2] add bpftool to linux-tools-common

Seth Forshee
In reply to this post by Quentin Monnet
On Wed, Nov 20, 2019 at 11:48:19AM +0000, Quentin Monnet wrote:

> BugLink: https://bugs.launchpad.net/bugs/1774815
>
> [Impact]
>
> bpftool is a debugging and introspection tool for BPF elements,
> developed by the BPF kernel community. It is essential to list and dump
> BPF programs and maps loaded on the system. Its sources are located in
> the kernel repository, and because it is not packaged, administrators
> willing to use bpftool must download the whole kernel sources, compile
> and install the utility.
>
> [Fix]
>
> Adding bpftool to linux-tools and linux-tools-common packages makes it
> easily accessible. These packages are already used to provide other
> tools located in the kernel repository, such as perf.
>
> The bpftool version provided with kernel 4.15 does not build properly,
> because the API changed at some point in bfd.h from binutils-dev. Also,
> it should be noted that the binutils-dev package description forbids
> dependencies on libbfd:
>
>    This package includes header files and static libraries necessary to
>    build programs which use the GNU BFD library, which is part of
>    binutils.  Note that building Debian packages which depend on the
>    shared libbfd is Not Allowed.
>
> Therefore, the proposed solution here is to get rid of the
> libbfd/binutils-dev dependency entirely. So far it was used by perf
> only, but perf can also be compiled without it anyway. Removing
> binutils-dev also avoids being locked to a specific libbfd version in
> case of future API changes.
>
> This series contains four patches: the first to add feature detection to
> bpftool Makefile, the second to use those features and to leave out the
> bits relying on libbpfd. Then third patch removes dependency on
> binutils-dev for the Linux package. At last, fourth patch adds packaging
> for bpftool.
>
> [Testcase]
>
> A test linux package was successfully built, at:
>
> https://launchpad.net/~qmonnet/+archive/ubuntu/ppa-linux-bpftool
>
> (Built with:
>   do_zfs=false
>   do_dkms_nvidia=false
>   do_dkms_vbox=false
>   skipabi=true
>   skipmodule=true
>   skipretpoline=true)
>
> Packages linux-tools-$(uname -r) and linux-tools-common can be built
> with "debian/rules binary", and contain bpftool's binary and related
> files (redirection script, bpftool manual pages, bash completion),
> respectively.
>
> [Regression Potential]
>
> Low, as far as I can tell:
>
> - binutils-dev was only used for building perf, but it is not mandatory
>   and perf can be built without libbfd. The dependency on binutils-dev
>   has been successfully removed on eoan.
>
> - The backported patches touch only bpftool and one feature in
>   tools/build/feature (only used with bpftool), all of it user space
>   tools not used for anything other than bpftool itself.
>
> - bpftool packaging does not change the way other tools are packaged
>   (apart from creating $(toolsman)/man8 a few lines earlier), and should
>   have no impact on the packaging of other tools. One dependency is
>   added to Build-Depends-Indep.
>
> ---
> Packaging for bpftool is upstream in eoan/master-next as commit 8579afd20b0c.
>
> Discussion on v2 for bionic is available at:
> https://lists.ubuntu.com/archives/kernel-team/2019-October/104622.html
>
> Changes in v3:
> - Remove dependency on libbpf (bintutils-dev package). This adds two
>   patches: one to actually remove the dependency, the other (backported)
>   to make bpftool build without libbfd. The commit fixing the build for
>   binutils >= 2.9, backported in the previous iteration to fix bpftool
>   compilation, is kept in this series because it adds feature detection
>   to bpftool Makefile (required to build without libbfd).
>
> Changes in v2:
> - Patch has been applied to eoan.
> - Switch from python-docutils to python3-docutils for the dependency
>   providing rst2man for manual pages.
> - Set CROSS_COMPILE when building bpftool.
>
> I have been away from work for some time, please accept my sincere
> apologies for the delay since v2 - especially because I chased up in the
> past to have the set reviewed.

And I apologize for not acking this sooneer, seems I missed it on the
list when it was sent.

Acked-by: Seth Forshee <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU][BIONIC][PATCH v3 0/2] add bpftool to linux-tools-common

Kleber Souza
In reply to this post by Quentin Monnet
On 20.11.19 12:48, Quentin Monnet wrote:

> BugLink: https://bugs.launchpad.net/bugs/1774815
>
> [Impact]
>
> bpftool is a debugging and introspection tool for BPF elements,
> developed by the BPF kernel community. It is essential to list and dump
> BPF programs and maps loaded on the system. Its sources are located in
> the kernel repository, and because it is not packaged, administrators
> willing to use bpftool must download the whole kernel sources, compile
> and install the utility.
>
> [Fix]
>
> Adding bpftool to linux-tools and linux-tools-common packages makes it
> easily accessible. These packages are already used to provide other
> tools located in the kernel repository, such as perf.
>
> The bpftool version provided with kernel 4.15 does not build properly,
> because the API changed at some point in bfd.h from binutils-dev. Also,
> it should be noted that the binutils-dev package description forbids
> dependencies on libbfd:
>
>    This package includes header files and static libraries necessary to
>    build programs which use the GNU BFD library, which is part of
>    binutils.  Note that building Debian packages which depend on the
>    shared libbfd is Not Allowed.
>
> Therefore, the proposed solution here is to get rid of the
> libbfd/binutils-dev dependency entirely. So far it was used by perf
> only, but perf can also be compiled without it anyway. Removing
> binutils-dev also avoids being locked to a specific libbfd version in
> case of future API changes.
>
> This series contains four patches: the first to add feature detection to
> bpftool Makefile, the second to use those features and to leave out the
> bits relying on libbpfd. Then third patch removes dependency on
> binutils-dev for the Linux package. At last, fourth patch adds packaging
> for bpftool.
>
> [Testcase]
>
> A test linux package was successfully built, at:
>
> https://launchpad.net/~qmonnet/+archive/ubuntu/ppa-linux-bpftool
>
> (Built with:
>   do_zfs=false
>   do_dkms_nvidia=false
>   do_dkms_vbox=false
>   skipabi=true
>   skipmodule=true
>   skipretpoline=true)
>
> Packages linux-tools-$(uname -r) and linux-tools-common can be built
> with "debian/rules binary", and contain bpftool's binary and related
> files (redirection script, bpftool manual pages, bash completion),
> respectively.
>
> [Regression Potential]
>
> Low, as far as I can tell:
>
> - binutils-dev was only used for building perf, but it is not mandatory
>   and perf can be built without libbfd. The dependency on binutils-dev
>   has been successfully removed on eoan.
>
> - The backported patches touch only bpftool and one feature in
>   tools/build/feature (only used with bpftool), all of it user space
>   tools not used for anything other than bpftool itself.
>
> - bpftool packaging does not change the way other tools are packaged
>   (apart from creating $(toolsman)/man8 a few lines earlier), and should
>   have no impact on the packaging of other tools. One dependency is
>   added to Build-Depends-Indep.
>
> ---
> Packaging for bpftool is upstream in eoan/master-next as commit 8579afd20b0c.
>
> Discussion on v2 for bionic is available at:
> https://lists.ubuntu.com/archives/kernel-team/2019-October/104622.html
>
> Changes in v3:
> - Remove dependency on libbpf (bintutils-dev package). This adds two
>   patches: one to actually remove the dependency, the other (backported)
>   to make bpftool build without libbfd. The commit fixing the build for
>   binutils >= 2.9, backported in the previous iteration to fix bpftool
>   compilation, is kept in this series because it adds feature detection
>   to bpftool Makefile (required to build without libbfd).
>
> Changes in v2:
> - Patch has been applied to eoan.
> - Switch from python-docutils to python3-docutils for the dependency
>   providing rst2man for manual pages.
> - Set CROSS_COMPILE when building bpftool.
>
> I have been away from work for some time, please accept my sincere
> apologies for the delay since v2 - especially because I chased up in the
> past to have the set reviewed.
>
> Quentin Monnet (1):
>   UBUNTU: [Debian] package bpftool in linux-tools-common
>
> Roman Gushchin (1):
>   tools/bpftool: fix bpftool build with bintutils >= 2.9
>
> Seth Forshee (1):
>   UBUNTU: [Debian] Remove binutils-dev build dependency
>
> Stanislav Fomichev (1):
>   bpftool: make libbfd optional
>
>  debian.master/control.stub.in                 |  2 +-
>  debian.master/rules.d/amd64.mk                |  1 +
>  debian.master/rules.d/arm64.mk                |  1 +
>  debian.master/rules.d/armhf.mk                |  1 +
>  debian.master/rules.d/i386.mk                 |  1 +
>  debian.master/rules.d/ppc64el.mk              |  1 +
>  debian.master/rules.d/s390x.mk                |  1 +
>  debian/rules                                  |  2 +-
>  debian/rules.d/1-maintainer.mk                |  1 +
>  debian/rules.d/2-binary-arch.mk               |  9 +++++
>  debian/rules.d/3-binary-indep.mk              | 12 +++++-
>  tools/bpf/Makefile                            | 29 +++++++++++++++
>  tools/bpf/bpf_jit_disasm.c                    |  7 ++++
>  tools/bpf/bpftool/Makefile                    | 37 ++++++++++++++++++-
>  tools/bpf/bpftool/jit_disasm.c                | 13 +++++++
>  tools/bpf/bpftool/main.c                      |  3 --
>  tools/bpf/bpftool/main.h                      | 13 +++++++
>  tools/bpf/bpftool/prog.c                      |  3 ++
>  tools/build/feature/Makefile                  |  4 ++
>  .../feature/test-disassembler-four-args.c     | 15 ++++++++
>  20 files changed, 148 insertions(+), 8 deletions(-)
>  create mode 100644 tools/build/feature/test-disassembler-four-args.c
>

These changes look good to me.

Thank you!


Acked-by: Kleber Sacilotto de Souza <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED: [SRU][BIONIC][PATCH v3 0/2] add bpftool to linux-tools-common

Kleber Souza
In reply to this post by Quentin Monnet
On 20.11.19 12:48, Quentin Monnet wrote:

> BugLink: https://bugs.launchpad.net/bugs/1774815
>
> [Impact]
>
> bpftool is a debugging and introspection tool for BPF elements,
> developed by the BPF kernel community. It is essential to list and dump
> BPF programs and maps loaded on the system. Its sources are located in
> the kernel repository, and because it is not packaged, administrators
> willing to use bpftool must download the whole kernel sources, compile
> and install the utility.
>
> [Fix]
>
> Adding bpftool to linux-tools and linux-tools-common packages makes it
> easily accessible. These packages are already used to provide other
> tools located in the kernel repository, such as perf.
>
> The bpftool version provided with kernel 4.15 does not build properly,
> because the API changed at some point in bfd.h from binutils-dev. Also,
> it should be noted that the binutils-dev package description forbids
> dependencies on libbfd:
>
>    This package includes header files and static libraries necessary to
>    build programs which use the GNU BFD library, which is part of
>    binutils.  Note that building Debian packages which depend on the
>    shared libbfd is Not Allowed.
>
> Therefore, the proposed solution here is to get rid of the
> libbfd/binutils-dev dependency entirely. So far it was used by perf
> only, but perf can also be compiled without it anyway. Removing
> binutils-dev also avoids being locked to a specific libbfd version in
> case of future API changes.
>
> This series contains four patches: the first to add feature detection to
> bpftool Makefile, the second to use those features and to leave out the
> bits relying on libbpfd. Then third patch removes dependency on
> binutils-dev for the Linux package. At last, fourth patch adds packaging
> for bpftool.
>
> [Testcase]
>
> A test linux package was successfully built, at:
>
> https://launchpad.net/~qmonnet/+archive/ubuntu/ppa-linux-bpftool
>
> (Built with:
>   do_zfs=false
>   do_dkms_nvidia=false
>   do_dkms_vbox=false
>   skipabi=true
>   skipmodule=true
>   skipretpoline=true)
>
> Packages linux-tools-$(uname -r) and linux-tools-common can be built
> with "debian/rules binary", and contain bpftool's binary and related
> files (redirection script, bpftool manual pages, bash completion),
> respectively.
>
> [Regression Potential]
>
> Low, as far as I can tell:
>
> - binutils-dev was only used for building perf, but it is not mandatory
>   and perf can be built without libbfd. The dependency on binutils-dev
>   has been successfully removed on eoan.
>
> - The backported patches touch only bpftool and one feature in
>   tools/build/feature (only used with bpftool), all of it user space
>   tools not used for anything other than bpftool itself.
>
> - bpftool packaging does not change the way other tools are packaged
>   (apart from creating $(toolsman)/man8 a few lines earlier), and should
>   have no impact on the packaging of other tools. One dependency is
>   added to Build-Depends-Indep.
>
> ---
> Packaging for bpftool is upstream in eoan/master-next as commit 8579afd20b0c.
>
> Discussion on v2 for bionic is available at:
> https://lists.ubuntu.com/archives/kernel-team/2019-October/104622.html
>
> Changes in v3:
> - Remove dependency on libbpf (bintutils-dev package). This adds two
>   patches: one to actually remove the dependency, the other (backported)
>   to make bpftool build without libbfd. The commit fixing the build for
>   binutils >= 2.9, backported in the previous iteration to fix bpftool
>   compilation, is kept in this series because it adds feature detection
>   to bpftool Makefile (required to build without libbfd).
>
> Changes in v2:
> - Patch has been applied to eoan.
> - Switch from python-docutils to python3-docutils for the dependency
>   providing rst2man for manual pages.
> - Set CROSS_COMPILE when building bpftool.
>
> I have been away from work for some time, please accept my sincere
> apologies for the delay since v2 - especially because I chased up in the
> past to have the set reviewed.
>
> Quentin Monnet (1):
>   UBUNTU: [Debian] package bpftool in linux-tools-common
>
> Roman Gushchin (1):
>   tools/bpftool: fix bpftool build with bintutils >= 2.9
>
> Seth Forshee (1):
>   UBUNTU: [Debian] Remove binutils-dev build dependency
>
> Stanislav Fomichev (1):
>   bpftool: make libbfd optional
>
>  debian.master/control.stub.in                 |  2 +-
>  debian.master/rules.d/amd64.mk                |  1 +
>  debian.master/rules.d/arm64.mk                |  1 +
>  debian.master/rules.d/armhf.mk                |  1 +
>  debian.master/rules.d/i386.mk                 |  1 +
>  debian.master/rules.d/ppc64el.mk              |  1 +
>  debian.master/rules.d/s390x.mk                |  1 +
>  debian/rules                                  |  2 +-
>  debian/rules.d/1-maintainer.mk                |  1 +
>  debian/rules.d/2-binary-arch.mk               |  9 +++++
>  debian/rules.d/3-binary-indep.mk              | 12 +++++-
>  tools/bpf/Makefile                            | 29 +++++++++++++++
>  tools/bpf/bpf_jit_disasm.c                    |  7 ++++
>  tools/bpf/bpftool/Makefile                    | 37 ++++++++++++++++++-
>  tools/bpf/bpftool/jit_disasm.c                | 13 +++++++
>  tools/bpf/bpftool/main.c                      |  3 --
>  tools/bpf/bpftool/main.h                      | 13 +++++++
>  tools/bpf/bpftool/prog.c                      |  3 ++
>  tools/build/feature/Makefile                  |  4 ++
>  .../feature/test-disassembler-four-args.c     | 15 ++++++++
>  20 files changed, 148 insertions(+), 8 deletions(-)
>  create mode 100644 tools/build/feature/test-disassembler-four-args.c
>

Applied to bionic/linux.

Thanks,
Kleber

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team