Lines Matching +full:r +full:- +full:xp

1 //===-- MinidumpTypesTest.cpp ---------------------------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
45 auto BufferPtr = FileSystem::Instance().CreateDataBuffer(filename, -1, 0);
51 ASSERT_GT(parser->GetData().size(), 0UL);
77 llvm::yaml::Input YIn(R"(
78 --- !minidump
80 - Type: LinuxAuxv
82 - Type: LinuxAuxv
93 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
94 --- !minidump
96 - Type: ThreadList
98 - Thread Id: 0x00003E81
108 thread_list = parser->GetThreads();
115 llvm::ArrayRef<uint8_t> context = parser->GetThreadContext(thread);
120 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
121 --- !minidump
123 - Type: SystemInfo
137 parser->GetArchitecture().GetMachine());
139 parser->GetArchitecture().GetTriple().getOS());
145 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
146 --- !minidump
151 EXPECT_EQ(nullptr, parser->GetMiscInfo());
155 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
156 --- !minidump
158 - Type: SystemInfo
164 CSD Version: 'Linux 3.13.0-91-generic'
169 - Type: LinuxProcStatus
183 std::optional<LinuxProcStatus> proc_status = parser->GetLinuxProcStatus();
185 lldb::pid_t pid = proc_status->GetPid();
190 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
191 --- !minidump
193 - Type: SystemInfo
199 CSD Version: 'Linux 3.13.0-91-generic'
204 - Type: LinuxProcStatus
218 std::optional<lldb::pid_t> pid = parser->GetPid();
224 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
225 --- !minidump
227 - Type: ModuleList
229 - Base of Image: 0x0000000000400000
231 Module Name: '/tmp/test/linux-x86_64_not_crashed'
233 - Base of Image: 0x0000000000600000
235 Module Name: '/tmp/test/linux-x86_64_not_crashed'
240 llvm::ArrayRef<minidump::Module> modules = parser->GetModuleList();
242 parser->GetFilteredModuleList();
246 EXPECT_THAT_EXPECTED(parser->GetMinidumpFile().getString(M.ModuleNameRVA),
247 llvm::HasValue("/tmp/test/linux-x86_64_not_crashed"));
251 SetUpData("linux-x86_64.dmp");
252 auto exception_streams = parser->GetExceptionStreams();
256 ASSERT_EQ(16001UL, exception_stream->ThreadId);
267 EXPECT_EQ(range_start, range->start);
268 EXPECT_EQ(range_start + range_size, range->start + range->range_ref.size());
272 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
273 --- !minidump
275 - Type: MemoryList
277 - Start of Memory Range: 0x00007FFCEB34A000
279 - Start of Memory Range: 0x0000000000401D46
284 EXPECT_EQ(std::nullopt, parser->FindMemoryRange(0x00));
285 EXPECT_EQ(std::nullopt, parser->FindMemoryRange(0x2a));
287 parser->FindMemoryRange(0x401d46));
288 EXPECT_EQ(std::nullopt, parser->FindMemoryRange(0x401d46 + 2));
293 parser->FindMemoryRange(0x7ffceb34a000 + 2));
294 EXPECT_EQ(std::nullopt, parser->FindMemoryRange(0x7ffceb34a000 + 5));
298 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
299 --- !minidump
301 - Type: MemoryList
303 - Start of Memory Range: 0x00007FFCEB34A000
305 - Start of Memory Range: 0x0000000000401D46
311 EXPECT_EQ((llvm::ArrayRef<uint8_t>{0x54}), parser->GetMemory(0x401d46, 1));
313 parser->GetMemory(0x401d46, 4));
316 parser->GetMemory(0x7ffceb34a000, 5));
318 parser->GetMemory(0x7ffceb34a000, 3));
320 EXPECT_EQ(llvm::ArrayRef<uint8_t>(), parser->GetMemory(0x500000, 512));
327 EXPECT_FALSE(parser->FindMemoryRange(0x00).has_value());
328 EXPECT_FALSE(parser->FindMemoryRange(0x2a).has_value());
331 EXPECT_FALSE(parser->FindMemoryRange(0x40000 + 4096).has_value());
334 EXPECT_FALSE(parser->FindMemoryRange(0x7ffe0000 + 4096).has_value());
342 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
343 --- !minidump
345 - Type: MemoryInfoList
347 - Base Address: 0x0000000000000000
353 - Base Address: 0x0000000000010000
358 - Base Address: 0x0000000000040000
364 - Base Address: 0x000000007FFE0000
369 - Base Address: 0x000000007FFE1000
381 parser->BuildMemoryRegions(),
402 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
403 --- !minidump
405 - Type: MemoryList
407 - Start of Memory Range: 0x0000000000001000
409 - Start of Memory Range: 0x0000000000002000
419 parser->BuildMemoryRegions(),
431 SetUpData("regions-memlist64.dmp");
436 parser->BuildMemoryRegions(),
448 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
449 --- !minidump
451 - Type: LinuxMaps
453 400d9000-400db000 r-xp 00000000 b3:04 227 /system/bin/app_process
454 400db000-400dc000 r--p 00001000 b3:04 227 /system/bin/app_process
455 400dc000-400dd000 rw-p 00000000 00:00 0
456 400ec000-400ed000 r--p 00000000 00:00 0
457 400ee000-400ef000 rw-p 00010000 b3:04 300 /system/bin/linker
458 400fc000-400fd000 rwxp 00001000 b3:04 1096 /system/lib/liblog.so
469 parser->BuildMemoryRegions(),
492 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
493 --- !minidump
495 - Type: LinuxMaps
497 400d9000-400db000 r?xp 00000000 b3:04 227
498 400fc000-400fd000 rwxp 00001000 b3:04 1096
504 EXPECT_THAT(parser->BuildMemoryRegions(),
514 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
515 --- !minidump
517 - Type: SystemInfo
538 parser->GetArchitecture().GetMachine());
540 parser->GetArchitecture().GetTriple().getOS());
546 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
547 --- !minidump
552 EXPECT_EQ(std::nullopt, parser->GetLinuxProcStatus());
557 const MinidumpMiscInfo *misc_info = parser->GetMiscInfo();
559 std::optional<lldb::pid_t> pid = misc_info->GetPid();
566 std::optional<lldb::pid_t> pid = parser->GetPid();
574 std::optional<lldb::pid_t> pid = parser->GetPid();
584 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
585 --- !minidump
587 - Type: ThreadList
589 - Thread Id: 0x00026804
597 llvm::ArrayRef<minidump::Thread> thread_list = parser->GetThreads();
599 llvm::ArrayRef<uint8_t> registers(parser->GetThreadContext(thread));
603 EXPECT_EQ(MinidumpContext_x86_32_Flags(uint32_t(context->context_flags)),
608 EXPECT_EQ(0x00000000u, context->eax);
609 EXPECT_EQ(0xf7778000u, context->ebx);
610 EXPECT_EQ(0x00000001u, context->ecx);
611 EXPECT_EQ(0xff9dd4a3u, context->edx);
612 EXPECT_EQ(0x080482a8u, context->edi);
613 EXPECT_EQ(0xff9dd55cu, context->esi);
614 EXPECT_EQ(0xff9dd53cu, context->ebp);
615 EXPECT_EQ(0xff9dd52cu, context->esp);
616 EXPECT_EQ(0x080482a0u, context->eip);
617 EXPECT_EQ(0x00010282u, context->eflags);
618 EXPECT_EQ(0x0023u, context->cs);
619 EXPECT_EQ(0x0000u, context->fs);
620 EXPECT_EQ(0x0063u, context->gs);
621 EXPECT_EQ(0x002bu, context->ss);
622 EXPECT_EQ(0x002bu, context->ds);
623 EXPECT_EQ(0x002bu, context->es);
627 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
628 --- !minidump
630 - Type: ThreadList
632 - Thread Id: 0x00003E81
640 llvm::ArrayRef<minidump::Thread> thread_list = parser->GetThreads();
642 llvm::ArrayRef<uint8_t> registers(parser->GetThreadContext(thread));
646 EXPECT_EQ(MinidumpContext_x86_64_Flags(uint32_t(context->context_flags)),
651 EXPECT_EQ(0x0000000000000000u, context->rax);
652 EXPECT_EQ(0x0000000000000000u, context->rbx);
653 EXPECT_EQ(0x0000000000000010u, context->rcx);
654 EXPECT_EQ(0x0000000000000000u, context->rdx);
655 EXPECT_EQ(0x00007ffceb349cf0u, context->rdi);
656 EXPECT_EQ(0x0000000000000000u, context->rsi);
657 EXPECT_EQ(0x00007ffceb34a210u, context->rbp);
658 EXPECT_EQ(0x00007ffceb34a210u, context->rsp);
659 EXPECT_EQ(0x00007fe9bc1aa9c0u, context->r8);
660 EXPECT_EQ(0x0000000000000000u, context->r9);
661 EXPECT_EQ(0x00007fe9bc3f16a0u, context->r10);
662 EXPECT_EQ(0x0000000000000246u, context->r11);
663 EXPECT_EQ(0x0000000000401c92u, context->r12);
664 EXPECT_EQ(0x00007ffceb34a430u, context->r13);
665 EXPECT_EQ(0x0000000000000000u, context->r14);
666 EXPECT_EQ(0x0000000000000000u, context->r15);
667 EXPECT_EQ(0x0000000000401dc6u, context->rip);
668 EXPECT_EQ(0x00010206u, context->eflags);
669 EXPECT_EQ(0x0033u, context->cs);
670 EXPECT_EQ(0x0000u, context->ss);
675 llvm::ArrayRef<minidump::Thread> thread_list = parser->GetThreads();
677 llvm::ArrayRef<uint8_t> registers(parser->GetThreadContextWow64(thread));
681 EXPECT_EQ(MinidumpContext_x86_32_Flags(uint32_t(context->context_flags)),
687 EXPECT_EQ(0x00000000u, context->eax);
688 EXPECT_EQ(0x0037f608u, context->ebx);
689 EXPECT_EQ(0x00e61578u, context->ecx);
690 EXPECT_EQ(0x00000008u, context->edx);
691 EXPECT_EQ(0x00000000u, context->edi);
692 EXPECT_EQ(0x00000002u, context->esi);
693 EXPECT_EQ(0x0037f654u, context->ebp);
694 EXPECT_EQ(0x0037f5b8u, context->esp);
695 EXPECT_EQ(0x77ce01fdu, context->eip);
696 EXPECT_EQ(0x00000246u, context->eflags);
697 EXPECT_EQ(0x0023u, context->cs);
698 EXPECT_EQ(0x0053u, context->fs);
699 EXPECT_EQ(0x002bu, context->gs);
700 EXPECT_EQ(0x002bu, context->ss);
701 EXPECT_EQ(0x002bu, context->ds);
702 EXPECT_EQ(0x002bu, context->es);
706 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
707 --- !minidump
709 - Type: ModuleList
711 - Base of Image: 0x0000000000002000
715 - Base of Image: 0x0000000000001000
725 parser->GetFilteredModuleList();
727 EXPECT_EQ(0x0000000000001000u, filtered_modules[0]->BaseOfImage);
731 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
732 --- !minidump
734 - Type: ModuleList
736 - Base of Image: 0x400d0000
740 - Base of Image: 0x400d3000
744 - Type: LinuxMaps
746 400d0000-400d2000 r--p 00000000 b3:04 227 /usr/lib/libc.so
747 400d2000-400d3000 rw-p 00000000 00:00 0
748 400d3000-400d4000 r-xp 00010000 b3:04 227 /usr/lib/libc.so
749 400d4000-400d5000 rwxp 00001000 b3:04 227 /usr/lib/libc.so
765 parser->GetFilteredModuleList();
767 EXPECT_EQ(0x400d3000u, filtered_modules[0]->BaseOfImage);
771 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
772 --- !minidump
774 - Type: ModuleList
776 - Base of Image: 0x400d0000
780 - Base of Image: 0x400d3000
784 - Type: LinuxMaps
786 400d0000-400d1000 r-xp 00010000 b3:04 227 /usr/lib/libc.so
787 400d1000-400d2000 rwxp 00001000 b3:04 227 /usr/lib/libc.so
788 400d2000-400d3000 rw-p 00000000 00:00 0
789 400d3000-400d5000 r--p 00000000 b3:04 227 /usr/lib/libc.so
806 parser->GetFilteredModuleList();
808 EXPECT_EQ(0x400d0000u, filtered_modules[0]->BaseOfImage);
812 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
813 --- !minidump
815 - Type: ModuleList
817 - Base of Image: 0x400d3000
821 - Base of Image: 0x400d0000
825 - Type: LinuxMaps
827 400d0000-400d2000 r--p 00000000 b3:04 227 /usr/lib/libc.so
828 400d2000-400d3000 rw-p 00000000 00:00 0
829 400d3000-400d4000 r-xp 00010000 b3:04 227 /usr/lib/libc.so
830 400d4000-400d5000 rwxp 00001000 b3:04 227 /usr/lib/libc.so
845 // list, even if the non-executable module was loaded at a lower base address.
847 parser->GetFilteredModuleList();
849 EXPECT_EQ(0x400d3000u, filtered_modules[0]->BaseOfImage);
853 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
854 --- !minidump
856 - Type: ModuleList
858 - Base of Image: 0x400d0000
862 - Base of Image: 0x400d5000
866 - Type: LinuxMaps
868 400d0000-400d3000 r--p 00000000 b3:04 227 /usr/lib/libc.so
869 400d3000-400d5000 rw-p 00000000 00:00 0
870 400d5000-400d6000 r--p 00000000 b3:04 227 /usr/lib/libc.so
871 400d6000-400d7000 r-xp 00010000 b3:04 227 /usr/lib/libc.so
872 400d7000-400d8000 rwxp 00001000 b3:04 227 /usr/lib/libc.so
885 // This test will make sure if binaries are compiled with "-z separate-code",
890 parser->GetFilteredModuleList();
892 EXPECT_EQ(0x400d5000u, filtered_modules[0]->BaseOfImage);
896 ASSERT_THAT_ERROR(SetUpFromYaml(R"(
897 --- !minidump
899 - Type: ModuleList
901 - Base of Image: 0x0000000000002000
905 - Base of Image: 0x0000000000001000
916 parser->GetFilteredModuleList();
918 EXPECT_EQ(0x0000000000002000u, filtered_modules[0]->BaseOfImage);
920 parser->GetMinidumpFile().getString(filtered_modules[0]->ModuleNameRVA),
922 EXPECT_EQ(0x0000000000001000u, filtered_modules[1]->BaseOfImage);
924 parser->GetMinidumpFile().getString(filtered_modules[1]->ModuleNameRVA),