summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/perfaddresscache.cpp2
-rw-r--r--app/perfaddresscache.h2
-rw-r--r--tests/auto/addresscache/tst_addresscache.cpp3
-rw-r--r--tests/auto/perfdata/vector_static_gcc/perf.data.expected.txt3
-rw-r--r--tests/auto/perfdata/vector_static_gcc/perf.data.zstd.expected.txt3
5 files changed, 8 insertions, 5 deletions
diff --git a/app/perfaddresscache.cpp b/app/perfaddresscache.cpp
index 18edef1..46938cf 100644
--- a/app/perfaddresscache.cpp
+++ b/app/perfaddresscache.cpp
@@ -86,7 +86,7 @@ PerfAddressCache::SymbolCacheEntry PerfAddressCache::findSymbol(const QByteArray
--it;
- if (it->offset <= relAddr && it->offset + it->size > relAddr) {
+ if (it->offset <= relAddr && (it->offset + it->size > relAddr || (it->size == 0))) {
// demangle symbols on demand instead of demangling all symbols directly
// hopefully most of the symbols we won't ever encounter after all
if (!it->demangled) {
diff --git a/app/perfaddresscache.h b/app/perfaddresscache.h
index 6e18a34..6bc780d 100644
--- a/app/perfaddresscache.h
+++ b/app/perfaddresscache.h
@@ -48,7 +48,7 @@ public:
, symname(symname)
{}
- bool isValid() const { return size != 0; }
+ bool isValid() const { return !symname.isEmpty(); }
quint64 offset;
quint64 size;
diff --git a/tests/auto/addresscache/tst_addresscache.cpp b/tests/auto/addresscache/tst_addresscache.cpp
index 8136682..6387a4e 100644
--- a/tests/auto/addresscache/tst_addresscache.cpp
+++ b/tests/auto/addresscache/tst_addresscache.cpp
@@ -72,7 +72,7 @@ private slots:
QVERIFY(!cache.findSymbol(libfoo_a, 0).isValid());
QVERIFY(!cache.findSymbol(libfoo_b, 0).isValid());
- cache.setSymbolCache(libfoo_a, {{0x100, 10, "Foo"}});
+ cache.setSymbolCache(libfoo_a, {{0x100, 10, "Foo"}, {0x11a, 0, "FooZ"}, {0x12a, 10, "FooN"}});
for (auto addr : {0x100, 0x100 + 9}) {
const auto cached = cache.findSymbol(libfoo_a, addr);
QVERIFY(cached.isValid());
@@ -83,6 +83,7 @@ private slots:
QVERIFY(!cache.findSymbol(libfoo_a, 0x100 + 10).isValid());
QVERIFY(!cache.findSymbol(libfoo_b, 0x100).isValid());
QVERIFY(!cache.findSymbol(libfoo_b, 0x100 + 9).isValid());
+ QVERIFY(cache.findSymbol(libfoo_a, 0x11a + 1).isValid());
}
};
diff --git a/tests/auto/perfdata/vector_static_gcc/perf.data.expected.txt b/tests/auto/perfdata/vector_static_gcc/perf.data.expected.txt
index d494b31..9ef4378 100644
--- a/tests/auto/perfdata/vector_static_gcc/perf.data.expected.txt
+++ b/tests/auto/perfdata/vector_static_gcc/perf.data.expected.txt
@@ -711,7 +711,8 @@ vector_static_g 349054 349054 65149.476874692
vector_static_g 349054 349054 65149.477126147
cycles: 315591
- 400480 <.plt+400480> vector_static_gcc_v9.1.0 /home/milian/projects/kdab/rnd/hotspot/3rdparty/perfparser/tests/auto/perfdata/vector_static_gcc/vector_static_gcc_v9.1.0
+ 400480
+ 400430 _init vector_static_gcc_v9.1.0 /home/milian/projects/kdab/rnd/hotspot/3rdparty/perfparser/tests/auto/perfdata/vector_static_gcc/vector_static_gcc_v9.1.0
40155c /usr/include/c++/9.1.0/bits/stl_algo.h:4449:13
40152b /usr/include/c++/9.1.0/bits/stl_algo.h:4441:5 std::generate_n<std::back_insert_iterator<std::vector<double> >, int, main()::<lambda()> > vector_static_gcc_v9.1.0 /home/milian/projects/kdab/rnd/hotspot/3rdparty/perfparser/tests/auto/perfdata/vector_static_gcc/vector_static_gcc_v9.1.0
40152b ../../../manual/clients/vector.cpp:16:6
diff --git a/tests/auto/perfdata/vector_static_gcc/perf.data.zstd.expected.txt b/tests/auto/perfdata/vector_static_gcc/perf.data.zstd.expected.txt
index e62f41a..f7af600 100644
--- a/tests/auto/perfdata/vector_static_gcc/perf.data.zstd.expected.txt
+++ b/tests/auto/perfdata/vector_static_gcc/perf.data.zstd.expected.txt
@@ -247,7 +247,8 @@ vector_static_g 267677 267677 9952.368475245
vector_static_g 267677 267677 9952.368668898
cycles: 415081
- 400490 <.plt+400490> vector_static_gcc_v9.1.0 /home/milian/projects/kdab/rnd/hotspot/3rdparty/perfparser/tests/auto/perfdata/vector_static_gcc/vector_static_gcc_v9.1.0
+ 400490
+ 400430 _init vector_static_gcc_v9.1.0 /home/milian/projects/kdab/rnd/hotspot/3rdparty/perfparser/tests/auto/perfdata/vector_static_gcc/vector_static_gcc_v9.1.0
401572 /usr/include/c++/9.1.0/bits/stl_algo.h:4449:13
40152b /usr/include/c++/9.1.0/bits/stl_algo.h:4441:5 std::generate_n<std::back_insert_iterator<std::vector<double> >, int, main()::<lambda()> > vector_static_gcc_v9.1.0 /home/milian/projects/kdab/rnd/hotspot/3rdparty/perfparser/tests/auto/perfdata/vector_static_gcc/vector_static_gcc_v9.1.0
40152b ../../../manual/clients/vector.cpp:16:6