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

Reply via email to