Author: labath Date: Mon May 20 01:22:59 2019 New Revision: 361126 URL: http://llvm.org/viewvc/llvm-project?rev=361126&view=rev Log: minidump: Remove checked-in files used for testing MemoryList handling
Now that yaml2obj supports this stream, we can use the yaml form instead. Removed: lldb/trunk/unittests/Process/minidump/Inputs/memory-list-not-padded.dmp lldb/trunk/unittests/Process/minidump/Inputs/memory-list-padded.dmp lldb/trunk/unittests/Process/minidump/Inputs/regions-linux-map.dmp lldb/trunk/unittests/Process/minidump/Inputs/regions-memlist.dmp Modified: lldb/trunk/source/Plugins/Process/minidump/MinidumpParser.h lldb/trunk/unittests/Process/minidump/CMakeLists.txt lldb/trunk/unittests/Process/minidump/MinidumpParserTest.cpp Modified: lldb/trunk/source/Plugins/Process/minidump/MinidumpParser.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/minidump/MinidumpParser.h?rev=361126&r1=361125&r2=361126&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Process/minidump/MinidumpParser.h (original) +++ lldb/trunk/source/Plugins/Process/minidump/MinidumpParser.h Mon May 20 01:22:59 2019 @@ -41,6 +41,10 @@ struct Range { Range(lldb::addr_t start, llvm::ArrayRef<uint8_t> range_ref) : start(start), range_ref(range_ref) {} + + friend bool operator==(const Range &lhs, const Range &rhs) { + return lhs.start == rhs.start && lhs.range_ref == rhs.range_ref; + } }; class MinidumpParser { Modified: lldb/trunk/unittests/Process/minidump/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Process/minidump/CMakeLists.txt?rev=361126&r1=361125&r2=361126&view=diff ============================================================================== --- lldb/trunk/unittests/Process/minidump/CMakeLists.txt (original) +++ lldb/trunk/unittests/Process/minidump/CMakeLists.txt Mon May 20 01:22:59 2019 @@ -20,10 +20,6 @@ set(test_inputs fizzbuzz_wow64.dmp linux-x86_64.dmp linux-x86_64_not_crashed.dmp - memory-list-not-padded.dmp - memory-list-padded.dmp - regions-linux-map.dmp - regions-memlist.dmp regions-memlist64.dmp ) Removed: lldb/trunk/unittests/Process/minidump/Inputs/memory-list-not-padded.dmp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Process/minidump/Inputs/memory-list-not-padded.dmp?rev=361125&view=auto ============================================================================== Binary file - no diff available. Removed: lldb/trunk/unittests/Process/minidump/Inputs/memory-list-padded.dmp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Process/minidump/Inputs/memory-list-padded.dmp?rev=361125&view=auto ============================================================================== Binary file - no diff available. Removed: lldb/trunk/unittests/Process/minidump/Inputs/regions-linux-map.dmp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Process/minidump/Inputs/regions-linux-map.dmp?rev=361125&view=auto ============================================================================== Binary file - no diff available. Removed: lldb/trunk/unittests/Process/minidump/Inputs/regions-memlist.dmp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Process/minidump/Inputs/regions-memlist.dmp?rev=361125&view=auto ============================================================================== Binary file - no diff available. Modified: lldb/trunk/unittests/Process/minidump/MinidumpParserTest.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Process/minidump/MinidumpParserTest.cpp?rev=361126&r1=361125&r2=361126&view=diff ============================================================================== --- lldb/trunk/unittests/Process/minidump/MinidumpParserTest.cpp (original) +++ lldb/trunk/unittests/Process/minidump/MinidumpParserTest.cpp Mon May 20 01:22:59 2019 @@ -75,7 +75,7 @@ TEST_F(MinidumpParserTest, InvalidMinidu llvm::raw_string_ostream os(duplicate_streams); ASSERT_THAT_ERROR(llvm::MinidumpYAML::writeAsBinary(R"( --- !minidump -Streams: +Streams: - Type: LinuxAuxv Content: DEADBEEFBAADF00D - Type: LinuxAuxv @@ -92,11 +92,11 @@ Streams: TEST_F(MinidumpParserTest, GetThreadsAndGetThreadContext) { ASSERT_THAT_ERROR(SetUpFromYaml(R"( --- !minidump -Streams: +Streams: - Type: ThreadList - Threads: + Threads: - Thread Id: 0x00003E81 - Stack: + Stack: Start of Memory Range: 0x00007FFCEB34A000 Content: C84D04BCE97F00 Context: 00000000000000 @@ -116,41 +116,17 @@ Streams: EXPECT_EQ(7u, context.size()); } -TEST_F(MinidumpParserTest, GetMemoryListNotPadded) { - // Verify that we can load a memory list that doesn't have 4 bytes of padding - // after the memory range count. - SetUpData("memory-list-not-padded.dmp"); - auto mem = parser->FindMemoryRange(0x8000); - ASSERT_TRUE(mem.hasValue()); - EXPECT_EQ((lldb::addr_t)0x8000, mem->start); - mem = parser->FindMemoryRange(0x8010); - ASSERT_TRUE(mem.hasValue()); - EXPECT_EQ((lldb::addr_t)0x8010, mem->start); -} - -TEST_F(MinidumpParserTest, GetMemoryListPadded) { - // Verify that we can load a memory list that has 4 bytes of padding - // after the memory range count as found in breakpad minidump files. - SetUpData("memory-list-padded.dmp"); - auto mem = parser->FindMemoryRange(0x8000); - ASSERT_TRUE(mem.hasValue()); - EXPECT_EQ((lldb::addr_t)0x8000, mem->start); - mem = parser->FindMemoryRange(0x8010); - ASSERT_TRUE(mem.hasValue()); - EXPECT_EQ((lldb::addr_t)0x8010, mem->start); -} - TEST_F(MinidumpParserTest, GetArchitecture) { ASSERT_THAT_ERROR(SetUpFromYaml(R"( --- !minidump -Streams: +Streams: - Type: SystemInfo Processor Arch: AMD64 Processor Level: 6 Processor Revision: 16130 Number of Processors: 1 Platform ID: Linux - CPU: + CPU: Vendor ID: GenuineIntel Version Info: 0x00000000 Feature Info: 0x00000000 @@ -163,14 +139,47 @@ Streams: parser->GetArchitecture().GetTriple().getOS()); } -TEST_F(MinidumpParserTest, GetMiscInfo) { - SetUpData("linux-x86_64.dmp"); - const MinidumpMiscInfo *misc_info = parser->GetMiscInfo(); - ASSERT_EQ(nullptr, misc_info); +TEST_F(MinidumpParserTest, GetMiscInfo_no_stream) { + // Test that GetMiscInfo returns nullptr when the minidump does not contain + // this stream. + ASSERT_THAT_ERROR(SetUpFromYaml(R"( +--- !minidump +Streams: +... +)"), + llvm::Succeeded()); + EXPECT_EQ(nullptr, parser->GetMiscInfo()); } TEST_F(MinidumpParserTest, GetLinuxProcStatus) { - SetUpData("linux-x86_64.dmp"); + ASSERT_THAT_ERROR(SetUpFromYaml(R"( +--- !minidump +Streams: + - Type: SystemInfo + Processor Arch: AMD64 + Processor Level: 6 + Processor Revision: 16130 + Number of Processors: 1 + Platform ID: Linux + CSD Version: 'Linux 3.13.0-91-generic' + CPU: + Vendor ID: GenuineIntel + Version Info: 0x00000000 + Feature Info: 0x00000000 + - Type: LinuxProcStatus + Text: | + Name: a.out + State: t (tracing stop) + Tgid: 16001 + Ngid: 0 + Pid: 16001 + PPid: 13243 + TracerPid: 16002 + Uid: 404696 404696 404696 404696 + Gid: 5762 5762 5762 5762 +... +)"), + llvm::Succeeded()); llvm::Optional<LinuxProcStatus> proc_status = parser->GetLinuxProcStatus(); ASSERT_TRUE(proc_status.hasValue()); lldb::pid_t pid = proc_status->GetPid(); @@ -178,7 +187,34 @@ TEST_F(MinidumpParserTest, GetLinuxProcS } TEST_F(MinidumpParserTest, GetPid) { - SetUpData("linux-x86_64.dmp"); + ASSERT_THAT_ERROR(SetUpFromYaml(R"( +--- !minidump +Streams: + - Type: SystemInfo + Processor Arch: AMD64 + Processor Level: 6 + Processor Revision: 16130 + Number of Processors: 1 + Platform ID: Linux + CSD Version: 'Linux 3.13.0-91-generic' + CPU: + Vendor ID: GenuineIntel + Version Info: 0x00000000 + Feature Info: 0x00000000 + - Type: LinuxProcStatus + Text: | + Name: a.out + State: t (tracing stop) + Tgid: 16001 + Ngid: 0 + Pid: 16001 + PPid: 13243 + TracerPid: 16002 + Uid: 404696 404696 404696 404696 + Gid: 5762 5762 5762 5762 +... +)"), + llvm::Succeeded()); llvm::Optional<lldb::pid_t> pid = parser->GetPid(); ASSERT_TRUE(pid.hasValue()); ASSERT_EQ(16001UL, pid.getValue()); @@ -187,9 +223,9 @@ TEST_F(MinidumpParserTest, GetPid) { TEST_F(MinidumpParserTest, GetFilteredModuleList) { ASSERT_THAT_ERROR(SetUpFromYaml(R"( --- !minidump -Streams: +Streams: - Type: ModuleList - Modules: + Modules: - Base of Image: 0x0000000000400000 Size of Image: 0x00001000 Module Name: '/tmp/test/linux-x86_64_not_crashed' @@ -228,30 +264,55 @@ void check_mem_range_exists(MinidumpPars } TEST_F(MinidumpParserTest, FindMemoryRange) { - SetUpData("linux-x86_64.dmp"); - // There are two memory ranges in the file (size is in bytes, decimal): - // 1) 0x401d46 256 - // 2) 0x7ffceb34a000 12288 - EXPECT_FALSE(parser->FindMemoryRange(0x00).hasValue()); - EXPECT_FALSE(parser->FindMemoryRange(0x2a).hasValue()); - - check_mem_range_exists(*parser, 0x401d46, 256); - EXPECT_FALSE(parser->FindMemoryRange(0x401d46 + 256).hasValue()); - - check_mem_range_exists(*parser, 0x7ffceb34a000, 12288); - EXPECT_FALSE(parser->FindMemoryRange(0x7ffceb34a000 + 12288).hasValue()); + ASSERT_THAT_ERROR(SetUpFromYaml(R"( +--- !minidump +Streams: + - Type: MemoryList + Memory Ranges: + - Start of Memory Range: 0x00007FFCEB34A000 + Content: C84D04BCE9 + - Start of Memory Range: 0x0000000000401D46 + Content: 5421 +... +)"), + llvm::Succeeded()); + EXPECT_EQ(llvm::None, parser->FindMemoryRange(0x00)); + EXPECT_EQ(llvm::None, parser->FindMemoryRange(0x2a)); + EXPECT_EQ((minidump::Range{0x401d46, llvm::ArrayRef<uint8_t>{0x54, 0x21}}), + parser->FindMemoryRange(0x401d46)); + EXPECT_EQ(llvm::None, parser->FindMemoryRange(0x401d46 + 2)); + + EXPECT_EQ( + (minidump::Range{0x7ffceb34a000, + llvm::ArrayRef<uint8_t>{0xc8, 0x4d, 0x04, 0xbc, 0xe9}}), + parser->FindMemoryRange(0x7ffceb34a000 + 2)); + EXPECT_EQ(llvm::None, parser->FindMemoryRange(0x7ffceb34a000 + 5)); } TEST_F(MinidumpParserTest, GetMemory) { - SetUpData("linux-x86_64.dmp"); - - EXPECT_EQ(128UL, parser->GetMemory(0x401d46, 128).size()); - EXPECT_EQ(256UL, parser->GetMemory(0x401d46, 512).size()); + ASSERT_THAT_ERROR(SetUpFromYaml(R"( +--- !minidump +Streams: + - Type: MemoryList + Memory Ranges: + - Start of Memory Range: 0x00007FFCEB34A000 + Content: C84D04BCE9 + - Start of Memory Range: 0x0000000000401D46 + Content: 5421 +... +)"), + llvm::Succeeded()); - EXPECT_EQ(12288UL, parser->GetMemory(0x7ffceb34a000, 12288).size()); - EXPECT_EQ(1024UL, parser->GetMemory(0x7ffceb34a000, 1024).size()); + EXPECT_EQ((llvm::ArrayRef<uint8_t>{0x54}), parser->GetMemory(0x401d46, 1)); + EXPECT_EQ((llvm::ArrayRef<uint8_t>{0x54, 0x21}), + parser->GetMemory(0x401d46, 4)); + + EXPECT_EQ((llvm::ArrayRef<uint8_t>{0xc8, 0x4d, 0x04, 0xbc, 0xe9}), + parser->GetMemory(0x7ffceb34a000, 5)); + EXPECT_EQ((llvm::ArrayRef<uint8_t>{0xc8, 0x4d, 0x04}), + parser->GetMemory(0x7ffceb34a000, 3)); - EXPECT_TRUE(parser->GetMemory(0x500000, 512).empty()); + EXPECT_EQ(llvm::ArrayRef<uint8_t>(), parser->GetMemory(0x500000, 512)); } TEST_F(MinidumpParserTest, FindMemoryRangeWithFullMemoryMinidump) { @@ -320,7 +381,18 @@ TEST_F(MinidumpParserTest, GetMemoryRegi } TEST_F(MinidumpParserTest, GetMemoryRegionInfoFromMemoryList) { - SetUpData("regions-memlist.dmp"); + ASSERT_THAT_ERROR(SetUpFromYaml(R"( +--- !minidump +Streams: + - Type: MemoryList + Memory Ranges: + - Start of Memory Range: 0x0000000000001000 + Content: '31313131313131313131313131313131' + - Start of Memory Range: 0x0000000000002000 + Content: '3333333333333333333333333333333333333333333333333333333333333333' +... +)"), + llvm::Succeeded()); // Test we can get memory regions from the MINIDUMP_MEMORY_LIST stream when // we don't have a MemoryInfoListStream. @@ -348,7 +420,34 @@ TEST_F(MinidumpParserTest, GetMemoryRegi } TEST_F(MinidumpParserTest, GetMemoryRegionInfoLinuxMaps) { - SetUpData("regions-linux-map.dmp"); + ASSERT_THAT_ERROR(SetUpFromYaml(R"( +--- !minidump +Streams: + - Type: LinuxMaps + Text: | + 400d9000-400db000 r-xp 00000000 b3:04 227 /system/bin/app_process + 400db000-400dc000 r--p 00001000 b3:04 227 /system/bin/app_process + 400dc000-400dd000 rw-p 00000000 00:00 0 + 400dd000-400ec000 r-xp 00000000 b3:04 300 /system/bin/linker + 400ec000-400ed000 r--p 00000000 00:00 0 + 400ed000-400ee000 r--p 0000f000 b3:04 300 /system/bin/linker + 400ee000-400ef000 rw-p 00010000 b3:04 300 /system/bin/linker + 400ef000-400fb000 rw-p 00000000 00:00 0 + 400fb000-400fc000 r-xp 00000000 b3:04 1096 /system/lib/liblog.so + 400fc000-400fd000 rwxp 00001000 b3:04 1096 /system/lib/liblog.so + 400fd000-400ff000 r-xp 00002000 b3:04 1096 /system/lib/liblog.so + 400ff000-40100000 r--p 00003000 b3:04 1096 /system/lib/liblog.so + 40100000-40101000 rw-p 00004000 b3:04 1096 /system/lib/liblog.so + 40101000-40122000 r-xp 00000000 b3:04 955 /system/lib/libc.so + 40122000-40123000 rwxp 00021000 b3:04 955 /system/lib/libc.so + 40123000-40167000 r-xp 00022000 b3:04 955 /system/lib/libc.so + 40167000-40169000 r--p 00065000 b3:04 955 /system/lib/libc.so + 40169000-4016b000 rw-p 00067000 b3:04 955 /system/lib/libc.so + 4016b000-40176000 rw-p 00000000 00:00 0 + +... +)"), + llvm::Succeeded()); // Test we can get memory regions from the linux /proc/<pid>/maps stream when // we don't have a MemoryInfoListStream. @@ -386,7 +485,7 @@ TEST_F(MinidumpParserTest, GetMemoryRegi TEST_F(MinidumpParserTest, GetArchitectureWindows) { ASSERT_THAT_ERROR(SetUpFromYaml(R"( --- !minidump -Streams: +Streams: - Type: SystemInfo Processor Arch: X86 Processor Level: 6 @@ -399,7 +498,7 @@ Streams: Platform ID: Win32NT CSD Version: Service Pack 1 Suite Mask: 0x0100 - CPU: + CPU: Vendor ID: GenuineIntel Version Info: 0x000306E4 Feature Info: 0xBFEBFBFF @@ -413,11 +512,16 @@ Streams: parser->GetArchitecture().GetTriple().getOS()); } -// fizzbuzz_no_heap.dmp is copied from the WinMiniDump tests -TEST_F(MinidumpParserTest, GetLinuxProcStatusWindows) { - SetUpData("fizzbuzz_no_heap.dmp"); - llvm::Optional<LinuxProcStatus> proc_status = parser->GetLinuxProcStatus(); - ASSERT_FALSE(proc_status.hasValue()); +TEST_F(MinidumpParserTest, GetLinuxProcStatus_no_stream) { + // Test that GetLinuxProcStatus returns nullptr when the minidump does not + // contain this stream. + ASSERT_THAT_ERROR(SetUpFromYaml(R"( +--- !minidump +Streams: +... +)"), + llvm::Succeeded()); + EXPECT_EQ(llvm::None, parser->GetLinuxProcStatus()); } TEST_F(MinidumpParserTest, GetMiscInfoWindows) { @@ -451,11 +555,11 @@ TEST_F(MinidumpParserTest, GetPidWow64) TEST_F(MinidumpParserTest, GetThreadContext_x86_32) { ASSERT_THAT_ERROR(SetUpFromYaml(R"( --- !minidump -Streams: +Streams: - Type: ThreadList - Threads: + Threads: - Thread Id: 0x00026804 - Stack: + Stack: Start of Memory Range: 0x00000000FF9DD000 Content: 68D39DFF Context: 0F0001000000000000000000000000000000000000000000000000007F03FFFF0000FFFFFFFFFFFF09DC62F72300000088E36CF72B00FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063000000000000002B0000002B000000A88204085CD59DFF008077F7A3D49DFF01000000000000003CD59DFFA082040823000000820201002CD59DFF2B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -494,11 +598,11 @@ Streams: TEST_F(MinidumpParserTest, GetThreadContext_x86_64) { ASSERT_THAT_ERROR(SetUpFromYaml(R"( --- !minidump -Streams: +Streams: - Type: ThreadList - Threads: + Threads: - Thread Id: 0x00003E81 - Stack: + Stack: Start of Memory Range: 0x00007FFCEB34A000 Content: C84D04BCE97F00 Context: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0010000000000033000000000000000000000006020100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010A234EBFC7F000010A234EBFC7F00000000000000000000F09C34EBFC7F0000C0A91ABCE97F00000000000000000000A0163FBCE97F00004602000000000000921C40000000000030A434EBFC7F000000000000000000000000000000000000C61D4000000000007F0300000000000000000000000000000000000000000000801F0000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF00FFFFFFFFFFFFFF00FFFFFFFF25252525252525252525252525252525000000000000000000000000000000000000000000000000000000000000000000FFFF00FFFFFFFFFFFFFF00FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -573,9 +677,9 @@ TEST_F(MinidumpParserTest, GetThreadCont TEST_F(MinidumpParserTest, MinidumpDuplicateModuleMinAddress) { ASSERT_THAT_ERROR(SetUpFromYaml(R"( --- !minidump -Streams: +Streams: - Type: ModuleList - Modules: + Modules: - Base of Image: 0x0000000000002000 Size of Image: 0x00001000 Module Name: '/tmp/a' @@ -598,9 +702,9 @@ Streams: TEST_F(MinidumpParserTest, MinidumpModuleOrder) { ASSERT_THAT_ERROR(SetUpFromYaml(R"( --- !minidump -Streams: +Streams: - Type: ModuleList - Modules: + Modules: - Base of Image: 0x0000000000002000 Size of Image: 0x00001000 Module Name: '/tmp/a' _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits