diff options
author | Milian Wolff <milian.wolff@kdab.com> | 2019-09-26 15:32:48 +0200 |
---|---|---|
committer | Milian Wolff <milian.wolff@kdab.com> | 2019-10-02 09:16:05 +0000 |
commit | d25737577023ce9fa3bd593f22fa23c3fcaedbfb (patch) | |
tree | dac30d0fa7c3fbcc8259d1d977346bf2bd3f5a6d /tests/auto/perfdata/vector_static_clang/vector_static_clang_v8.0.1 | |
parent | ec8374d9c383957edf64436939d5c421d1fcc287 (diff) |
Build fully qualified identifiers for inlined C++ subroutines
This feels hacky, but it seems to work! We finally get proper symbols
for Qt signal/slot functors and other inlined lambdas etc.
The new test converts a perf.data for a statically-build test
application into textual form and then verifies that it matches
what we want. Sadly, QTestLib doesn't provide an easy way to diff,
but this is good enough I guess. Esp. note how we write the actual
text to disk too, so if something fails it's easy to run diff on
the command line if needed.
In checking that this patch actually helps, I noticed that only the
test binary compiled with gcc produces symbol names that are
unexpected, whereas the clang-compiled binary produces good results
even without this patch!
This test also uncovers two bugs in the DWARF emitted by clang and
gcc, see the following upstream bug reports for more information:
GCC is missing inline frames for sin/cos calls:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91929
Clang produces invalid mangled DW_AT_linkage_name values for sin/cos:
https://bugs.llvm.org/show_bug.cgi?id=43491
Change-Id: I0acbf57d191f09383c60bdab9e6664f9a74db42f
Fixes: https://github.com/KDAB/hotspot/issues/210
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tests/auto/perfdata/vector_static_clang/vector_static_clang_v8.0.1')
-rwxr-xr-x | tests/auto/perfdata/vector_static_clang/vector_static_clang_v8.0.1 | bin | 0 -> 1023992 bytes |
1 files changed, 0 insertions, 0 deletions
diff --git a/tests/auto/perfdata/vector_static_clang/vector_static_clang_v8.0.1 b/tests/auto/perfdata/vector_static_clang/vector_static_clang_v8.0.1 Binary files differnew file mode 100755 index 0000000..569e630 --- /dev/null +++ b/tests/auto/perfdata/vector_static_clang/vector_static_clang_v8.0.1 |