Upgrade to 5.0
Signed-off-by: SuperSix173 <liuchao173@huawei.com>
This commit is contained in:
parent
379b83b21b
commit
4c7d1732a4
@ -1,37 +0,0 @@
|
||||
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
|
||||
|
||||
@ -1,231 +0,0 @@
|
||||
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
|
||||
|
||||
@ -1,67 +0,0 @@
|
||||
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
|
||||
|
||||
Binary file not shown.
BIN
systemtap-5.0.tar.gz
Normal file
BIN
systemtap-5.0.tar.gz
Normal file
Binary file not shown.
@ -21,17 +21,13 @@
|
||||
%undefine __brp_mangle_shebangs
|
||||
|
||||
Name: systemtap
|
||||
Version: 4.9
|
||||
Version: 5.0
|
||||
Release: 1
|
||||
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-PR30405-stapkp_init-we-should-not-disable-preemption.patch
|
||||
Patch2: 0001-Support-newer-kernels-with-struct-module_memory.patch
|
||||
Patch3: 0001-PR30415-conflicting-types-for-kallsyms_on_each_symbo.patch
|
||||
|
||||
Patch9000: huawei-fix-network-tcp-test-error.patch
|
||||
Patch9001: huawei-local-is-only-valid-in-functions-for-shellche-sc2168.patch
|
||||
|
||||
@ -40,7 +36,7 @@ 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
|
||||
@ -136,6 +132,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
|
||||
@ -480,6 +477,18 @@ exit 0
|
||||
%{_mandir}/man[1378]/*
|
||||
|
||||
%changelog
|
||||
* 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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user