Upgrade to 4.9

Signed-off-by: langfei <langfei@huawei.com>
This commit is contained in:
langfei295455 2023-09-11 16:42:25 +08:00
parent 3beaee92c6
commit f84d06efbd
13 changed files with 367 additions and 381 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

View File

@ -0,0 +1,37 @@
From ff265fa1ed86b85e021ec0f16a28ab48c237414a Mon Sep 17 00:00:00 2001
From: "Yichun Zhang (agentzh)" <yichun@openresty.com>
Date: Sat, 6 May 2023 15:21:14 -0700
Subject: [PATCH] PR30405: stapkp_init(): we should not disable preemption
around the kallsyms_on_each_symbol() call
---
runtime/linux/kprobes.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/runtime/linux/kprobes.c b/runtime/linux/kprobes.c
index 09f0e0665..1875092c5 100644
--- a/runtime/linux/kprobes.c
+++ b/runtime/linux/kprobes.c
@@ -763,9 +763,7 @@ stapkp_init(struct stap_kprobe_probe *probes,
#ifdef STAPCONF_MODULE_MUTEX
mutex_lock(&module_mutex);
#endif
- preempt_disable();
kallsyms_on_each_symbol(stapkp_symbol_callback, &sd);
- preempt_enable();
#ifdef STAPCONF_MODULE_MUTEX
mutex_unlock(&module_mutex);
#endif
@@ -835,9 +833,7 @@ stapkp_refresh(const char *modname,
#ifdef STAPCONF_MODULE_MUTEX
mutex_lock(&module_mutex);
#endif
- preempt_disable();
kallsyms_on_each_symbol(stapkp_symbol_callback, &sd);
- preempt_enable();
#ifdef STAPCONF_MODULE_MUTEX
mutex_unlock(&module_mutex);
#endif
--
2.39.1

View File

@ -0,0 +1,231 @@
From 33fae2d0107fb6166b4eac3fdffd277829849ab0 Mon Sep 17 00:00:00 2001
From: Martin Cermak <mcermak@redhat.com>
Date: Fri, 2 Jun 2023 23:28:07 +0200
Subject: [PATCH] =?UTF-8?q?PR30415:=20conflicting=20types=20for=20?=
=?UTF-8?q?=E2=80=98kallsyms=5Fon=5Feach=5Fsymbol=E2=80=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
runtime/linux/kprobes.c | 28 ++++++++++++++++++++++++-
runtime/linux/runtime.h | 8 +++++--
runtime/sym.c | 39 +++++++++++++++++++++++++++++++++++
runtime/transport/symbols.c | 4 ++++
runtime/transport/transport.c | 1 +
staprun/staprun.c | 13 +++++++++++-
6 files changed, 89 insertions(+), 4 deletions(-)
diff --git a/runtime/linux/kprobes.c b/runtime/linux/kprobes.c
index 1875092c5..6b30f2c52 100644
--- a/runtime/linux/kprobes.c
+++ b/runtime/linux/kprobes.c
@@ -28,6 +28,9 @@ extern void *_stp_kallsyms_on_each_symbol;
#endif
#endif
+// No export check and gates. This one seems simply like a non-export.
+extern void *_stp_module_kallsyms_on_each_symbol;
+
#if defined(STAPCONF_KALLSYMS_ON_EACH_SYMBOL) && defined(STAPCONF_KALLSYMS_ON_EACH_SYMBOL_EXPORTED)
#define USE_KALLSYMS_ON_EACH_SYMBOL (1)
#elif defined(STAPCONF_KALLSYMS_ON_EACH_SYMBOL)
@@ -684,7 +687,7 @@ struct stapkp_symbol_data {
static int
-stapkp_symbol_callback(void *data, const char *name,
+__stapkp_symbol_callback(void *data, const char *name,
struct module *mod, unsigned long addr)
{
struct stapkp_symbol_data *sd = data;
@@ -733,6 +736,19 @@ stapkp_symbol_callback(void *data, const char *name,
return 0;
}
+static int
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,4,0)
+stapkp_symbol_callback(void *data, const char *name,
+ unsigned long addr)
+{
+ struct module *mod = NULL;
+#else
+stapkp_symbol_callback(void *data, const char *name,
+ struct module *mod, unsigned long addr)
+{
+#endif
+ return __stapkp_symbol_callback(data, name, mod, addr);
+}
static int
stapkp_init(struct stap_kprobe_probe *probes,
@@ -764,6 +780,11 @@ stapkp_init(struct stap_kprobe_probe *probes,
mutex_lock(&module_mutex);
#endif
kallsyms_on_each_symbol(stapkp_symbol_callback, &sd);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,3,0)
+ module_kallsyms_on_each_symbol(sd.modname, stapkp_symbol_callback, &sd);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,12,0)
+ module_kallsyms_on_each_symbol(stapkp_symbol_callback, &sd);
+#endif
#ifdef STAPCONF_MODULE_MUTEX
mutex_unlock(&module_mutex);
#endif
@@ -834,6 +855,11 @@ stapkp_refresh(const char *modname,
mutex_lock(&module_mutex);
#endif
kallsyms_on_each_symbol(stapkp_symbol_callback, &sd);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,3,0)
+ module_kallsyms_on_each_symbol(sd.modname, stapkp_symbol_callback, &sd);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,12,0)
+ module_kallsyms_on_each_symbol(stapkp_symbol_callback, &sd);
+#endif
#ifdef STAPCONF_MODULE_MUTEX
mutex_unlock(&module_mutex);
#endif
diff --git a/runtime/linux/runtime.h b/runtime/linux/runtime.h
index 86d64fd0d..f7b3cdcf0 100644
--- a/runtime/linux/runtime.h
+++ b/runtime/linux/runtime.h
@@ -221,11 +221,15 @@ static void *_stp_kallsyms_lookup_name;
#ifndef CONFIG_PPC64
#define STAPCONF_KALLSYMS_ON_EACH_SYMBOL
#if !defined(STAPCONF_KALLSYMS_ON_EACH_SYMBOL_EXPORTED)
-// XXX Should not be static, since it is linked into kprobes.c.
-static void *_stp_kallsyms_on_each_symbol;
+// Not static, since it is linked into kprobes.c:
+void *_stp_kallsyms_on_each_symbol;
#endif
#endif
+// No export check and gates. This one seems simply like a non-export.
+// Not static, since it is linked into kprobes.c:
+void *_stp_module_kallsyms_on_each_symbol;
+
// PR13489, inode-uprobes sometimes lacks the necessary SYMBOL_EXPORT's.
#if !defined(STAPCONF_TASK_USER_REGSET_VIEW_EXPORTED)
static void *kallsyms_task_user_regset_view;
diff --git a/runtime/sym.c b/runtime/sym.c
index fc81ac5e8..29171b45f 100644
--- a/runtime/sym.c
+++ b/runtime/sym.c
@@ -1155,9 +1155,15 @@ unsigned long kallsyms_lookup_name (const char *name)
typedef typeof(&kallsyms_on_each_symbol) kallsyms_on_each_symbol_fn;
// XXX Will be linked in place of the kernel's kallsyms_on_each_symbol:
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,4,0)
+int kallsyms_on_each_symbol(int (*fn)(void *, const char *,
+ unsigned long),
+ void *data)
+#else
int kallsyms_on_each_symbol(int (*fn)(void *, const char *, struct module *,
unsigned long),
void *data)
+#endif
{
/* First, try to use a kallsyms_lookup_name address passed to us
through the relocation mechanism. */
@@ -1170,6 +1176,39 @@ int kallsyms_on_each_symbol(int (*fn)(void *, const char *, struct module *,
_stp_error("BUG: attempting to use unavailable kallsyms_on_each_symbol!!\n");
return 0;
}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,12,0)
+typedef typeof(&module_kallsyms_on_each_symbol) module_kallsyms_on_each_symbol_fn;
+
+// XXX Will be linked in place of the kernel's module_kallsyms_on_each_symbol:
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,4,0)
+int module_kallsyms_on_each_symbol(const char *modname,
+ int (*fn)(void *, const char *,
+ unsigned long),
+ void *data)
+#else
+int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *, struct module *,
+ unsigned long),
+ void *data)
+#endif
+{
+ /* First, try to use a kallsyms_lookup_name address passed to us
+ through the relocation mechanism. */
+ if (_stp_module_kallsyms_on_each_symbol != NULL)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,4,0)
+ return (* (module_kallsyms_on_each_symbol_fn)_stp_module_kallsyms_on_each_symbol)(modname, fn, data);
+#else
+ return (* (module_kallsyms_on_each_symbol_fn)_stp_module_kallsyms_on_each_symbol)(fn, data);
+#endif
+
+ /* Next, give up and signal a BUG. We should have detected
+ that this function is not available and used a different
+ mechanism! */
+ _stp_error("BUG: attempting to use unavailable module_kallsyms_on_each_symbol!!\n");
+ return 0;
+}
+#endif
+
#endif
diff --git a/runtime/transport/symbols.c b/runtime/transport/symbols.c
index 7f2fe0fc8..3af9a1098 100644
--- a/runtime/transport/symbols.c
+++ b/runtime/transport/symbols.c
@@ -119,6 +119,10 @@ static void _stp_do_relocation(const char __user *buf, size_t count)
_stp_kallsyms_on_each_symbol = (void *) msg.address;
}
#endif
+ if (!strcmp ("kernel", msg.module)
+ && !strcmp ("module_kallsyms_on_each_symbol", msg.reloc)) {
+ _stp_module_kallsyms_on_each_symbol = (void *) msg.address;
+ }
_stp_kmodule_update_address(msg.module, msg.reloc, msg.address);
}
diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c
index 3db76badf..cf57d4286 100644
--- a/runtime/transport/transport.c
+++ b/runtime/transport/transport.c
@@ -614,6 +614,7 @@ static int _stp_transport_init(void)
#if defined(STAPCONF_KALLSYMS_ON_EACH_SYMBOL) && !defined(STAPCONF_KALLSYMS_ON_EACH_SYMBOL_EXPORTED)
_stp_kallsyms_on_each_symbol = NULL;
#endif
+ _stp_module_kallsyms_on_each_symbol = NULL;
#if defined(CONFIG_KALLSYMS) && !defined(STAPCONF_KALLSYMS_LOOKUP_NAME_EXPORTED)
_stp_need_kallsyms_stext = 0;
#endif
diff --git a/staprun/staprun.c b/staprun/staprun.c
index edd1bc67a..8437f3af6 100644
--- a/staprun/staprun.c
+++ b/staprun/staprun.c
@@ -640,6 +640,7 @@ int send_relocation_kernel ()
int found_stext = 0;
int found_kallsyms_lookup_name = 0;
int found_kallsyms_on_each_symbol = 0;
+ int found_module_kallsyms_on_each_symbol = 0;
int done_with_kallsyms = 0;
char *line = NULL;
size_t linesz = 0;
@@ -681,10 +682,20 @@ int send_relocation_kernel ()
found_kallsyms_on_each_symbol = 1;
}
+ else if (linesize - pos == sizeof "module_kallsyms_on_each_symbol"
+ && !strcmp(line + pos, "module_kallsyms_on_each_symbol" "\n"))
+ {
+ rc = send_a_relocation ("kernel", "module_kallsyms_on_each_symbol", address);
+ if (rc != 0) // non fatal, follows perror()
+ dbug(1, "Relocation was reloc module_kallsyms_on_each_symbol=%llx\n", address);
+
+ found_module_kallsyms_on_each_symbol = 1;
+ }
}
done_with_kallsyms = found_stext
&& found_kallsyms_lookup_name
- && found_kallsyms_on_each_symbol;
+ && found_kallsyms_on_each_symbol
+ && found_module_kallsyms_on_each_symbol;
}
free (line);
fclose (kallsyms);
--
2.39.1

View File

@ -0,0 +1,67 @@
From c893e0eaa4dedc90fafc9353ea00fc34ad4b6d42 Mon Sep 17 00:00:00 2001
From: William Cohen <wcohen@redhat.com>
Date: Wed, 17 May 2023 10:38:31 -0400
Subject: [PATCH] Support newer kernels with struct module_memory
The upstream kernel commit ac3b43283923440900b4f36ca5f9f0b1ca43b70e
changed the structures for modules. The runtime printing of kernel
information accessed information about modules and the fields in
module structure. A test has been added to the autoconf list to
determine the appropriate fields to get information about the
module.
---
buildrun.cxx | 2 ++
runtime/linux/autoconf-module_memory.c | 3 +++
runtime/linux/print.c | 6 ++++++
3 files changed, 11 insertions(+)
create mode 100644 runtime/linux/autoconf-module_memory.c
diff --git a/buildrun.cxx b/buildrun.cxx
index a4a254c7d..7f4ad860d 100644
--- a/buildrun.cxx
+++ b/buildrun.cxx
@@ -512,6 +512,8 @@ compile_pass (systemtap_session& s)
output_autoconf(s, o, cs, "autoconf-module_layout.c",
"STAPCONF_MODULE_LAYOUT", NULL);
+ output_autoconf(s, o, cs, "autoconf-module_memory.c",
+ "STAPCONF_MODULE_MEMORY", NULL);
output_autoconf(s, o, cs, "autoconf-mod_kallsyms.c",
"STAPCONF_MOD_KALLSYMS", NULL);
output_exportconf(s, o2, "get_user_pages_remote", "STAPCONF_GET_USER_PAGES_REMOTE");
diff --git a/runtime/linux/autoconf-module_memory.c b/runtime/linux/autoconf-module_memory.c
new file mode 100644
index 000000000..db04b8d2e
--- /dev/null
+++ b/runtime/linux/autoconf-module_memory.c
@@ -0,0 +1,3 @@
+#include <linux/module.h>
+
+struct module_memory ml;
diff --git a/runtime/linux/print.c b/runtime/linux/print.c
index 57a157986..594b155be 100644
--- a/runtime/linux/print.c
+++ b/runtime/linux/print.c
@@ -361,6 +361,11 @@ static void _stp_print_kernel_info(char *sname, char *vstr, int ctx, int num_pro
(unsigned long) (THIS_MODULE->core_layout.size - THIS_MODULE->core_layout.text_size)/1024,
(unsigned long) (THIS_MODULE->core_layout.text_size)/1024,
#else
+#if STAPCONF_MODULE_MEMORY
+ (unsigned long) THIS_MODULE->mem[MOD_TEXT].base,
+ (unsigned long) (THIS_MODULE->mem[MOD_DATA].size)/1024,
+ (unsigned long) (THIS_MODULE->mem[MOD_TEXT].size)/1024,
+#else
#ifndef STAPCONF_GRSECURITY
(unsigned long) THIS_MODULE->module_core,
(unsigned long) (THIS_MODULE->core_size - THIS_MODULE->core_text_size)/1024,
@@ -370,6 +375,7 @@ static void _stp_print_kernel_info(char *sname, char *vstr, int ctx, int num_pro
(unsigned long) (THIS_MODULE->core_size_rw - THIS_MODULE->core_size_rx)/1024,
(unsigned long) (THIS_MODULE->core_size_rx)/1024,
#endif
+#endif
#endif
ctx/1024,
_stp_allocated_net_memory/1024,
--
2.39.1

View File

@ -1,51 +0,0 @@
From f199d1982ef8a6c6d5c06c082d057b8793bcc6aa Mon Sep 17 00:00:00 2001
From: Serhei Makarov <serhei@serhei.io>
Date: Fri, 21 Jan 2022 18:21:46 -0500
Subject: [PATCH] gcc12 c++ compatibility re-tweak for rhel6: use function
pointer instead of lambdas instead of ptr_fun<>
Saving 2 lines in ltrim/rtrim is probably not a good reason to drop
compatibility with the RHEL6 system compiler. Actually declaring a
named function and passing the function pointer is compatible with
everything.
---
util.cxx | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/util.cxx b/util.cxx
index e9286eca3..ad36259c9 100644
--- a/util.cxx
+++ b/util.cxx
@@ -1757,21 +1757,24 @@ flush_to_stream (const string &fname, ostream &o)
return 1; // Failure
}
+int
+not_isspace(unsigned char c)
+{
+ return !std::isspace(c);
+}
+
// trim from start (in place)
void
ltrim(std::string &s)
{
- s.erase(s.begin(),
- std::find_if(s.begin(), s.end(),
- [](unsigned char c) { return !std::isspace(c); }));
+ s.erase(s.begin(), std::find_if(s.begin(), s.end(), not_isspace));
}
// trim from end (in place)
void
rtrim(std::string &s)
{
- s.erase(std::find_if(s.rbegin(), s.rend(),
- [](unsigned char c) { return !std::isspace(c); }).base(), s.end());
+ s.erase(std::find_if(s.rbegin(), s.rend(), not_isspace).base(), s.end());
}
// trim from both ends (in place)
--
2.21.0.windows.1

View File

@ -1,37 +0,0 @@
From 56c498d95c4749f15980da73b4933e7443b3f26c Mon Sep 17 00:00:00 2001
From: Jonathan Wakely <jwakely.gcc@gmail.com>
Date: Tue, 18 Jan 2022 15:52:18 -0500
Subject: [PATCH] gcc12 c++ compatibility tweak: use lambdas instead of
ptr_fun<>
Even while stap is a c++11 code base, such cleanups make code
nicer to look at.
---
util.cxx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/util.cxx b/util.cxx
index c20f76003..e9286eca3 100644
--- a/util.cxx
+++ b/util.cxx
@@ -1763,7 +1763,7 @@ ltrim(std::string &s)
{
s.erase(s.begin(),
std::find_if(s.begin(), s.end(),
- std::not1(std::ptr_fun<int, int>(std::isspace))));
+ [](unsigned char c) { return !std::isspace(c); }));
}
// trim from end (in place)
@@ -1771,7 +1771,7 @@ void
rtrim(std::string &s)
{
s.erase(std::find_if(s.rbegin(), s.rend(),
- std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end());
+ [](unsigned char c) { return !std::isspace(c); }).base(), s.end());
}
// trim from both ends (in place)
--
2.21.0.windows.1

View File

@ -1,33 +0,0 @@
From 069e109c95d1afca17cd3781b39f220cf8b39978 Mon Sep 17 00:00:00 2001
From: Stan Cox <scox@redhat.com>
Date: Wed, 13 Jul 2022 09:49:51 -0400
Subject: [PATCH] python 3.11 removed direct access to PyFrameObject members
Take into account the change in PyFrameObject definition to allow
building systemtap with python 3.11. Additional support for python
3.11 is forthcoming.
---
python/HelperSDT/_HelperSDT.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/python/HelperSDT/_HelperSDT.c b/python/HelperSDT/_HelperSDT.c
index 967cb6077..4d287132e 100644
--- a/python/HelperSDT/_HelperSDT.c
+++ b/python/HelperSDT/_HelperSDT.c
@@ -14,7 +14,13 @@
// PR25841: ensure that the libHelperSDT.so file contains debuginfo
// for the tapset helper functions, so they don't have to look into libpython*
#include <frameobject.h>
+// python 3.11 removed direct access to PyFrameObject members
+// https://docs.python.org/3.11/whatsnew/3.11.html#c-api-changes
+#if PY_MAJOR_VERSION <= 3 && PY_MINOR_VERSION < 11
PyFrameObject _dummy_frame;
+#else
+//PyFrameObject *_dummy_frame;
+#endif
#include <object.h>
PyVarObject _dummy_var;
#include <dictobject.h>
--
2.21.0.windows.1

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-4.9.tar.gz Normal file

Binary file not shown.

View File

@ -21,23 +21,19 @@
%undefine __brp_mangle_shebangs %undefine __brp_mangle_shebangs
Name: systemtap Name: systemtap
Version: 4.5 Version: 4.9
Release: 7 Release: 1
Summary: Linux trace and probe tool Summary: Linux trace and probe tool
License: GPLv2+ and Public Domain License: GPLv2+ and Public Domain
URL: http://sourceware.org/systemtap URL: http://sourceware.org/systemtap
Source: https://sourceware.org/systemtap/ftp/releases/%{name}-%{version}.tar.gz Source: https://sourceware.org/systemtap/ftp/releases/%{name}-%{version}.tar.gz
Patch1: 0001-Add-init-type-cast-to-resolve-gcc-issue.patch Patch1: 0001-PR30405-stapkp_init-we-should-not-disable-preemption.patch
Patch2: 0001-PR29094-Include-rpm-rpmcrypto.h-when-required.patch Patch2: 0001-Support-newer-kernels-with-struct-module_memory.patch
Patch3: 0001-gcc12-c-compatibility-tweak-use-lambdas-instead-of-p.patch Patch3: 0001-PR30415-conflicting-types-for-kallsyms_on_each_symbo.patch
Patch4: 0001-gcc12-c-compatibility-re-tweak-for-rhel6-use-functio.patch
Patch5: 0001-python-3.11-removed-direct-access-to-PyFrameObject-m.patch
Patch9000: huawei-fix-py3example-script-run-fail.patch Patch9000: huawei-fix-network-tcp-test-error.patch
Patch9001: huawei-fix-py3example-script-run-fail2.patch Patch9001: huawei-local-is-only-valid-in-functions-for-shellche-sc2168.patch
Patch9002: huawei-fix-network-tcp-test-error.patch
Patch9003: huawei-local-is-only-valid-in-functions-for-shellche-sc2168.patch
BuildRequires: gcc-c++ emacs systemd python3-setuptools BuildRequires: gcc-c++ emacs systemd python3-setuptools
BuildRequires: gettext-devel rpm-devel readline-devel BuildRequires: gettext-devel rpm-devel readline-devel
@ -170,6 +166,17 @@ This package includes files for a systemd service that manages
systemtap sessions and relays prometheus metrics from the sessions systemtap sessions and relays prometheus metrics from the sessions
to remote requesters on demand. 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 %package help
Summary: systemtap manual Summary: systemtap manual
License: GPLv2+ License: GPLv2+
@ -395,6 +402,7 @@ exit 0
%files devel -f systemtap.lang %files devel -f systemtap.lang
%{_bindir}/stap %{_bindir}/stap
%{_bindir}/stap-prep %{_bindir}/stap-prep
%{_bindir}/stap-profile-annotate
%{_bindir}/stap-report %{_bindir}/stap-report
%dir %{_datadir}/systemtap %dir %{_datadir}/systemtap
%{_datadir}/systemtap/runtime %{_datadir}/systemtap/runtime
@ -461,10 +469,23 @@ exit 0
/usr/sbin/stap-exporter /usr/sbin/stap-exporter
/etc/sysconfig/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 %files help
%{_mandir}/man[1378]/* %{_mandir}/man[1378]/*
%changelog %changelog
* 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 * Tue Aug 8 2023 langfei<langfei@huawei.com> - 4.5-7
- Type:bugfix - Type:bugfix
- CVE:NA - CVE:NA