diff mbox series

systemtap: Disable dangling-pointer warning

Message ID 20230314180004.203287-1-raj.khem@gmail.com
State Accepted, archived
Commit dcc891059c5f3a17781febfff4a4280b4b7c8754
Headers show
Series systemtap: Disable dangling-pointer warning | expand

Commit Message

Khem Raj March 14, 2023, 6 p.m. UTC
This is to fix build in RISCV64

| In constructor 'symresolution_info::symresolution_info(systemtap_session&, bool)',
|     inlined from 'int semantic_pass_symbols(systemtap_session&)' at ../git/elaborate.cxx:1884:28:
| ../git/elaborate.cxx:2601:21: error: storing the address of local variable 'sym' in '*s.systemtap_session::symbol_resolver' [-Werror=dangling-pointer=]
|  2601 |   s.symbol_resolver = this; // save resolver for early PR25841 function resolution
|       |   ~~~~~~~~~~~~~~~~~~^~~~~~
| ../git/elaborate.cxx: In function 'int semantic_pass_symbols(systemtap_session&)':
| ../git/elaborate.cxx:1884:22: note: 'sym' declared here
|  1884 |   symresolution_info sym (s);
|       |                      ^~~
| ../git/elaborate.cxx:1884:22: note: 's' declared here

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/recipes-kernel/systemtap/systemtap_git.bb | 3 +++
 1 file changed, 3 insertions(+)

Comments

Martin Jansa March 24, 2023, 2:32 p.m. UTC | #1
On Tue, Mar 14, 2023 at 7:00 PM Khem Raj <raj.khem@gmail.com> wrote:

> This is to fix build in RISCV64
>
> | In constructor
> 'symresolution_info::symresolution_info(systemtap_session&, bool)',
> |     inlined from 'int semantic_pass_symbols(systemtap_session&)' at
> ../git/elaborate.cxx:1884:28:
> | ../git/elaborate.cxx:2601:21: error: storing the address of local
> variable 'sym' in '*s.systemtap_session::symbol_resolver'
> [-Werror=dangling-pointer=]
> |  2601 |   s.symbol_resolver = this; // save resolver for early PR25841
> function resolution
> |       |   ~~~~~~~~~~~~~~~~~~^~~~~~
> | ../git/elaborate.cxx: In function 'int
> semantic_pass_symbols(systemtap_session&)':
> | ../git/elaborate.cxx:1884:22: note: 'sym' declared here
> |  1884 |   symresolution_info sym (s);
> |       |                      ^~~
> | ../git/elaborate.cxx:1884:22: note: 's' declared here
>

FWIW: this isn't specific to RISCV64, I had the same in my branch for a
while and I was seeing it on qemux86:

But it was introduced only in newer gcc-13 snapshots, from my commit
message:

    * since newer gcc-13 snapshot it detects dangling-pointer and fails due
to Werror
      git/elaborate.cxx:2601:21: error: storing the address of local
variable 'sym' in '*s.systemtap_session::symbol_resolver'
[-Werror=dangling-pointer=]

    * the check was improved recently, probably in one of these:
        gcc $ git log --oneline
a1292514f898e3d3f34fd843b967f72b779aaa88..6aa1f40a3263741d964ef4716e85a0df5cec83b6
| grep -i dangling
        fdac2bea53b -Wdangling-pointer: don't mark SSA lhs sets as stores
        916ce577ad1 libstdc++: Implement P2255R2 dangling checks for
std::pair
        d482b20fd34 warn-access: wrong -Wdangling-pointer with labels
[PR106080]
diff mbox series

Patch

diff --git a/meta/recipes-kernel/systemtap/systemtap_git.bb b/meta/recipes-kernel/systemtap/systemtap_git.bb
index 072fcb310a..d320a8a5e0 100644
--- a/meta/recipes-kernel/systemtap/systemtap_git.bb
+++ b/meta/recipes-kernel/systemtap/systemtap_git.bb
@@ -34,6 +34,9 @@  PACKAGECONFIG[python3-probes] = "--with-python3-probes,--without-python3-probes,
 inherit autotools gettext pkgconfig systemd
 inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3-probes', 'setuptools3-base', '', d)}
 
+# | ../git/elaborate.cxx:2601:21: error: storing the address of local variable 'sym' in '*s.systemtap_session::symbol_resolver' [-Werror=dangling-pointer=]
+CXXFLAGS += "-Wno-dangling-pointer"
+
 # exporter comes with python3-probes
 PACKAGES =+ "${PN}-exporter"
 FILES:${PN}-exporter = "${sysconfdir}/stap-exporter/* \