Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package bpftrace for openSUSE:Factory checked in at 2024-12-19 21:40:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bpftrace (Old) and /work/SRC/openSUSE:Factory/.bpftrace.new.29675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bpftrace" Thu Dec 19 21:40:52 2024 rev:31 rq:1232014 version:0.21.3 Changes: -------- --- /work/SRC/openSUSE:Factory/bpftrace/bpftrace.changes 2024-11-21 15:18:47.905879710 +0100 +++ /work/SRC/openSUSE:Factory/.bpftrace.new.29675/bpftrace.changes 2024-12-19 21:41:09.794006079 +0100 @@ -1,0 +2,6 @@ +Wed Dec 18 07:43:13 UTC 2024 - Shung-Hsi Yu <shung-hsi...@suse.com> + +- Update to 0.21.3 + * Fix alignment issue for multi-key maps + +------------------------------------------------------------------- Old: ---- bpftrace-0.21.2.tar.gz New: ---- bpftrace-0.21.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bpftrace.spec ++++++ --- /var/tmp/diff_new_pack.M1EsJI/_old 2024-12-19 21:41:10.226023986 +0100 +++ /var/tmp/diff_new_pack.M1EsJI/_new 2024-12-19 21:41:10.226023986 +0100 @@ -45,7 +45,7 @@ %endif Name: bpftrace -Version: 0.21.2 +Version: 0.21.3 Release: 0 Summary: High-level tracing language for Linux eBPF License: Apache-2.0 ++++++ bpftrace-0.21.2.tar.gz -> bpftrace-0.21.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bpftrace-0.21.2/CHANGELOG.md new/bpftrace-0.21.3/CHANGELOG.md --- old/bpftrace-0.21.2/CHANGELOG.md 2024-07-19 13:01:55.000000000 +0200 +++ new/bpftrace-0.21.3/CHANGELOG.md 2024-12-17 00:25:48.000000000 +0100 @@ -17,6 +17,11 @@ #### Docs #### Tools +## [0.21.3] 2024-12-16 + +- Fix alignment issue for multi-key maps + - [#3646](https://github.com/bpftrace/bpftrace/pull/3646) + ## [0.21.2] 2024-07-17 - Fix min/max map functions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bpftrace-0.21.2/CMakeLists.txt new/bpftrace-0.21.3/CMakeLists.txt --- old/bpftrace-0.21.2/CMakeLists.txt 2024-07-19 13:01:55.000000000 +0200 +++ new/bpftrace-0.21.3/CMakeLists.txt 2024-12-17 00:25:48.000000000 +0100 @@ -6,7 +6,7 @@ # bpftrace version number components. set(bpftrace_VERSION_MAJOR 0) set(bpftrace_VERSION_MINOR 21) -set(bpftrace_VERSION_PATCH 2) +set(bpftrace_VERSION_PATCH 3) include(GNUInstallDirs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bpftrace-0.21.2/src/ast/passes/codegen_llvm.cpp new/bpftrace-0.21.3/src/ast/passes/codegen_llvm.cpp --- old/bpftrace-0.21.2/src/ast/passes/codegen_llvm.cpp 2024-07-19 13:01:55.000000000 +0200 +++ new/bpftrace-0.21.3/src/ast/passes/codegen_llvm.cpp 2024-12-17 00:25:48.000000000 +0100 @@ -2832,6 +2832,16 @@ int offset = 0; bool aligned = true; int i = 0; + + // Determine if we need alignment for all keys first + for (size_t h = 0; h < map.vargs->size(); ++h) { + size_t map_key_size = map.key_type.args_[h].GetSize(); + if ((map_key_size % 8) != 0) { + aligned = false; + break; + } + } + // Construct a map key in the stack for (Expression *expr : *map.vargs) { auto scoped_del = accept(expr); @@ -2844,14 +2854,10 @@ if (expr->type.IsStringTy() && expr->type.GetSize() < map_key_size) b_.CreateMemsetBPF(offset_val, b_.getInt8(0), map_key_size); b_.CREATE_MEMCPY(offset_val, expr_, expr->type.GetSize(), 1); - if ((expr->type.GetSize() % 8) != 0) - aligned = false; } else { if (expr->type.IsArrayTy() || expr->type.IsRecordTy()) { // Read the array/struct into the key b_.CreateProbeRead(ctx_, offset_val, expr->type, expr_, expr->loc); - if ((expr->type.GetSize() % 8) != 0) - aligned = false; } else { // promote map key to 64-bit: Value *key_elem = b_.CreateIntCast(expr_, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bpftrace-0.21.2/src/output.cpp new/bpftrace-0.21.3/src/output.cpp --- old/bpftrace-0.21.2/src/output.cpp 2024-07-19 13:01:55.000000000 +0200 +++ new/bpftrace-0.21.3/src/output.cpp 2024-12-17 00:25:48.000000000 +0100 @@ -309,7 +309,7 @@ else if (type.IsIntTy()) { auto sign = type.IsSigned(); switch (type.GetIntBitWidth()) { - // clang-format off + // clang-format off case 64: if (sign) return std::to_string(reduce_value<int64_t>(value, nvalues) / (int64_t)div); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bpftrace-0.21.2/tests/runtime/basic new/bpftrace-0.21.3/tests/runtime/basic --- old/bpftrace-0.21.2/tests/runtime/basic 2024-07-19 13:01:55.000000000 +0200 +++ new/bpftrace-0.21.3/tests/runtime/basic 2024-12-17 00:25:48.000000000 +0100 @@ -300,3 +300,18 @@ PROG BEGIN { @c = count(); @s = sum(5); @mn = min(1); @mx = max(-1); print((@c, @s, @mn, @mx)); exit(); } EXPECT (1, 5, 1, -1) TIMEOUT 3 + +NAME multi map keys need alignment strings last +PROG BEGIN { @[0, "asdfasdf"] = 1; } +EXPECT Attaching 1 probe... +TIMEOUT 3 + +NAME multi map keys need alignment different size strings +PROG BEGIN { @mapA["aaaabbb", 0] = 1; @mapA["ccccdddd", 0] = 1; } +EXPECT Attaching 1 probe... +TIMEOUT 3 + +NAME multi map keys need alignment kstack +PROG BEGIN { @[0, kstack] = 1; } +EXPECT Attaching 1 probe... +TIMEOUT 3