diff options
Diffstat (limited to 'libunwindstack/tests/UnwindOfflineTest.cpp')
-rw-r--r-- | libunwindstack/tests/UnwindOfflineTest.cpp | 98 |
1 files changed, 47 insertions, 51 deletions
diff --git a/libunwindstack/tests/UnwindOfflineTest.cpp b/libunwindstack/tests/UnwindOfflineTest.cpp index 2261449..9d09aa3 100644 --- a/libunwindstack/tests/UnwindOfflineTest.cpp +++ b/libunwindstack/tests/UnwindOfflineTest.cpp @@ -44,7 +44,7 @@ class UnwindOfflineTest : public ::testing::Test { TEST_F(UnwindOfflineTest, pc_straddle_arm) { std::string error_msg; - if (!offline_utils_.Init("straddle_arm/", ARCH_ARM, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("straddle_arm/", ARCH_ARM, &error_msg)) FAIL() << error_msg; Regs* regs = offline_utils_.GetRegs(); std::unique_ptr<Regs> regs_copy(regs->Clone()); @@ -87,7 +87,7 @@ TEST_F(UnwindOfflineTest, pc_straddle_arm) { TEST_F(UnwindOfflineTest, pc_in_gnu_debugdata_arm) { std::string error_msg; - if (!offline_utils_.Init("gnu_debugdata_arm/", ARCH_ARM, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("gnu_debugdata_arm/", ARCH_ARM, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -110,7 +110,7 @@ TEST_F(UnwindOfflineTest, pc_in_gnu_debugdata_arm) { TEST_F(UnwindOfflineTest, pc_straddle_arm64) { std::string error_msg; - if (!offline_utils_.Init("straddle_arm64/", ARCH_ARM64, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("straddle_arm64/", ARCH_ARM64, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -144,15 +144,13 @@ TEST_F(UnwindOfflineTest, pc_straddle_arm64) { TEST_F(UnwindOfflineTest, jit_debug_x86) { std::string error_msg; - if (!offline_utils_.Init("jit_debug_x86/", ARCH_X86, error_msg)) FAIL() << error_msg; - - if (!offline_utils_.SetJitProcessMemory(error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("jit_debug_x86/", ARCH_X86, &error_msg, + ProcessMemoryFlag::kIncludeJitMemory)) + FAIL() << error_msg; - Regs* regs = offline_utils_.GetRegs(); - std::shared_ptr<Memory> process_memory = offline_utils_.GetProcessMemory(); - std::unique_ptr<JitDebug> jit_debug = CreateJitDebug(regs->Arch(), process_memory); - Unwinder unwinder(128, offline_utils_.GetMaps(), regs, process_memory); - unwinder.SetJitDebug(jit_debug.get()); + Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), + offline_utils_.GetProcessMemory()); + unwinder.SetJitDebug(offline_utils_.GetJitDebug()); unwinder.Unwind(); std::string frame_info(DumpFrames(unwinder)); @@ -441,15 +439,13 @@ TEST_F(UnwindOfflineTest, jit_debug_x86) { TEST_F(UnwindOfflineTest, jit_debug_arm) { std::string error_msg; - if (!offline_utils_.Init("jit_debug_arm/", ARCH_ARM, error_msg)) FAIL() << error_msg; - - if (!offline_utils_.SetJitProcessMemory(error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("jit_debug_arm/", ARCH_ARM, &error_msg, + ProcessMemoryFlag::kIncludeJitMemory)) + FAIL() << error_msg; - Regs* regs = offline_utils_.GetRegs(); - std::shared_ptr<Memory> process_memory = offline_utils_.GetProcessMemory(); - std::unique_ptr<JitDebug> jit_debug = CreateJitDebug(regs->Arch(), process_memory); - Unwinder unwinder(128, offline_utils_.GetMaps(), regs, process_memory); - unwinder.SetJitDebug(jit_debug.get()); + Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), + offline_utils_.GetProcessMemory()); + unwinder.SetJitDebug(offline_utils_.GetJitDebug()); unwinder.Unwind(); std::string frame_info(DumpFrames(unwinder)); @@ -780,9 +776,9 @@ static void OfflineUnwind(void* data) { TEST_F(UnwindOfflineTest, unwind_offline_check_for_leaks) { std::string error_msg; - if (!offline_utils_.Init("jit_debug_arm/", ARCH_ARM, error_msg)) FAIL() << error_msg; - - if (!offline_utils_.SetJitProcessMemory(error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("jit_debug_arm/", ARCH_ARM, &error_msg, + ProcessMemoryFlag::kIncludeJitMemory)) + FAIL() << error_msg; std::shared_ptr<Memory> process_memory = offline_utils_.GetProcessMemory(); LeakType data(offline_utils_.GetMaps(), offline_utils_.GetRegs(), process_memory); @@ -794,7 +790,7 @@ TEST_F(UnwindOfflineTest, unwind_offline_check_for_leaks) { // No .gnu_debugdata section in the elf file, so no symbols. TEST_F(UnwindOfflineTest, bad_eh_frame_hdr_arm64) { std::string error_msg; - if (!offline_utils_.Init("bad_eh_frame_hdr_arm64/", ARCH_ARM64, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("bad_eh_frame_hdr_arm64/", ARCH_ARM64, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -825,7 +821,7 @@ TEST_F(UnwindOfflineTest, bad_eh_frame_hdr_arm64) { // is used first, the unwind will not match the expected output. TEST_F(UnwindOfflineTest, debug_frame_first_x86) { std::string error_msg; - if (!offline_utils_.Init("debug_frame_first_x86/", ARCH_X86, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("debug_frame_first_x86/", ARCH_X86, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -855,7 +851,7 @@ TEST_F(UnwindOfflineTest, debug_frame_first_x86) { // Make sure that a pc that is at the beginning of an fde unwinds correctly. TEST_F(UnwindOfflineTest, eh_frame_hdr_begin_x86_64) { std::string error_msg; - if (!offline_utils_.Init("eh_frame_hdr_begin_x86_64/", ARCH_X86_64, error_msg)) + if (!offline_utils_.Init("eh_frame_hdr_begin_x86_64/", ARCH_X86_64, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), @@ -885,15 +881,13 @@ TEST_F(UnwindOfflineTest, eh_frame_hdr_begin_x86_64) { TEST_F(UnwindOfflineTest, art_quick_osr_stub_arm) { std::string error_msg; - if (!offline_utils_.Init("art_quick_osr_stub_arm/", ARCH_ARM, error_msg)) FAIL() << error_msg; - - if (!offline_utils_.SetJitProcessMemory(error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("art_quick_osr_stub_arm/", ARCH_ARM, &error_msg, + ProcessMemoryFlag::kIncludeJitMemory)) + FAIL() << error_msg; - Regs* regs = offline_utils_.GetRegs(); - std::shared_ptr<Memory> process_memory = offline_utils_.GetProcessMemory(); - std::unique_ptr<JitDebug> jit_debug = CreateJitDebug(regs->Arch(), process_memory); - Unwinder unwinder(128, offline_utils_.GetMaps(), regs, process_memory); - unwinder.SetJitDebug(jit_debug.get()); + Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), + offline_utils_.GetProcessMemory()); + unwinder.SetJitDebug(offline_utils_.GetJitDebug()); unwinder.Unwind(); std::string frame_info(DumpFrames(unwinder)); @@ -999,7 +993,7 @@ TEST_F(UnwindOfflineTest, art_quick_osr_stub_arm) { TEST_F(UnwindOfflineTest, jit_map_arm) { std::string error_msg; - if (!offline_utils_.Init("jit_map_arm/", ARCH_ARM, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("jit_map_arm/", ARCH_ARM, &error_msg)) FAIL() << error_msg; Maps* maps = offline_utils_.GetMaps(); maps->Add(0xd025c788, 0xd025c9f0, 0, PROT_READ | PROT_EXEC | MAPS_FLAGS_JIT_SYMFILE_MAP, @@ -1041,7 +1035,7 @@ TEST_F(UnwindOfflineTest, jit_map_arm) { TEST_F(UnwindOfflineTest, offset_arm) { std::string error_msg; - if (!offline_utils_.Init("offset_arm/", ARCH_ARM, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("offset_arm/", ARCH_ARM, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -1119,7 +1113,7 @@ TEST_F(UnwindOfflineTest, offset_arm) { // encoded as 0xb, which is not set as pc relative. TEST_F(UnwindOfflineTest, debug_frame_load_bias_arm) { std::string error_msg; - if (!offline_utils_.Init("debug_frame_load_bias_arm/", ARCH_ARM, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("debug_frame_load_bias_arm/", ARCH_ARM, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -1158,7 +1152,7 @@ TEST_F(UnwindOfflineTest, debug_frame_load_bias_arm) { TEST_F(UnwindOfflineTest, shared_lib_in_apk_arm64) { std::string error_msg; - if (!offline_utils_.Init("shared_lib_in_apk_arm64/", ARCH_ARM64, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("shared_lib_in_apk_arm64/", ARCH_ARM64, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -1197,14 +1191,16 @@ TEST_F(UnwindOfflineTest, shared_lib_in_apk_arm64) { TEST_F(UnwindOfflineTest, shared_lib_in_apk_memory_only_arm64) { std::string error_msg; - if (!offline_utils_.Init("shared_lib_in_apk_memory_only_arm64/", ARCH_ARM64, error_msg)) + if (!offline_utils_.Init("shared_lib_in_apk_memory_only_arm64/", ARCH_ARM64, &error_msg)) FAIL() << error_msg; // Add the memory that represents the shared library. std::shared_ptr<Memory> process_memory = offline_utils_.GetProcessMemory(); MemoryOfflineParts* memory = reinterpret_cast<MemoryOfflineParts*>(process_memory.get()); - if (!AddMemory(offline_utils_.GetOfflineDirectory() + "lib_mem.data", memory, error_msg)) - FAIL() << error_msg; + const std::string* offline_files_path = offline_utils_.GetOfflineFilesPath(); + if (offline_files_path == nullptr) FAIL() << "GetOfflineFilesPath() failed."; + + if (!AddMemory(*offline_files_path + "lib_mem.data", memory, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), process_memory); unwinder.Unwind(); @@ -1241,7 +1237,7 @@ TEST_F(UnwindOfflineTest, shared_lib_in_apk_memory_only_arm64) { TEST_F(UnwindOfflineTest, shared_lib_in_apk_single_map_arm64) { std::string error_msg; - if (!offline_utils_.Init("shared_lib_in_apk_single_map_arm64/", ARCH_ARM64, error_msg)) + if (!offline_utils_.Init("shared_lib_in_apk_single_map_arm64/", ARCH_ARM64, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), @@ -1296,8 +1292,8 @@ TEST_F(UnwindOfflineTest, shared_lib_in_apk_single_map_arm64) { TEST_F(UnwindOfflineTest, invalid_elf_offset_arm) { std::string error_msg; - if (!offline_utils_.Init("invalid_elf_offset_arm/", ARCH_ARM, error_msg, - /*add_stack=*/false)) + if (!offline_utils_.Init("invalid_elf_offset_arm/", ARCH_ARM, &error_msg, + ProcessMemoryFlag::kNoMemory)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), @@ -1313,7 +1309,7 @@ TEST_F(UnwindOfflineTest, invalid_elf_offset_arm) { TEST_F(UnwindOfflineTest, load_bias_ro_rx_x86_64) { std::string error_msg; - if (!offline_utils_.Init("load_bias_ro_rx_x86_64/", ARCH_X86_64, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("load_bias_ro_rx_x86_64/", ARCH_X86_64, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -1392,7 +1388,7 @@ TEST_F(UnwindOfflineTest, load_bias_ro_rx_x86_64) { TEST_F(UnwindOfflineTest, load_bias_different_section_bias_arm64) { std::string error_msg; - if (!offline_utils_.Init("load_bias_different_section_bias_arm64/", ARCH_ARM64, error_msg)) + if (!offline_utils_.Init("load_bias_different_section_bias_arm64/", ARCH_ARM64, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), @@ -1444,7 +1440,7 @@ TEST_F(UnwindOfflineTest, load_bias_different_section_bias_arm64) { TEST_F(UnwindOfflineTest, eh_frame_bias_x86) { std::string error_msg; - if (!offline_utils_.Init("eh_frame_bias_x86/", ARCH_X86, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("eh_frame_bias_x86/", ARCH_X86, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -1492,7 +1488,7 @@ TEST_F(UnwindOfflineTest, eh_frame_bias_x86) { TEST_F(UnwindOfflineTest, signal_load_bias_arm) { std::string error_msg; - if (!offline_utils_.Init("signal_load_bias_arm/", ARCH_ARM, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("signal_load_bias_arm/", ARCH_ARM, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -1562,7 +1558,7 @@ TEST_F(UnwindOfflineTest, signal_load_bias_arm) { TEST_F(UnwindOfflineTest, empty_arm64) { std::string error_msg; - if (!offline_utils_.Init("empty_arm64/", ARCH_ARM64, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("empty_arm64/", ARCH_ARM64, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -1603,7 +1599,7 @@ TEST_F(UnwindOfflineTest, empty_arm64) { // fde to do the unwind. TEST_F(UnwindOfflineTest, signal_fde_x86) { std::string error_msg; - if (!offline_utils_.Init("signal_fde_x86/", ARCH_X86, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("signal_fde_x86/", ARCH_X86, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -1685,7 +1681,7 @@ TEST_F(UnwindOfflineTest, signal_fde_x86) { // fde to do the unwind. TEST_F(UnwindOfflineTest, signal_fde_x86_64) { std::string error_msg; - if (!offline_utils_.Init("signal_fde_x86_64/", ARCH_X86_64, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("signal_fde_x86_64/", ARCH_X86_64, &error_msg)) FAIL() << error_msg; Unwinder unwinder(128, offline_utils_.GetMaps(), offline_utils_.GetRegs(), offline_utils_.GetProcessMemory()); @@ -1758,7 +1754,7 @@ TEST_F(UnwindOfflineTest, signal_fde_x86_64) { TEST_F(UnwindOfflineTest, pauth_pc_arm64) { std::string error_msg; - if (!offline_utils_.Init("pauth_pc_arm64/", ARCH_ARM64, error_msg)) FAIL() << error_msg; + if (!offline_utils_.Init("pauth_pc_arm64/", ARCH_ARM64, &error_msg)) FAIL() << error_msg; static_cast<RegsArm64*>(offline_utils_.GetRegs())->SetPACMask(0x007fff8000000000ULL); |