diff mbox series

systemtap: fix systemtap-native build error on Fedora 40

Message ID 20240610033403.23741-1-victor.kamensky7@gmail.com
State New
Headers show
Series systemtap: fix systemtap-native build error on Fedora 40 | expand

Commit Message

Victor Kamensky June 10, 2024, 3:34 a.m. UTC
Backport of couple patches from upstream.

Signed-off-by: Victor Kamensky <victor.kamensky7@gmail.com>
---
 ...gcc-version-compatibility-hack-redux.patch | 32 ++++++++++++
 ...e.cxx-gcc-version-compatibility-hack.patch | 52 +++++++++++++++++++
 .../systemtap/systemtap_git.inc               |  2 +
 3 files changed, 86 insertions(+)
 create mode 100644 meta/recipes-kernel/systemtap/systemtap/0001-elaborate.cxx-gcc-version-compatibility-hack-redux.patch
 create mode 100644 meta/recipes-kernel/systemtap/systemtap/0001-elaborate.cxx-gcc-version-compatibility-hack.patch
diff mbox series

Patch

diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-elaborate.cxx-gcc-version-compatibility-hack-redux.patch b/meta/recipes-kernel/systemtap/systemtap/0001-elaborate.cxx-gcc-version-compatibility-hack-redux.patch
new file mode 100644
index 0000000000..0c2888400d
--- /dev/null
+++ b/meta/recipes-kernel/systemtap/systemtap/0001-elaborate.cxx-gcc-version-compatibility-hack-redux.patch
@@ -0,0 +1,32 @@ 
+From 91caf37e4dfe862f9b68447b1597c0d0f31523c3 Mon Sep 17 00:00:00 2001
+From: "Frank Ch. Eigler" <fche@redhat.com>
+Date: Tue, 7 May 2024 15:04:04 -0400
+Subject: [PATCH] elaborate.cxx: gcc version compatibility hack redux
+
+Note __GNUC__ >= 14 for this diagnostic.
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=systemtap.git;a=commit;h=91caf37e4dfe862f9b68447b1597c0d0f31523c3]
+Signed-off-by: Victor Kamensky <victor.kamensky7@gmail.com>
+---
+ elaborate.cxx | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/elaborate.cxx b/elaborate.cxx
+index 88505559b..c08023f1d 100644
+--- a/elaborate.cxx
++++ b/elaborate.cxx
+@@ -2656,9 +2656,11 @@ symresolution_info::symresolution_info (systemtap_session& s, bool omniscient_un
+   session (s), unmangled_p(omniscient_unmangled), current_function (0), current_probe (0)
+ {
+   #pragma GCC diagnostic push
++  #if __GNUC__ >= 14
+   // c10s early snapshot GCC complains about this construct, which is
+   // made safe via our dtor usage
+   #pragma GCC diagnostic ignored "-Wdangling-pointer"
++  #endif
+   saved_session_symbol_resolver = s.symbol_resolver;
+   s.symbol_resolver = this; // save resolver for early PR25841 function resolution
+   #pragma GCC diagnostic pop
+-- 
+2.45.2
+
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-elaborate.cxx-gcc-version-compatibility-hack.patch b/meta/recipes-kernel/systemtap/systemtap/0001-elaborate.cxx-gcc-version-compatibility-hack.patch
new file mode 100644
index 0000000000..7cdcc93f14
--- /dev/null
+++ b/meta/recipes-kernel/systemtap/systemtap/0001-elaborate.cxx-gcc-version-compatibility-hack.patch
@@ -0,0 +1,52 @@ 
+From d11241bdd05bc4c745c8aef53a2725331e1a93b4 Mon Sep 17 00:00:00 2001
+From: "Frank Ch. Eigler" <fche@redhat.com>
+Date: Tue, 7 May 2024 14:25:12 -0400
+Subject: [PATCH] elaborate.cxx: gcc version compatibility hack
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Suppress -Wdangling-pointer for a construct that appears valid, but
+one particular GCC snapshot version complains about.
+
+In constructor ‘symresolution_info::symresolution_info(systemtap_session&, bool)’,
+inlined from ‘int semantic_pass_symbols(systemtap_session&)’ at ../systemtap/elaborate.cxx:1872:28:
+../systemtap/elaborate.cxx:2659:21: error: storing the address of local variable ‘sym’ in ‘*s.systemtap_session::symbol_resolver’ [-Werror=dangling-pointer=]
+ 2659 |   s.symbol_resolver = this; // save resolver for early PR25841 function resolution
+      |   ~~~~~~~~~~~~~~~~~~^~~~~~
+../systemtap/elaborate.cxx: In function ‘int semantic_pass_symbols(systemtap_session&)’:
+../systemtap/elaborate.cxx:1872:22: note: ‘sym’ declared here
+ 1872 |   symresolution_info sym (s);
+      |                      ^~~
+../systemtap/elaborate.cxx:1870:43: note: ‘s’ declared here
+ 1870 | semantic_pass_symbols (systemtap_session& s)
+      |                        ~~~~~~~~~~~~~~~~~~~^
+cc1plus: all warnings being treated as errors
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=systemtap.git;a=commit;h=d11241bdd05bc4c745c8aef53a2725331e1a93b4]
+Signed-off-by: Victor Kamensky <victor.kamensky7@gmail.com>
+---
+ elaborate.cxx | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/elaborate.cxx b/elaborate.cxx
+index 8bf9e6c06..88505559b 100644
+--- a/elaborate.cxx
++++ b/elaborate.cxx
+@@ -2655,8 +2655,13 @@ semantic_pass (systemtap_session& s)
+ symresolution_info::symresolution_info (systemtap_session& s, bool omniscient_unmangled):
+   session (s), unmangled_p(omniscient_unmangled), current_function (0), current_probe (0)
+ {
++  #pragma GCC diagnostic push
++  // c10s early snapshot GCC complains about this construct, which is
++  // made safe via our dtor usage
++  #pragma GCC diagnostic ignored "-Wdangling-pointer"
+   saved_session_symbol_resolver = s.symbol_resolver;
+   s.symbol_resolver = this; // save resolver for early PR25841 function resolution
++  #pragma GCC diagnostic pop
+ }
+ 
+ 
+-- 
+2.45.2
+
diff --git a/meta/recipes-kernel/systemtap/systemtap_git.inc b/meta/recipes-kernel/systemtap/systemtap_git.inc
index cc9fc81430..80945ad7f8 100644
--- a/meta/recipes-kernel/systemtap/systemtap_git.inc
+++ b/meta/recipes-kernel/systemtap/systemtap_git.inc
@@ -7,6 +7,8 @@  SRC_URI = "git://sourceware.org/git/systemtap.git;branch=master;protocol=https \
            file://0001-Do-not-let-configure-write-a-python-location-into-th.patch \
            file://0001-Install-python-modules-to-correct-library-dir.patch \
            file://0001-staprun-stapbpf-don-t-support-installing-a-non-root.patch \
+           file://0001-elaborate.cxx-gcc-version-compatibility-hack.patch \
+           file://0001-elaborate.cxx-gcc-version-compatibility-hack-redux.patch \
            "
 
 COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips|riscv64).*-linux'