From patchwork Tue Sep 29 10:26:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qais Yousef X-Patchwork-Id: 1373269 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4C0wYB5tPhz9sPB for ; Tue, 29 Sep 2020 20:26:54 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 5633085F6A; Tue, 29 Sep 2020 10:26:53 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id E6AcxOY8XZj9; Tue, 29 Sep 2020 10:26:51 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 98E6785F5A; Tue, 29 Sep 2020 10:26:51 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 96ACE1BF232 for ; Tue, 29 Sep 2020 10:26:49 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 9359385AC7 for ; Tue, 29 Sep 2020 10:26:49 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oKnj7A-doC5I for ; Tue, 29 Sep 2020 10:26:48 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by hemlock.osuosl.org (Postfix) with ESMTP id 1F9118533D for ; Tue, 29 Sep 2020 10:26:48 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3DBA831B; Tue, 29 Sep 2020 03:26:47 -0700 (PDT) Received: from e107158-lin.cambridge.arm.com (e107158-lin.cambridge.arm.com [10.1.195.21]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 73D973F6CF; Tue, 29 Sep 2020 03:26:46 -0700 (PDT) From: Qais Yousef To: buildroot@buildroot.org Date: Tue, 29 Sep 2020 11:26:17 +0100 Message-Id: <20200929102618.28571-4-qais.yousef@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200929102618.28571-1-qais.yousef@arm.com> References: <20200929102618.28571-1-qais.yousef@arm.com> Subject: [Buildroot] [RFC PATCH 3/4] Add bpftrace package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Joseph Kogut , Romain Naour , Qais Yousef , Valentin Korenblit MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" bpftrace is a high-level tracing language for Linux enhanced Berkeley Packet Filter (eBPF) available in recent Linux kernels (4.x). Only tested on x86_64 and aarch64. The package doesn't support i386 and aarch32. Signed-off-by: Qais Yousef --- package/Config.in | 1 + .../0001-fix-no-sys-auxv-header.patch | 22 +++++++++++++++ ...02-fix-missing-def-ADDR_NO_RANDOMIZE.patch | 13 +++++++++ package/bpftrace/0003-install-libparser.patch | 12 +++++++++ .../bpftrace/0004-install-libresources.patch | 12 +++++++++ package/bpftrace/0005-install-libarch.patch | 10 +++++++ package/bpftrace/0006-install-libast.patch | 11 ++++++++ package/bpftrace/Config.in | 27 +++++++++++++++++++ package/bpftrace/bpftrace.mk | 17 ++++++++++++ 9 files changed, 125 insertions(+) create mode 100644 package/bpftrace/0001-fix-no-sys-auxv-header.patch create mode 100644 package/bpftrace/0002-fix-missing-def-ADDR_NO_RANDOMIZE.patch create mode 100644 package/bpftrace/0003-install-libparser.patch create mode 100644 package/bpftrace/0004-install-libresources.patch create mode 100644 package/bpftrace/0005-install-libarch.patch create mode 100644 package/bpftrace/0006-install-libast.patch create mode 100644 package/bpftrace/Config.in create mode 100644 package/bpftrace/bpftrace.mk diff --git a/package/Config.in b/package/Config.in index 03ed3e5874..c7e352be82 100644 --- a/package/Config.in +++ b/package/Config.in @@ -86,6 +86,7 @@ menu "Debugging, profiling and benchmark" source "package/blktrace/Config.in" source "package/bcc/Config.in" source "package/bonnie/Config.in" + source "package/bpftrace/Config.in" source "package/cache-calibrator/Config.in" source "package/clinfo/Config.in" source "package/dacapo/Config.in" diff --git a/package/bpftrace/0001-fix-no-sys-auxv-header.patch b/package/bpftrace/0001-fix-no-sys-auxv-header.patch new file mode 100644 index 0000000000..c89fbe51ee --- /dev/null +++ b/package/bpftrace/0001-fix-no-sys-auxv-header.patch @@ -0,0 +1,22 @@ +Signed-off-by: Qais Yousef + +--- ./src/attached_probe.cpp.old 2020-07-28 13:23:20.599528129 +0100 ++++ ./src/attached_probe.cpp 2020-07-28 13:23:49.199715578 +0100 +@@ -8,7 +8,7 @@ + #include + #include + #include +-#include ++//#include + #include + #include + #include +@@ -612,7 +612,7 @@ + // the build-time constant if unavailable. This always matches the + // running kernel, but is not supported on arm32. + unsigned code = 0; +- unsigned long base = getauxval(AT_SYSINFO_EHDR); ++ unsigned long base = 0; //getauxval(AT_SYSINFO_EHDR); + if (base && !memcmp(reinterpret_cast(base), ELFMAG, 4)) + code = _find_version_note(base); + if (! code) diff --git a/package/bpftrace/0002-fix-missing-def-ADDR_NO_RANDOMIZE.patch b/package/bpftrace/0002-fix-missing-def-ADDR_NO_RANDOMIZE.patch new file mode 100644 index 0000000000..0481348068 --- /dev/null +++ b/package/bpftrace/0002-fix-missing-def-ADDR_NO_RANDOMIZE.patch @@ -0,0 +1,13 @@ +Signed-off-by: Qais Yousef + +--- ./src/bpftrace.cpp.old 2020-07-28 13:24:42.322117517 +0100 ++++ ./src/bpftrace.cpp 2020-07-28 13:25:08.651880968 +0100 +@@ -37,6 +37,8 @@ + #include "triggers.h" + #include "utils.h" + ++#define ADDR_NO_RANDOMIZE 0x0040000 ++ + namespace libbpf { + #define __BPF_NAME_FN(x) #x + const char *bpf_func_name[] = { __BPF_FUNC_MAPPER(__BPF_NAME_FN) }; diff --git a/package/bpftrace/0003-install-libparser.patch b/package/bpftrace/0003-install-libparser.patch new file mode 100644 index 0000000000..9cf368cb7a --- /dev/null +++ b/package/bpftrace/0003-install-libparser.patch @@ -0,0 +1,12 @@ +Signed-off-by: Qais Yousef + +--- ./CMakeLists.txt.old 2020-07-28 23:08:33.068910392 +0100 ++++ ./CMakeLists.txt 2020-07-28 23:08:41.529166766 +0100 +@@ -94,6 +94,7 @@ + add_library(parser ${BISON_bison_parser_OUTPUTS} ${FLEX_flex_lexer_OUTPUTS}) + target_compile_options(parser PRIVATE "-w") + target_include_directories(parser PUBLIC src src/ast ${CMAKE_BINARY_DIR}) ++install(TARGETS parser LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + + include(CheckSymbolExists) + set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) diff --git a/package/bpftrace/0004-install-libresources.patch b/package/bpftrace/0004-install-libresources.patch new file mode 100644 index 0000000000..4c1902e2b3 --- /dev/null +++ b/package/bpftrace/0004-install-libresources.patch @@ -0,0 +1,12 @@ +Signed-off-by: Qais Yousef + +--- ./resources/CMakeLists.txt.old 2020-07-28 23:08:53.037515482 +0100 ++++ ./resources/CMakeLists.txt 2020-07-28 23:09:24.934482032 +0100 +@@ -1,6 +1,7 @@ + add_library(resources headers.cpp) + + target_include_directories(resources PUBLIC ../src) ++install(TARGETS resources LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + + function(embed_headers output) + file(WRITE ${output} "#include \"headers.h\"\n\nnamespace bpftrace {\n") diff --git a/package/bpftrace/0005-install-libarch.patch b/package/bpftrace/0005-install-libarch.patch new file mode 100644 index 0000000000..04812ff313 --- /dev/null +++ b/package/bpftrace/0005-install-libarch.patch @@ -0,0 +1,10 @@ +Signed-off-by: Qais Yousef + +--- ./src/arch/CMakeLists.txt.old 2020-07-28 23:01:18.283735497 +0100 ++++ ./src/arch/CMakeLists.txt 2020-07-28 23:02:13.865419746 +0100 +@@ -11,3 +11,5 @@ + else() + message(FATAL_ERROR "Unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}") + endif() ++ ++install(TARGETS arch LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/package/bpftrace/0006-install-libast.patch b/package/bpftrace/0006-install-libast.patch new file mode 100644 index 0000000000..c84991d360 --- /dev/null +++ b/package/bpftrace/0006-install-libast.patch @@ -0,0 +1,11 @@ +Signed-off-by: Qais Yousef + +--- ./src/ast/CMakeLists.txt.old 2020-07-28 23:00:16.837873565 +0100 ++++ ./src/ast/CMakeLists.txt 2020-07-28 23:04:08.320887977 +0100 +@@ -67,4 +67,6 @@ + target_link_libraries(ast ${llvm_libs}) + endif() + target_link_libraries(ast libclang) ++ ++ install(TARGETS ast LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() diff --git a/package/bpftrace/Config.in b/package/bpftrace/Config.in new file mode 100644 index 0000000000..a4bae478dc --- /dev/null +++ b/package/bpftrace/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_BPFTRACE + bool "bpftrace" + depends on BR2_aarch64 || BR2_aarch64_be || BR2_x86_64 + depends on BR2_PACKAGE_BCC + depends on BR2_PACKAGE_LLVM_RTTI + help + BPFTrace + + bpftrace is a high-level tracing language for Linux enhanced + Berkeley Packet Filter (eBPF) available in recent Linux + kernels (4.x). + + bpftrace uses LLVM as a backend to compile scripts to + BPF-bytecode and makes use of BCC for interacting with the + Linux BPF system, as well as existing Linux tracing + capabilities: kernel dynamic tracing (kprobes), user-level + dynamic tracing (uprobes), and tracepoints. The bpftrace + language is inspired by awk and C, and predecessor tracers + such as DTrace and SystemTap. + + https://www.github.com/iovisor/bpftrace + +comment "bpftrace supported on aarch64 and x86_64" + depends on !(BR2_aarch64 || BR2_aarch64_be || BR2_x86_64) + +comment "bpftrace needs bcc, llvm-rtti" + depends on !BR2_PACKAGE_BCC || !BR2_PACKAGE_LLVM_RTTI diff --git a/package/bpftrace/bpftrace.mk b/package/bpftrace/bpftrace.mk new file mode 100644 index 0000000000..d5975618f1 --- /dev/null +++ b/package/bpftrace/bpftrace.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# BPFTrace +# +################################################################################ + +BPFTRACE_VERSION = v0.11.0 +BPFTRACE_SITE = https://github.com/iovisor/bpftrace +BPFTRACE_SITE_METHOD = git +BPFTRACE_LICENSE = Apache-2.0 +BPFTRACE_LICENSE_FILES = LICENSE +BPFTRACE_INSTALL_STAGING = YES +BPFTRACE_DEPENDENCIES = bcc + +BPFTRACE_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release + +$(eval $(cmake-package))