summaryrefslogtreecommitdiff
path: root/simpleperf/dso_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'simpleperf/dso_test.cpp')
-rw-r--r--simpleperf/dso_test.cpp106
1 files changed, 0 insertions, 106 deletions
diff --git a/simpleperf/dso_test.cpp b/simpleperf/dso_test.cpp
index 02958ce6..77537d46 100644
--- a/simpleperf/dso_test.cpp
+++ b/simpleperf/dso_test.cpp
@@ -20,14 +20,11 @@
#include <android-base/file.h>
#include <android-base/stringprintf.h>
-#include <android-base/test_utils.h>
#include "get_test_data.h"
#include "read_apk.h"
-#include "thread_tree.h"
#include "utils.h"
-using namespace simpleperf;
using namespace simpleperf_dso_impl;
TEST(DebugElfFileFinder, use_build_id_list) {
@@ -136,19 +133,6 @@ TEST(DebugElfFileFinder, find_basename_in_symfs_dir) {
symfs_dir + OS_PATH_SEPARATOR + "elf");
}
-TEST(DebugElfFileFinder, build_id_mismatch) {
- DebugElfFileFinder finder;
- finder.SetSymFsDir(GetTestDataDir());
- CapturedStderr capture;
- capture.Start();
- BuildId mismatch_build_id("0c12a384a9f4a3f3659b7171ca615dbec3a81f71");
- std::string debug_file = finder.FindDebugFile(ELF_FILE, false, mismatch_build_id);
- capture.Stop();
- std::string stderr_output = capture.str();
- ASSERT_EQ(debug_file, ELF_FILE);
- ASSERT_NE(stderr_output.find("build id mismatch"), std::string::npos);
-}
-
TEST(dso, dex_file_dso) {
#if defined(__linux__)
for (DsoType dso_type : {DSO_DEX_FILE, DSO_ELF_FILE}) {
@@ -211,93 +195,3 @@ TEST(dso, IpToVaddrInFile) {
ASSERT_TRUE(dso);
ASSERT_EQ(0xa5140, dso->IpToVaddrInFile(0xe9201140, 0xe9201000, 0xa5000));
}
-
-TEST(dso, kernel_address_randomization) {
- // Use ELF_FILE as a fake kernel vmlinux.
- const std::string vmlinux_path = GetTestData(ELF_FILE);
- Dso::SetVmlinux(vmlinux_path);
- std::unique_ptr<Dso> dso = Dso::CreateDso(DSO_KERNEL, DEFAULT_KERNEL_MMAP_NAME);
- ASSERT_TRUE(dso);
- ASSERT_EQ(dso->GetDebugFilePath(), vmlinux_path);
- // When map_start = 0, can't fix kernel address randomization. So vmlinux isn't used.
- ASSERT_EQ(dso->IpToVaddrInFile(0x800500, 0, 0), 0x800500);
- ASSERT_FALSE(dso->IpToFileOffset(0x800500, 0, 0));
- ASSERT_TRUE(dso->FindSymbol(0x400510) == nullptr);
-
- dso = Dso::CreateDso(DSO_KERNEL, DEFAULT_KERNEL_MMAP_NAME);
- ASSERT_TRUE(dso);
- ASSERT_EQ(dso->GetDebugFilePath(), vmlinux_path);
- // When map_start != 0, can fix kernel address randomization. So vmlinux is used.
- ASSERT_EQ(dso->IpToVaddrInFile(0x800500, 0x800400, 0), 0x400500);
- ASSERT_EQ(dso->IpToFileOffset(0x800500, 0x800400, 0).value(), 0x500);
- const Symbol* symbol = dso->FindSymbol(0x400510);
- ASSERT_TRUE(symbol != nullptr);
- ASSERT_STREQ(symbol->Name(), "GlobalFunc");
-}
-
-TEST(dso, find_vmlinux_in_symdirs) {
- // Create a symdir.
- TemporaryDir tmpdir;
- std::string vmlinux_path = std::string(tmpdir.path) + OS_PATH_SEPARATOR + "elf";
- std::string data;
- ASSERT_TRUE(android::base::ReadFileToString(GetTestData(ELF_FILE), &data));
- ASSERT_TRUE(android::base::WriteStringToFile(data, vmlinux_path));
-
- // Find vmlinux in symbol dirs.
- Dso::SetVmlinux("");
- Dso::AddSymbolDir(tmpdir.path);
- Dso::SetBuildIds({std::make_pair(DEFAULT_KERNEL_MMAP_NAME, BuildId(ELF_FILE_BUILD_ID))});
- std::unique_ptr<Dso> dso = Dso::CreateDso(DSO_KERNEL, DEFAULT_KERNEL_MMAP_NAME);
- ASSERT_TRUE(dso);
- ASSERT_EQ(dso->GetDebugFilePath(), vmlinux_path);
-}
-
-TEST(dso, kernel_module) {
- // Test finding debug files for kernel modules.
- Dso::SetSymFsDir(GetTestDataDir());
- std::vector<std::pair<std::string, BuildId>> build_ids;
- build_ids.emplace_back(ELF_FILE, BuildId(ELF_FILE_BUILD_ID));
- Dso::SetBuildIds(build_ids);
- std::unique_ptr<Dso> kernel_dso = Dso::CreateDso(DSO_KERNEL, DEFAULT_KERNEL_MMAP_NAME);
- ASSERT_TRUE(kernel_dso);
- std::unique_ptr<Dso> dso = Dso::CreateKernelModuleDso(ELF_FILE, 0, 0, kernel_dso.get());
- ASSERT_EQ(dso->GetDebugFilePath(), GetTestData(ELF_FILE));
-}
-
-TEST(dso, kernel_module_CalculateMinVaddr) {
- // Create fake Dso objects.
- auto kernel_dso = Dso::CreateDso(DSO_KERNEL, DEFAULT_KERNEL_MMAP_NAME);
- ASSERT_TRUE(kernel_dso);
- const uint64_t module_memory_start = 0xffffffa9bc790000ULL;
- const uint64_t module_memory_size = 0x8d7000ULL;
- auto module_dso =
- Dso::CreateKernelModuleDso("fake_module.ko", module_memory_start,
- module_memory_start + module_memory_size, kernel_dso.get());
- ASSERT_TRUE(module_dso);
-
- // Provide symbol info for calculating min vaddr.
- std::vector<Symbol> kernel_symbols;
- kernel_symbols.emplace_back("fake_module_function [fake_module]", 0xffffffa9bc7a64e8ULL, 0x60c);
- kernel_dso->SetSymbols(&kernel_symbols);
- std::vector<Symbol> module_symbols;
- module_symbols.emplace_back("fake_module_function", 0x144e8, 0x60c);
- module_dso->SetSymbols(&module_symbols);
-
- // Calculate min vaddr.
- uint64_t min_vaddr;
- uint64_t memory_offset;
- module_dso->GetMinExecutableVaddr(&min_vaddr, &memory_offset);
- ASSERT_EQ(min_vaddr, 0x144e8);
- ASSERT_EQ(memory_offset, 0x164e8);
-
- // Use min vaddr in IpToVaddrInFile().
- ASSERT_EQ(module_dso->IpToVaddrInFile(0xffffffa9bc7a64e8ULL, module_memory_start, 0), 0x144e8);
-}
-
-TEST(dso, symbol_map_file) {
- auto dso = Dso::CreateDso(DSO_SYMBOL_MAP_FILE, "perf-123.map");
- ASSERT_TRUE(dso);
- ASSERT_EQ(DSO_SYMBOL_MAP_FILE, dso->type());
- ASSERT_EQ(0x12345678, dso->IpToVaddrInFile(0x12345678, 0x0, 0x0));
- ASSERT_EQ(0x12345678, dso->IpToVaddrInFile(0x12345678, 0xe9201000, 0xa5000));
-}