perf version 6.4.4-200.fc38 is unable to demangle Rust symbols. This is a regression from version 6.2.6-300.fc38 which did so without issue. Reproducible: Always Steps to Reproduce: 1. Install perf-6.4.4-200.fc38 2. Profile Rust code via `perf record some_rust_executable` (compliled with debug information) 3. View report via `perf report` Actual Results: Rust symbols are not demangled. Expected Results: Demangled rust symbols. Before tracking the issue down to perf, I created an issue with a flamegraph tool for Rust. You can see some screen shots of the mangled symbols there: https://github.com/flamegraph-rs/flamegraph/issues/280
The issue is still present with 6.5.4-200.fc38.
This issue is sitll present in perf-6.6.3-200.fc39.
Perf does rust demangling after an initial C++ demangling pass, but it was broken in Fedora by the following commit: commit 65cd8e5534f873b76b55fb17e942c512ee3699d9 (tags/v6.4-rc5~38^2~4) Author: Ian Rogers <irogers> Date: Mon Apr 17 12:25:46 2023 -0700 perf build: Don't compile demangle-cxx.cpp if not necessary demangle-cxx.cpp requires a C++ compiler, but feature checks may fail because of the absence of this. Add a CONFIG_CXX_DEMANGLE so that the source isn't built if not supported. Copy libbfd and cplus demangle variants to a weak symbol-elf.c version so they aren't dependent on C++. These variants are only built with the build option BUILD_NONDISTRO=1. Committer note: This also handles this build break when a C++ compiler isn't available: CXX /tmp/build/perf/util/demangle-cxx.o /bin/sh: g++: command not found Signed-off-by: Ian Rogers <irogers> Tested-by: Arnaldo Carvalho de Melo <acme> Cc: Adrian Hunter <adrian.hunter> Cc: Alexander Shishkin <alexander.shishkin.com> Cc: Ingo Molnar <mingo> Cc: Jiri Olsa <jolsa> Cc: Leo Yan <leo.yan> Cc: Mark Rutland <mark.rutland> Cc: Namhyung Kim <namhyung> Cc: Peter Zijlstra <peterz> Cc: Qi Liu <liuqi115> Cc: Ravi Bangoria <ravi.bangoria> Link: https://lore.kernel.org/r/20230417192546.99923-1-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=65cd8e5534f873b76b55fb17e942c512ee3699d9 From that v6.4-rc5~38^2~4, we can see in the build logs that it matches when demangle-cxx.o was lost: * good in kernel-tools-6.4.0-0.rc3.git0.1.fc39 https://koji.fedoraproject.org/koji/buildinfo?buildID=2204192 - (rc4 was not built) * missing in kernel-tools-6.4.0-0.rc5.git0.1.fc39 https://koji.fedoraproject.org/koji/buildinfo?buildID=2209309 I haven't yet determined what the feature detection is looking for -- the build *does* have gcc-c++ and libstdc++-devel available though.
The feature test is failing like so during the rpm build: # cat tools/build/feature/test-cxa-demangle.make.output /usr/bin/ld: /tmp/ccybKwcM.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: failed to set dynamic section sizes: bad value collect2: error: ld returned 1 exit status
It works when I set EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" in the perf build. I will submit a PR for that soon.
Fedora Linux 38 entered end-of-life (EOL) status on 2024-05-21. Fedora Linux 38 is no longer maintained, which means that it will not receive any further security or bug fix updates. As a result we are closing this bug. If you can reproduce this bug against a currently maintained version of Fedora Linux please feel free to reopen this bug against that version. Note that the version field may be hidden. Click the "Show advanced fields" button if you do not see the version field. If you are unable to reopen this bug, please file a new report against an active release. Thank you for reporting this bug and we are sorry it could not be fixed.