diff options
Diffstat (limited to 'simpleperf/dso_test.cpp')
-rw-r--r-- | simpleperf/dso_test.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/simpleperf/dso_test.cpp b/simpleperf/dso_test.cpp index 11bcde19..f9199e41 100644 --- a/simpleperf/dso_test.cpp +++ b/simpleperf/dso_test.cpp @@ -30,6 +30,7 @@ using namespace simpleperf; using namespace simpleperf_dso_impl; +// @CddTest = 6.1/C-0-2 TEST(DebugElfFileFinder, use_build_id_list) { // Create a temp symdir with build_id_list. TemporaryDir tmpdir; @@ -57,6 +58,7 @@ static std::string ConvertPathSeparator(const std::string& path) { return result; } +// @CddTest = 6.1/C-0-2 TEST(DebugElfFileFinder, concatenating_symfs_dir) { DebugElfFileFinder finder; ASSERT_TRUE(finder.SetSymFsDir(GetTestDataDir())); @@ -73,6 +75,7 @@ TEST(DebugElfFileFinder, concatenating_symfs_dir) { GetTestDataDir() + apk_path + "!/" + NATIVELIB_IN_APK); } +// @CddTest = 6.1/C-0-2 TEST(DebugElfFileFinder, use_vdso) { DebugElfFileFinder finder; std::string fake_vdso32 = "fake_vdso32"; @@ -84,6 +87,7 @@ TEST(DebugElfFileFinder, use_vdso) { ASSERT_EQ(finder.FindDebugFile("[vdso]", true, build_id), fake_vdso64); } +// @CddTest = 6.1/C-0-2 TEST(DebugElfFileFinder, add_symbol_dir) { DebugElfFileFinder finder; ASSERT_FALSE(finder.AddSymbolDir(GetTestDataDir() + "dir_not_exist")); @@ -94,6 +98,7 @@ TEST(DebugElfFileFinder, add_symbol_dir) { symfs_dir + OS_PATH_SEPARATOR + "elf_for_build_id_check"); } +// @CddTest = 6.1/C-0-2 TEST(DebugElfFileFinder, build_id_list) { DebugElfFileFinder finder; // Find file in symfs dir with correct build_id_list. @@ -109,6 +114,7 @@ TEST(DebugElfFileFinder, build_id_list) { ASSERT_EQ(finder.FindDebugFile("elf", false, CHECK_ELF_FILE_BUILD_ID), "elf"); } +// @CddTest = 6.1/C-0-2 TEST(DebugElfFileFinder, no_build_id) { DebugElfFileFinder finder; // If not given a build id, we should match an elf in symfs without build id. @@ -118,6 +124,7 @@ TEST(DebugElfFileFinder, no_build_id) { ASSERT_EQ(finder.FindDebugFile("elf", false, build_id), symfs_dir + OS_PATH_SEPARATOR + "elf"); } +// @CddTest = 6.1/C-0-2 TEST(DebugElfFileFinder, find_basename_in_symfs_dir) { DebugElfFileFinder finder; // Find normal elf file. @@ -136,6 +143,7 @@ TEST(DebugElfFileFinder, find_basename_in_symfs_dir) { symfs_dir + OS_PATH_SEPARATOR + "elf"); } +// @CddTest = 6.1/C-0-2 TEST(DebugElfFileFinder, build_id_mismatch) { DebugElfFileFinder finder; finder.SetSymFsDir(GetTestDataDir()); @@ -148,6 +156,7 @@ TEST(DebugElfFileFinder, build_id_mismatch) { ASSERT_NE(stderr_output.find("build id mismatch"), std::string::npos); } +// @CddTest = 6.1/C-0-2 TEST(dso, dex_file_dso) { #if defined(__linux__) for (DsoType dso_type : {DSO_DEX_FILE, DSO_ELF_FILE}) { @@ -177,6 +186,7 @@ TEST(dso, dex_file_dso) { #endif // defined(__linux__) } +// @CddTest = 6.1/C-0-2 TEST(dso, dex_file_offsets) { std::unique_ptr<Dso> dso = Dso::CreateDso(DSO_DEX_FILE, ""); ASSERT_TRUE(dso); @@ -186,6 +196,7 @@ TEST(dso, dex_file_offsets) { ASSERT_EQ(*dso->DexFileOffsets(), std::vector<uint64_t>({0x1, 0x2, 0x3, 0x4, 0x5})); } +// @CddTest = 6.1/C-0-2 TEST(dso, embedded_elf) { const std::string file_path = GetUrlInApk(GetTestData(APK_FILE), NATIVELIB_IN_APK); std::unique_ptr<Dso> dso = Dso::CreateDso(DSO_ELF_FILE, file_path); @@ -205,12 +216,14 @@ TEST(dso, embedded_elf) { ASSERT_EQ(build_id, native_lib_build_id); } +// @CddTest = 6.1/C-0-2 TEST(dso, IpToVaddrInFile) { std::unique_ptr<Dso> dso = Dso::CreateDso(DSO_ELF_FILE, GetTestData("libc.so")); ASSERT_TRUE(dso); ASSERT_EQ(0xa5140, dso->IpToVaddrInFile(0xe9201140, 0xe9201000, 0xa5000)); } +// @CddTest = 6.1/C-0-2 TEST(dso, kernel_address_randomization) { // Use ELF_FILE as a fake kernel vmlinux. const std::string vmlinux_path = GetTestData(ELF_FILE); @@ -234,6 +247,7 @@ TEST(dso, kernel_address_randomization) { ASSERT_STREQ(symbol->Name(), "GlobalFunc"); } +// @CddTest = 6.1/C-0-2 TEST(dso, find_vmlinux_in_symdirs) { // Create a symdir. TemporaryDir tmpdir; @@ -260,6 +274,7 @@ TEST(dso, find_vmlinux_in_symdirs) { ASSERT_EQ(0x400927, dso->IpToVaddrInFile(0x800527, 0x800000, 0)); } +// @CddTest = 6.1/C-0-2 TEST(dso, kernel_module) { // Test finding debug files for kernel modules. Dso::SetSymFsDir(GetTestDataDir()); @@ -272,14 +287,16 @@ TEST(dso, kernel_module) { ASSERT_EQ(dso->GetDebugFilePath(), GetTestData(ELF_FILE)); } +// @CddTest = 6.1/C-0-2 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; + TemporaryFile tmpfile; auto module_dso = - Dso::CreateKernelModuleDso("fake_module.ko", module_memory_start, + Dso::CreateKernelModuleDso(tmpfile.path, module_memory_start, module_memory_start + module_memory_size, kernel_dso.get()); ASSERT_TRUE(module_dso); @@ -302,6 +319,7 @@ TEST(dso, kernel_module_CalculateMinVaddr) { ASSERT_EQ(module_dso->IpToVaddrInFile(0xffffffa9bc7a64e8ULL, module_memory_start, 0), 0x144e8); } +// @CddTest = 6.1/C-0-2 TEST(dso, symbol_map_file) { auto dso = Dso::CreateDso(DSO_SYMBOL_MAP_FILE, "perf-123.map"); ASSERT_TRUE(dso); @@ -310,6 +328,7 @@ TEST(dso, symbol_map_file) { ASSERT_EQ(0x12345678, dso->IpToVaddrInFile(0x12345678, 0xe9201000, 0xa5000)); } +// @CddTest = 6.1/C-0-2 TEST(dso, FunctionName) { Symbol symbol = Symbol("void ctep.v(cteo, ctgc, ctbn)", 0x0, 0x1); ASSERT_EQ(symbol.FunctionName(), "ctep.v"); @@ -319,6 +338,7 @@ TEST(dso, FunctionName) { ASSERT_EQ(symbol.FunctionName(), "ctep.v"); } +// @CddTest = 6.1/C-0-2 TEST(dso, search_debug_file_only_when_needed) { Dso::SetBuildIds({std::make_pair("/elf", BuildId("1b12a384a9f4a3f3659b7171ca615dbec3a81f71"))}); Dso::SetSymFsDir(GetTestDataDir()); @@ -330,6 +350,7 @@ TEST(dso, search_debug_file_only_when_needed) { capture.Stop(); } +// @CddTest = 6.1/C-0-2 TEST(dso, read_symbol_warning) { { // Don't warn when the file may not be an ELF file. @@ -370,6 +391,7 @@ TEST(dso, read_symbol_warning) { } } +// @CddTest = 6.1/C-0-2 TEST(dso, demangle) { ASSERT_EQ(Dso::Demangle("main"), "main"); ASSERT_EQ(Dso::Demangle("_ZN4main4main17h2a68d4d833d7495aE"), "main::main::h2a68d4d833d7495a"); |