From 562f7aca78251f60d12eaccf6e7b223f161427b1 Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Date: May 30 2019 10:30:07 +0000 Subject: Rebase to new released version - Resolves #1714902 Signed-off-by: Rafael dos Santos --- diff --git a/.gitignore b/.gitignore index c867f73..7a0c83e 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /bcc-0.7.0.tar.gz /bcc-0.8.0.tar.gz /bcc-0.9.0.tar.gz +/bcc-0.10.0.tar.gz diff --git a/bcc-0.8.0-usdt-s390x.patch b/bcc-0.8.0-usdt-s390x.patch deleted file mode 100644 index 54670c3..0000000 --- a/bcc-0.8.0-usdt-s390x.patch +++ /dev/null @@ -1,180 +0,0 @@ -From ba41501bb2ca89312061b31c08e570a11c092370 Mon Sep 17 00:00:00 2001 -From: mephi42 -Date: Tue, 12 Mar 2019 07:02:56 +0100 -Subject: [PATCH] Add basic USDT support for s390x (#2266) - -Approach and code shamelessly borrowed from "422db709: Add basic USDT -support for powerpc64". ---- - src/cc/usdt.h | 7 +++++ - src/cc/usdt/usdt.cc | 2 ++ - src/cc/usdt/usdt_args.cc | 53 ++++++++++++++++++++++++++++++++++++++ - tests/cc/test_usdt_args.cc | 46 +++++++++++++++++++++++++++++++++ - 4 files changed, 108 insertions(+) - -diff --git a/src/cc/usdt.h b/src/cc/usdt.h -index 6d89fd644..406cfd546 100644 ---- a/src/cc/usdt.h -+++ b/src/cc/usdt.h -@@ -81,6 +81,7 @@ class Argument { - friend class ArgumentParser; - friend class ArgumentParser_aarch64; - friend class ArgumentParser_powerpc64; -+ friend class ArgumentParser_s390x; - friend class ArgumentParser_x64; - }; - -@@ -130,6 +131,12 @@ class ArgumentParser_powerpc64 : public ArgumentParser { - ArgumentParser_powerpc64(const char *arg) : ArgumentParser(arg) {} - }; - -+class ArgumentParser_s390x : public ArgumentParser { -+public: -+ bool parse(Argument *dest); -+ ArgumentParser_s390x(const char *arg) : ArgumentParser(arg) {} -+}; -+ - class ArgumentParser_x64 : public ArgumentParser { - private: - enum Register { -diff --git a/src/cc/usdt/usdt.cc b/src/cc/usdt/usdt.cc -index 0914fe3a5..c91faa016 100644 ---- a/src/cc/usdt/usdt.cc -+++ b/src/cc/usdt/usdt.cc -@@ -40,6 +40,8 @@ Location::Location(uint64_t addr, const std::string &bin_path, const char *arg_f - ArgumentParser_aarch64 parser(arg_fmt); - #elif __powerpc64__ - ArgumentParser_powerpc64 parser(arg_fmt); -+#elif __s390x__ -+ ArgumentParser_s390x parser(arg_fmt); - #else - ArgumentParser_x64 parser(arg_fmt); - #endif -diff --git a/src/cc/usdt/usdt_args.cc b/src/cc/usdt/usdt_args.cc -index b27e515f4..3e2045575 100644 ---- a/src/cc/usdt/usdt_args.cc -+++ b/src/cc/usdt/usdt_args.cc -@@ -285,6 +285,59 @@ bool ArgumentParser_powerpc64::parse(Argument *dest) { - return true; - } - -+bool ArgumentParser_s390x::parse(Argument *dest) { -+ if (done()) -+ return false; -+ -+ bool matched; -+ std::cmatch matches; -+#define S390X_IMM "(-?[0-9]+)" -+ std::regex arg_n_regex("^" S390X_IMM "@"); -+ // -+ std::regex arg_op_regex_imm("^" S390X_IMM "(?: +|$)"); -+ // %r -+#define S390X_REG "%r([0-9]|1[0-5])" -+ std::regex arg_op_regex_reg("^" S390X_REG "(?: +|$)"); -+ // (%r,%r) -+ std::regex arg_op_regex_mem("^" S390X_IMM "?\\(" S390X_REG -+ "(?:," S390X_REG ")?\\)(?: +|$)"); -+#undef S390X_IMM -+#undef S390X_REG -+ -+ matched = std::regex_search(arg_ + cur_pos_, matches, arg_n_regex); -+ if (matched) { -+ dest->arg_size_ = stoi(matches.str(1)); -+ cur_pos_ += matches.length(0); -+ -+ if (std::regex_search(arg_ + cur_pos_, matches, arg_op_regex_imm)) { -+ dest->constant_ = stoi(matches.str(1)); -+ } else if (std::regex_search(arg_ + cur_pos_, matches, arg_op_regex_reg)) { -+ dest->base_register_name_ = "gprs[" + matches.str(1) + "]"; -+ } else if (std::regex_search(arg_ + cur_pos_, matches, arg_op_regex_mem)) { -+ if (matches.length(1) > 0) { -+ dest->deref_offset_ = stoi(matches.str(1)); -+ } -+ dest->base_register_name_ = "gprs[" + matches.str(2) + "]"; -+ if (matches.length(3) > 0) { -+ dest->index_register_name_ = "gprs[" + matches.str(3) + "]"; -+ } -+ } else { -+ matched = false; -+ } -+ } -+ -+ if (!matched) { -+ print_error(cur_pos_); -+ skip_until_whitespace_from(cur_pos_); -+ skip_whitespace_from(cur_pos_); -+ return false; -+ } -+ -+ cur_pos_ += matches.length(0); -+ skip_whitespace_from(cur_pos_); -+ return true; -+} -+ - ssize_t ArgumentParser_x64::parse_identifier(ssize_t pos, - optional *result) { - if (isalpha(arg_[pos]) || arg_[pos] == '_') { -diff --git a/tests/cc/test_usdt_args.cc b/tests/cc/test_usdt_args.cc -index 3a96c5aac..db1f8c8e6 100644 ---- a/tests/cc/test_usdt_args.cc -+++ b/tests/cc/test_usdt_args.cc -@@ -58,6 +58,8 @@ TEST_CASE("test usdt argument parsing", "[usdt]") { - USDT::ArgumentParser_aarch64 parser("4@[x32,200]"); - #elif __powerpc64__ - USDT::ArgumentParser_powerpc64 parser("4@-12(42)"); -+#elif __s390x__ -+ USDT::ArgumentParser_s390x parser("4@-12(%r42)"); - #elif defined(__x86_64__) - USDT::ArgumentParser_x64 parser("4@i%ra+1r"); - #endif -@@ -121,6 +123,50 @@ TEST_CASE("test usdt argument parsing", "[usdt]") { - verify_register(parser, 2, 1097); - verify_register(parser, 4, "gpr[30]", 108); - verify_register(parser, -2, "gpr[31]", -4); -+#elif __s390x__ -+ USDT::ArgumentParser_s390x parser( -+ "-4@%r0 8@%r0 8@0 4@0(%r0) -2@0(%r0) " -+ "1@%r0 -2@%r3 -8@9 -1@0(%r4) -4@16(%r6) " -+ "2@%r7 4@%r11 4@-67 8@-16(%r15) 1@-52(%r11) " -+ "-8@%r4 -8@%r14 2@-11 -2@14(%r13) -8@-32(%r12) " -+ "4@%r5 2@%r11 -8@-693 -1@-23(%r10) 4@28(%r9) " -+ "-2@%r3 -4@%r8 2@1097 4@108(%r7) -2@-4(%r6)"); -+ -+ verify_register(parser, -4, "gprs[0]"); -+ verify_register(parser, 8, "gprs[0]"); -+ verify_register(parser, 8, 0); -+ verify_register(parser, 4, "gprs[0]", 0); -+ verify_register(parser, -2, "gprs[0]", 0); -+ -+ verify_register(parser, 1, "gprs[0]"); -+ verify_register(parser, -2, "gprs[3]"); -+ verify_register(parser, -8, 9); -+ verify_register(parser, -1, "gprs[4]", 0); -+ verify_register(parser, -4, "gprs[6]", 16); -+ -+ verify_register(parser, 2, "gprs[7]"); -+ verify_register(parser, 4, "gprs[11]"); -+ verify_register(parser, 4, -67); -+ verify_register(parser, 8, "gprs[15]", -16); -+ verify_register(parser, 1, "gprs[11]", -52); -+ -+ verify_register(parser, -8, "gprs[4]"); -+ verify_register(parser, -8, "gprs[14]"); -+ verify_register(parser, 2, -11); -+ verify_register(parser, -2, "gprs[13]", 14); -+ verify_register(parser, -8, "gprs[12]", -32); -+ -+ verify_register(parser, 4, "gprs[5]"); -+ verify_register(parser, 2, "gprs[11]"); -+ verify_register(parser, -8, -693); -+ verify_register(parser, -1, "gprs[10]", -23); -+ verify_register(parser, 4, "gprs[9]", 28); -+ -+ verify_register(parser, -2, "gprs[3]"); -+ verify_register(parser, -4, "gprs[8]"); -+ verify_register(parser, 2, 1097); -+ verify_register(parser, 4, "gprs[7]", 108); -+ verify_register(parser, -2, "gprs[6]", -4); - #elif defined(__x86_64__) - USDT::ArgumentParser_x64 parser( - "-4@$0 8@$1234 %rdi %rax %rsi " diff --git a/bcc-0.9.0-rename-libbpf.patch b/bcc-0.9.0-rename-libbpf.patch deleted file mode 100644 index 3ee60be..0000000 --- a/bcc-0.9.0-rename-libbpf.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 3677925107c203d6e959250776cf7afd80e04da0 Mon Sep 17 00:00:00 2001 -From: yonghong-song -Date: Wed, 27 Mar 2019 08:52:24 -0700 -Subject: [PATCH] rename libbpf.{a,so} to libbcc_bpf.{a,so} (#2290) - -This is based on discussion in netdev regarding to libbpf repo -packaging: - https://lore.kernel.org/bpf/20190325202009.GA14511@krava/T/#t - -The libbpf repo https://github.com/libbpf/libbpf contains -the linux:tools/lib/bpf codes plus some other uapi and auxiliary -headers. It is natural for libbpf repo to generate a -libbpf.{a,so} installable as a package. - -To avoid conflicts, let us rename bcc libbpf.{a,so} -to libbcc_bpf.{a,so}. - -Signed-off-by: Yonghong Song ---- - src/cc/CMakeLists.txt | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/cc/CMakeLists.txt b/src/cc/CMakeLists.txt -index 59a598560..1c3df632c 100644 ---- a/src/cc/CMakeLists.txt -+++ b/src/cc/CMakeLists.txt -@@ -30,10 +30,10 @@ include(static_libstdc++) - - file(GLOB libbpf_sources "libbpf/src/*.c") - add_library(bpf-static STATIC libbpf.c perf_reader.c ${libbpf_sources}) --set_target_properties(bpf-static PROPERTIES OUTPUT_NAME bpf) -+set_target_properties(bpf-static PROPERTIES OUTPUT_NAME bcc_bpf) - add_library(bpf-shared SHARED libbpf.c perf_reader.c ${libbpf_sources}) - set_target_properties(bpf-shared PROPERTIES VERSION ${REVISION_LAST} SOVERSION 0) --set_target_properties(bpf-shared PROPERTIES OUTPUT_NAME bpf) -+set_target_properties(bpf-shared PROPERTIES OUTPUT_NAME bcc_bpf) - - set(bcc_common_sources bcc_common.cc bpf_module.cc bcc_btf.cc exported_files.cc) - if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 6 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 6) diff --git a/bcc.spec b/bcc.spec index defc195..98d9d83 100644 --- a/bcc.spec +++ b/bcc.spec @@ -8,7 +8,7 @@ %bcond_without llvm_static Name: bcc -Version: 0.9.0 +Version: 0.10.0 Release: 1%{?dist} Summary: BPF Compiler Collection (BCC) License: ASL 2.0 @@ -16,18 +16,14 @@ URL: https://github.com/iovisor/bcc # Generate source tarball until upstream bug is fixed # See https://github.com/iovisor/bcc/issues/2261 # To generate the tarball, use the following commands -# git clone -b "v0.9.0" --single-branch --depth 1 url bcc-0.9.0 -# pushd bcc-0.9.0 +# git clone -b "v0.10.0" --single-branch --depth 1 url bcc-0.10.0 +# pushd bcc-0.10.0 # git submodule update --init # popd -# tar zcvf bcc-0.9.0.tar.gz bcc-0.9.0/ +# tar zcvf bcc-0.10.0.tar.gz bcc-0.10.0/ #Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz Source0: %{name}-%{version}.tar.gz -# https://bugzilla.redhat.com/show_bug.cgi?id=1679310 -Patch0: %{name}-0.8.0-usdt-s390x.patch -Patch1: %{name}-%{version}-rename-libbpf.patch - # Arches will be included as upstream support is added and dependencies are # satisfied in the respective arches ExclusiveArch: x86_64 %{power64} aarch64 s390x @@ -183,6 +179,9 @@ rm -rf %{buildroot}%{_datadir}/%{name}/tools/old/ %changelog +* Wed May 29 2019 Rafael dos Santos - 0.10.0-1 +- Rebase to latest upstream version (#1714902) + * Thu Apr 25 2019 Rafael dos Santos - 0.9.0-1 - Rebase to latest upstream version (#1686626) - Rename libbpf header to libbcc_bpf diff --git a/sources b/sources index 5386e20..e176cde 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (bcc-0.9.0.tar.gz) = 1a81c2f7c901cffebf877208e51638714bf937d19cd81a10243aba0ba7131c9ebc69f44c0d6d310b0a6598f020a3a3ae13b8e483d7bedaeb4e991b6008ece8a6 +SHA512 (bcc-0.10.0.tar.gz) = b81458982cc5b0310b181435588a6ccf4fc2cf33e8ff34be90bf0a7aeb426766218e673a1eb77999a2d6797612b9e75fdbea082b569596ebdf302a456e3bbcf1