Compare commits

...

10 Commits

Author SHA1 Message Date
openeuler-ci-bot
44ad98fa0b
!70 [sync] PR-61: Make stp_task_work compatible with 6.11 kernels
From: @openeuler-sync-bot 
Reviewed-by: @SuperSix173 
Signed-off-by: @SuperSix173
2024-11-22 08:45:40 +00:00
wangxiao65
a49400bb1e Make stp task work compatable with 6.11 kernels
(cherry picked from commit 608e39de485d831c637bb868dcc61692b1a28201)
2024-11-22 15:52:37 +08:00
openeuler-ci-bot
da3e2f3cb8
!53 add loongarch64 support
From: @wangqiang95 
Reviewed-by: @SuperSix173 
Signed-off-by: @SuperSix173
2024-08-05 13:26:51 +00:00
wangqiang
db9f088765 Add basic LoongArch64 support 2024-08-05 17:50:04 +08:00
openeuler-ci-bot
60ee7da866
!48 Upgrade to 5.0
From: @SuperSix173 
Reviewed-by: @wangbin224 
Signed-off-by: @wangbin224
2024-01-27 01:50:28 +00:00
SuperSix173
4c7d1732a4 Upgrade to 5.0
Signed-off-by: SuperSix173 <liuchao173@huawei.com>
2024-01-26 18:03:37 +08:00
openeuler-ci-bot
379b83b21b
!46 Upgrade to 4.9
From: @langfei295455 
Reviewed-by: @SuperSix173 
Signed-off-by: @SuperSix173
2023-09-11 12:51:08 +00:00
langfei295455
f84d06efbd Upgrade to 4.9
Signed-off-by: langfei <langfei@huawei.com>
2023-09-11 16:42:25 +08:00
openeuler-ci-bot
3beaee92c6
!43 Adapts to gcc-12 and python-3.11
From: @langfei295455 
Reviewed-by: @SuperSix173 
Signed-off-by: @SuperSix173
2023-08-09 06:54:56 +00:00
langfei
89deba2dad Adapts to gcc-12 and python-3.11
Signed-off-by: langfei <langfei@huawei.com>
2023-08-08 14:40:34 +08:00
9 changed files with 2604 additions and 259 deletions

View File

@ -1,53 +0,0 @@
From: Qiang Wei <qiang.wei@suse.com>
Subject: [PATCH] Add int type cast to resolve gcc issue for option
Wformat=2.
In ncruses 6.3 version, there is type complain for function wprintw
when gcc has option -Wformat=2.
Signed-off-by: Qiang Wei <qiang.wei@suse.com>
--- a/staprun/monitor.c 2022-03-09 06:45:30.534000000 +0000
+++ b/staprun/monitor.c 2022-03-09 06:48:49.804000000 +0000
@@ -448,12 +448,12 @@
if (active_window == 0)
wattron(status, A_BOLD);
wprintw(status, "\n%*s\t%*s\t%*s\t%*s\t%*s\t%*s\t%s\n",
- width[p_index], HIGHLIGHT("index", p_index, comp_fn_index),
- width[p_state], HIGHLIGHT("state", p_state, comp_fn_index),
- width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index),
- width[p_min], HIGHLIGHT("min", p_min, comp_fn_index),
- width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index),
- width[p_max], HIGHLIGHT("max", p_max, comp_fn_index),
+ (int)width[p_index], HIGHLIGHT("index", p_index, comp_fn_index),
+ (int)width[p_state], HIGHLIGHT("state", p_state, comp_fn_index),
+ (int)width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index),
+ (int)width[p_min], HIGHLIGHT("min", p_min, comp_fn_index),
+ (int)width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index),
+ (int)width[p_max], HIGHLIGHT("max", p_max, comp_fn_index),
HIGHLIGHT("name", p_name, comp_fn_index));
if (active_window == 0)
wattroff(status, A_BOLD);
@@ -466,17 +466,17 @@
json_object *probe, *field;
probe = json_object_array_get_idx(jso_probe_list, i);
json_object_object_get_ex(probe, "index", &field);
- wprintw(status, "%*s\t", width[p_index], json_object_get_string(field));
+ wprintw(status, "%*s\t", (int)width[p_index], json_object_get_string(field));
json_object_object_get_ex(probe, "state", &field);
- wprintw(status, "%*s\t", width[p_state], json_object_get_string(field));
+ wprintw(status, "%*s\t", (int)width[p_state], json_object_get_string(field));
json_object_object_get_ex(probe, "hits", &field);
- wprintw(status, "%*s\t", width[p_hits], json_object_get_string(field));
+ wprintw(status, "%*s\t", (int)width[p_hits], json_object_get_string(field));
json_object_object_get_ex(probe, "min", &field);
- wprintw(status, "%*s\t", width[p_min], json_object_get_string(field));
+ wprintw(status, "%*s\t", (int)width[p_min], json_object_get_string(field));
json_object_object_get_ex(probe, "avg", &field);
- wprintw(status, "%*s\t", width[p_avg], json_object_get_string(field));
+ wprintw(status, "%*s\t", (int)width[p_avg], json_object_get_string(field));
json_object_object_get_ex(probe, "max", &field);
- wprintw(status, "%*s\t", width[p_max], json_object_get_string(field));
+ wprintw(status, "%*s\t", (int)width[p_max], json_object_get_string(field));
getyx(status, discard, cur_x);
json_object_object_get_ex(probe, "name", &field);
wprintw(status, "%.*s", max_cols-cur_x-1, json_object_get_string(field));

View File

@ -1,93 +0,0 @@
From d752cdd14eefd0dd0c81bb5b4d7787394335a49e Mon Sep 17 00:00:00 2001
From: William Cohen <wcohen@redhat.com>
Date: Wed, 27 Apr 2022 14:14:17 -0400
Subject: [PATCH] PR29094: Include rpm/rpmcrypto.h when required
rpm-4.18.0 moved the prototypes for rpmFreeCrypto() into a new header,
/usr/include/rpm/rpmcrypto.h. Have the configure check for it
and include it when required.
---
config.in | 3 +++
configure | 19 +++++++++++++++++++
configure.ac | 6 ++++++
rpm_finder.cxx | 3 +++
4 files changed, 31 insertions(+)
diff --git a/config.in b/config.in
index 64740c9..12cd394 100644
--- a/config.in
+++ b/config.in
@@ -88,6 +88,9 @@
/* have librpm */
#undef HAVE_LIBRPM
+/* have rpmcrypto.h */
+#undef HAVE_RPMCRYPTO_H
+
/* have librpmio */
#undef HAVE_LIBRPMIO
diff --git a/configure b/configure
index abc4e7f..3694dbb 100755
--- a/configure
+++ b/configure
@@ -11524,6 +11524,25 @@ $as_echo "$as_me: WARNING: cannot find librpmio" >&2;}
fi
fi
+for ac_header in rpm/rpmcrypto.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "rpm/rpmcrypto.h" "ac_cv_header_rpm_rpmcrypto_h" "$ac_includes_default"
+if test "x$ac_cv_header_rpm_rpmcrypto_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_RPM_RPMCRYPTO_H 1
+_ACEOF
+
+
+$as_echo "#define HAVE_RPMCRYPTO_H 1" >>confdefs.h
+
+ have_rpmcrypto_h=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: separate rpm/rpmcrypto.h" >&5
+$as_echo "$as_me: separate rpm/rpmcrypto.h" >&6;}
+fi
+
+done
+
+
LIBS_no_readline=$LIBS
have_libreadline="no"
diff --git a/configure.ac b/configure.ac
index 4ef80b7..ccb4fe0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -490,6 +490,12 @@ if test "$with_rpm" != "no"; then
fi
fi
+dnl Look for rpmcrypto.h
+AC_CHECK_HEADERS([rpm/rpmcrypto.h], [
+ AC_DEFINE([HAVE_RPMCRYPTO_H],[1],[have rpmcrypto_h])
+ have_rpmcrypto_h=yes
+ AC_MSG_NOTICE([separate rpm/rpmcrypto.h])])
+
dnl Look for readline.
dnl
dnl First save the orignal value of LIBS.
diff --git a/rpm_finder.cxx b/rpm_finder.cxx
index 206669b..052058a 100644
--- a/rpm_finder.cxx
+++ b/rpm_finder.cxx
@@ -26,6 +26,9 @@ extern "C" {
#include <rpm/rpmlib.h>
#include <rpm/rpmts.h>
#include <rpm/rpmdb.h>
+#ifdef HAVE_RPMCRYPTO_H
+#include <rpm/rpmcrypto.h>
+#endif
#include <rpm/header.h>
#ifndef xfree
--
1.8.3.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,99 @@
From a64dc4e2e0195ca80c6509df511a42459b40e9af Mon Sep 17 00:00:00 2001
From: Martin Cermak <mcermak@redhat.com>
Date: Wed, 24 Jul 2024 16:47:42 +0200
Subject: [PATCH] Make stp_task_work compatible with 6.11 kernels
Update systemtap runtime so that it works with kernel commit
68cbd415dd4b task_work:
s/task_work_cancel()/task_work_cancel_func()/
---
buildrun.cxx | 1 +
.../linux/autoconf-task_work_cancel_func.c | 3 +++
runtime/linux/runtime.h | 2 +-
runtime/stp_task_work.c | 21 ++++++++++++++-----
4 files changed, 21 insertions(+), 6 deletions(-)
create mode 100644 runtime/linux/autoconf-task_work_cancel_func.c
diff --git a/buildrun.cxx b/buildrun.cxx
index a7fcd6297..e3f2f83d1 100644
--- a/buildrun.cxx
+++ b/buildrun.cxx
@@ -400,6 +400,7 @@ compile_pass (systemtap_session& s)
output_exportconf(s, o2, "__module_text_address", "STAPCONF_MODULE_TEXT_ADDRESS");
output_exportconf(s, o2, "add_timer_on", "STAPCONF_ADD_TIMER_ON");
output_autoconf(s, o, cs, "autoconf-514-panic.c", "STAPCONF_514_PANIC", NULL);
+ output_autoconf(s, o, cs, "autoconf-task_work_cancel_func.c", "STAPCONF_TASK_WORK_CANCEL_FUNC", NULL);
output_dual_exportconf(s, o2, "probe_kernel_read", "probe_kernel_write", "STAPCONF_PROBE_KERNEL");
output_autoconf(s, o, cs, "autoconf-hw_breakpoint_context.c",
diff --git a/runtime/linux/autoconf-task_work_cancel_func.c b/runtime/linux/autoconf-task_work_cancel_func.c
new file mode 100644
index 000000000..0d460de6c
--- /dev/null
+++ b/runtime/linux/autoconf-task_work_cancel_func.c
@@ -0,0 +1,3 @@
+#include <linux/task_work.h>
+
+void* c = & task_work_cancel_func;
diff --git a/runtime/linux/runtime.h b/runtime/linux/runtime.h
index 0e9fe3fea..bd9307385 100644
--- a/runtime/linux/runtime.h
+++ b/runtime/linux/runtime.h
@@ -265,7 +265,7 @@ static void *kallsyms_uprobe_get_swbp_addr;
static void *kallsyms_task_work_add;
#endif
#if !defined(STAPCONF_TASK_WORK_CANCEL_EXPORTED)
-static void *kallsyms_task_work_cancel;
+static void *kallsyms_task_work_cancel_fn;
#endif
#if !defined(STAPCONF_TRY_TO_WAKE_UP_EXPORTED) && !defined(STAPCONF_WAKE_UP_STATE_EXPORTED)
diff --git a/runtime/stp_task_work.c b/runtime/stp_task_work.c
index 0dd3095b6..4818fecbf 100644
--- a/runtime/stp_task_work.c
+++ b/runtime/stp_task_work.c
@@ -3,14 +3,25 @@
#include "linux/task_work_compatibility.h"
+// Handle kernel commit 68cbd415dd4b9c5b9df69f0f091879e56bf5907a
+// task_work: s/task_work_cancel()/task_work_cancel_func()/
+#if defined(STAPCONF_TASK_WORK_CANCEL_FUNC)
+#define TASK_WORK_CANCEL_FN task_work_cancel_func
+#else
+#define TASK_WORK_CANCEL_FN task_work_cancel
+#endif
+
+#define STRINGIFY(x) #x
+#define TOSTRING(x) STRINGIFY(x)
+
#if !defined(STAPCONF_TASK_WORK_ADD_EXPORTED)
// First typedef from the original decls, then #define as typecasted calls.
typedef typeof(&task_work_add) task_work_add_fn;
#define task_work_add(a,b,c) ibt_wrapper(int, (* (task_work_add_fn)kallsyms_task_work_add)((a), (b), (c)))
#endif
#if !defined(STAPCONF_TASK_WORK_CANCEL_EXPORTED)
-typedef typeof(&task_work_cancel) task_work_cancel_fn;
-#define task_work_cancel(a,b) ibt_wrapper(struct callback_head *, (* (task_work_cancel_fn)kallsyms_task_work_cancel)((a), (b)))
+typedef typeof(&TASK_WORK_CANCEL_FN) task_work_cancel_fn;
+#define task_work_cancel(a,b) ibt_wrapper(struct callback_head *, (* (task_work_cancel_fn)kallsyms_task_work_cancel_fn)((a), (b)))
#endif
/* To avoid a crash when a task_work callback gets called after the
@@ -35,9 +46,9 @@ stp_task_work_init(void)
}
#endif
#if !defined(STAPCONF_TASK_WORK_CANCEL_EXPORTED)
- kallsyms_task_work_cancel = (void *)kallsyms_lookup_name("task_work_cancel");
- if (kallsyms_task_work_cancel == NULL) {
- _stp_error("Can't resolve task_work_cancel!");
+ kallsyms_task_work_cancel_fn = (void *)kallsyms_lookup_name(TOSTRING(TASK_WORK_CANCEL_FN));
+ if (kallsyms_task_work_cancel_fn == NULL) {
+ _stp_error("Can't resolve %s!", TOSTRING(TASK_WORK_CANCEL_FN));
return -ENOENT;
}
#endif
--
2.33.0

View File

@ -1,59 +0,0 @@
From af456ec9eefd320b496ce54686ca2099c26ca301 Mon Sep 17 00:00:00 2001
From: langfei <langfei@huawei.com>
Date: Wed, 5 Jul 2023 10:32:14 +0800
Subject: [PATCH] fix py3example script run fail
Signed-off-by: langfei <langfei@huawei.com>
---
.../general/tapset/python_local.stpm | 37 ++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/testsuite/systemtap.examples/general/tapset/python_local.stpm b/testsuite/systemtap.examples/general/tapset/python_local.stpm
index 84f9a55..f02ff7a 100644
--- a/testsuite/systemtap.examples/general/tapset/python_local.stpm
+++ b/testsuite/systemtap.examples/general/tapset/python_local.stpm
@@ -7,5 +7,40 @@
# Set this to the location of the python 3 .so
@define PYTHON3_LIBRARY
%(
- "/usr/lib64/libpython3.4m.so.1.0"
+ "/usr/lib64/libpython3.7m.so.1.0"
+%)
+
+@define Py3DictKeysObject(object) %(
+ @cast(@object, "PyDictKeysObject", @PYTHON3_LIBRARY)
+ %)
+@define Py3DictKeyEntry(object) %(
+ @cast(@object, "PyDictKeyEntry", @PYTHON3_LIBRARY)
+ %)
+
+@define DK_SIZE(dk) %(
+ @Py3DictKeysObject(@dk)->dk_size
+%)
+@define DK_IXSIZE(dk) %(
+ %( CONFIG_64BIT == "y" %?
+ %( CONFIG_COMPAT == "y" %?
+ (@__compat_task
+ ? (@DK_SIZE(@dk) <= 0xff ? 1 : (@DK_SIZE(@dk) <= 0xffff ? 2
+: 4))
+ : (@DK_SIZE(@dk) <= 0xff ?
+ 1 : (@DK_SIZE(@dk) <= 0xffff ?
+ 2 : (@DK_SIZE(@dk) <= 0xffffffff ? 4 : 8))))
+ %:
+ (@DK_SIZE(@dk) <= 0xff ?
+ 1 : (@DK_SIZE(@dk) <= 0xffff ?
+ 2 : (@DK_SIZE(@dk) <= 0xffffffff ? 4 : 8)))
+ %)
+ %:
+ (@DK_SIZE(@dk) <= 0xff ? 1 : (@DK_SIZE(@dk) <= 0xffff ? 2 : 4))
+ %)
+%)
+
+@define DK_ENTRIES(dk) %(
+ (@choose_defined(@Py3DictKeysObject(@dk)->dk_entries,
+(&@Py3DictKeyEntry(&@Py3DictKeysObject(@dk)->dk_indices[@DK_SIZE(@dk) *
+@DK_IXSIZE(@dk)]))))
%)
--
2.33.0

View File

@ -1,44 +0,0 @@
From ee556777a8f7d46ccfe0d53dd1088ab1724c9e42 Mon Sep 17 00:00:00 2001
From: langfei <langfei@huawei.com>
Date: Wed, 5 Jul 2023 10:40:41 +0800
Subject: [PATCH] fix py3example script run fail2
Signed-off-by: langfei <langfei@huawei.com>
---
.../systemtap.examples/general/tapset/python3_local.stp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/testsuite/systemtap.examples/general/tapset/python3_local.stp b/testsuite/systemtap.examples/general/tapset/python3_local.stp
index 4e26946..197be47 100644
--- a/testsuite/systemtap.examples/general/tapset/python3_local.stp
+++ b/testsuite/systemtap.examples/general/tapset/python3_local.stp
@@ -182,7 +182,7 @@ function p3_get_dict_hash (dict, i) {
n = @cast (dict, "PyDictObject", @PYTHON3_LIBRARY)->ma_used;
if (i > n || entries == 0)
return 0
- return @cast (entries, "PyDictKeysObject", @PYTHON3_LIBRARY)->dk_entries[i]->me_hash
+ return @cast (@DK_ENTRIES(entries), "PyDictKeyEntry", @PYTHON3_LIBRARY)[i]->me_hash
}
# FUNCTION P3_GET_DICT_KEY
@@ -195,7 +195,7 @@ function p3_get_dict_key (dict, i) {
n = @cast (dict, "PyDictObject", @PYTHON3_LIBRARY)->ma_used;
if (i > n || entries == 0)
return 0
- return @cast (entries, "PyDictKeysObject", @PYTHON3_LIBRARY)->dk_entries[i]->me_key
+ return @cast (@DK_ENTRIES(entries), "PyDictKeyEntry", @PYTHON3_LIBRARY)[i]->me_key
}
# FUNCTION P3_GET_DICT_VALUE
@@ -214,7 +214,7 @@ function p3_get_dict_value (dict, i) {
n = @cast (dict, "PyDictObject", @PYTHON3_LIBRARY)->ma_used;
if (i > n || entries == 0)
return 0
- return @cast (entries, "PyDictKeysObject", @PYTHON3_LIBRARY)->dk_entries[i]->me_value
+ return @cast (@DK_ENTRIES(entries), "PyDictKeyEntry", @PYTHON3_LIBRARY)[i]->me_value
}
}
--
2.33.0

Binary file not shown.

BIN
systemtap-5.0.tar.gz Normal file

Binary file not shown.

View File

@ -21,27 +21,24 @@
%undefine __brp_mangle_shebangs
Name: systemtap
Version: 4.5
Release: 6
Version: 5.0
Release: 3
Summary: Linux trace and probe tool
License: GPLv2+ and Public Domain
URL: http://sourceware.org/systemtap
Source: https://sourceware.org/systemtap/ftp/releases/%{name}-%{version}.tar.gz
Patch1: 0001-Add-init-type-cast-to-resolve-gcc-issue.patch
Patch2: 0001-PR29094-Include-rpm-rpmcrypto.h-when-required.patch
Patch9000: huawei-fix-py3example-script-run-fail.patch
Patch9001: huawei-fix-py3example-script-run-fail2.patch
Patch9002: huawei-fix-network-tcp-test-error.patch
Patch9003: huawei-local-is-only-valid-in-functions-for-shellche-sc2168.patch
Patch9000: huawei-fix-network-tcp-test-error.patch
Patch9001: huawei-local-is-only-valid-in-functions-for-shellche-sc2168.patch
Patch9002: Add-basic-LoongArch64-support.patch
Patch9003: Make-stp_task_work-compatible-with-6.11-kernels.patch
BuildRequires: gcc-c++ emacs systemd python3-setuptools
BuildRequires: gettext-devel rpm-devel readline-devel
BuildRequires: pkgconfig(nss) pkgconfig(avahi-client)
BuildRequires: pkgconfig(ncurses) pkgconfig(json-c)
BuildRequires: jpackage-utils python3-devel
BuildRequires: elfutils-devel >= 0.142
BuildRequires: elfutils-devel >= 0.142 elfutils-debuginfod-client elfutils-debuginfod-client-devel
BuildRequires: sqlite-devel > 3.7
%if %{with_dyninst}
BuildRequires: dyninst-devel >= 8.0
@ -137,6 +134,7 @@ Requires: dejagnu which elfutils grep nc
Requires: gcc gcc-c++ make glibc-devel
Requires: strace nc avahi perf
Requires: systemtap-runtime-python3 = %{version}-%{release}
Requires: elfutils-debuginfod
%if %{with_crash}
Requires: crash
%endif
@ -167,6 +165,17 @@ This package includes files for a systemd service that manages
systemtap sessions and relays prometheus metrics from the sessions
to remote requesters on demand.
%package jupyter
Summary: ISystemtap jupyter kernel and examples
License: GPLv2+
URL: http://sourceware.org/systemtap/
Requires: systemtap = %{version}-%{release}
%description jupyter
This package includes files needed to build and run
the interactive systemtap Jupyter kernel, either locally
or within a container.
%package help
Summary: systemtap manual
License: GPLv2+
@ -392,6 +401,7 @@ exit 0
%files devel -f systemtap.lang
%{_bindir}/stap
%{_bindir}/stap-prep
%{_bindir}/stap-profile-annotate
%{_bindir}/stap-report
%dir %{_datadir}/systemtap
%{_datadir}/systemtap/runtime
@ -458,10 +468,53 @@ exit 0
/usr/sbin/stap-exporter
/etc/sysconfig/stap-exporter
%files jupyter
%{_bindir}/stap-jupyter-container
%{_bindir}/stap-jupyter-install
%{_mandir}/man1/stap-jupyter.1*
%dir %{_datadir}/systemtap
%{_datadir}/systemtap/interactive-notebook
%files help
%{_mandir}/man[1378]/*
%changelog
* Wed Sep 04 2024 wangxiao <wangxiao184@h-partners.com> - 5.0-3
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:Make stp_task_work compatible with 6.11 kernels
* Fri Jul 05 2024 wangqiang <wangqiang1@kylinos.cn> - 5.0-2
- Type:update
- CVE:NA
- SUG:NA
- DESC:Add basic loongarch64 support
* Wed Jan 24 2024 liuchao <liuchao173@huawei.com> - 5.0-1
- Upgrade to 5.0:
- Performance improvements in uprobe registration and module startup.
- More probe point process details are printed in "-L" list mode with more "-v".
- For the case where newer kernels may break systemtap runtime APIs, better pass-4 failure diagnostics are printed.
- Tapset function print_ubacktrace_fileline() now understands DWARF5.
- The target(s) of process probes may be specified by path name globs, as located selected debuginfod servers.
- The kernel-user message transport system added framing codes, making the transport more reliable, but becoming incompatible across pre-5.0 versions. Use matching versions of stap and staprun.
- The testsuite Makefile has been simplified to remove concurrency, so "parallel" and "resume" modes are gone.
- New runtime macro STP_TIMING_NSECS is now supported for reporting probe timing stats in nsecs instead of cycles. This may become default later.
- Add new runtime macro STP_FORCE_STDOUT_TTY to override STP_STDOUT_NOT_ATTY.
* Wed Sep 6 2023 langfei<langfei@huawei.com> - 4.9-1
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:Upgrade to 4.9
* Tue Aug 8 2023 langfei<langfei@huawei.com> - 4.5-7
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:Adapts to gcc 12 and python 3.11
* Wed Jul 5 2023 langfei<langfei@huawei.com> - 4.5-6
- Type:bugfix
- CVE:NA