summaryrefslogtreecommitdiffstats
path: root/lldb/unittests/Process
diff options
context:
space:
mode:
authorPavel Labath <pavel@labath.sk>2019-04-05 07:56:39 +0000
committerPavel Labath <pavel@labath.sk>2019-04-05 07:56:39 +0000
commit98edcd9b9c28adf36b085c1a33e10328552ae1d4 (patch)
tree58a8c07841d07fd033dab15f12451af0cd3abb0a /lldb/unittests/Process
parent546bccf61c620893c0f94c84adf542b0bbad24bb (diff)
downloadbcm5719-llvm-98edcd9b9c28adf36b085c1a33e10328552ae1d4.tar.gz
bcm5719-llvm-98edcd9b9c28adf36b085c1a33e10328552ae1d4.zip
MinidumpParser: use minidump parser in llvm/Object
This patch removes the lower layers of the minidump parsing code from the MinidumpParser class, and replaces it with the minidump parser in llvm. Not all functionality is already avaiable in the llvm class, but it is enough for us to be able to stop enumerating streams manually, and rely on the minidump directory parsing code from the llvm class. This also removes some checked-in binaries which were used to test error handling in the parser, as the error handling is now done (and tested) in llvm. Instead I just add one test that ensures we correctly propagate the errors reported by the llvm parser. The input for this test can be written in yaml instead of a checked-in binary. llvm-svn: 357748
Diffstat (limited to 'lldb/unittests/Process')
-rw-r--r--lldb/unittests/Process/minidump/CMakeLists.txt3
-rw-r--r--lldb/unittests/Process/minidump/Inputs/bad_duplicate_streams.dmpbin32976 -> 0 bytes
-rw-r--r--lldb/unittests/Process/minidump/Inputs/bad_overlapping_streams.dmpbin32976 -> 0 bytes
-rw-r--r--lldb/unittests/Process/minidump/MinidumpParserTest.cpp41
4 files changed, 22 insertions, 22 deletions
diff --git a/lldb/unittests/Process/minidump/CMakeLists.txt b/lldb/unittests/Process/minidump/CMakeLists.txt
index 9e3a18e740b..9cbd7a9d9f3 100644
--- a/lldb/unittests/Process/minidump/CMakeLists.txt
+++ b/lldb/unittests/Process/minidump/CMakeLists.txt
@@ -11,12 +11,11 @@ add_lldb_unittest(LLDBMinidumpTests
lldbUtilityHelpers
LLVMTestingSupport
LINK_COMPONENTS
+ ObjectYAML
Support
)
set(test_inputs
- bad_duplicate_streams.dmp
- bad_overlapping_streams.dmp
fizzbuzz_no_heap.dmp
fizzbuzz_wow64.dmp
linux-i386.dmp
diff --git a/lldb/unittests/Process/minidump/Inputs/bad_duplicate_streams.dmp b/lldb/unittests/Process/minidump/Inputs/bad_duplicate_streams.dmp
deleted file mode 100644
index d9be8e28571..00000000000
--- a/lldb/unittests/Process/minidump/Inputs/bad_duplicate_streams.dmp
+++ /dev/null
Binary files differ
diff --git a/lldb/unittests/Process/minidump/Inputs/bad_overlapping_streams.dmp b/lldb/unittests/Process/minidump/Inputs/bad_overlapping_streams.dmp
deleted file mode 100644
index f131ae7d105..00000000000
--- a/lldb/unittests/Process/minidump/Inputs/bad_overlapping_streams.dmp
+++ /dev/null
Binary files differ
diff --git a/lldb/unittests/Process/minidump/MinidumpParserTest.cpp b/lldb/unittests/Process/minidump/MinidumpParserTest.cpp
index ba727e0fac2..a49d0c28452 100644
--- a/lldb/unittests/Process/minidump/MinidumpParserTest.cpp
+++ b/lldb/unittests/Process/minidump/MinidumpParserTest.cpp
@@ -14,10 +14,12 @@
#include "lldb/Host/FileSystem.h"
#include "lldb/Target/MemoryRegionInfo.h"
#include "lldb/Utility/ArchSpec.h"
+#include "lldb/Utility/DataBufferHeap.h"
#include "lldb/Utility/DataExtractor.h"
#include "lldb/Utility/FileSpec.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/Optional.h"
+#include "llvm/ObjectYAML/MinidumpYAML.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
@@ -49,18 +51,28 @@ public:
ASSERT_GT(parser->GetData().size(), 0UL);
}
- void InvalidMinidump(const char *minidump_filename, uint64_t load_size) {
- std::string filename = GetInputFilePath(minidump_filename);
- auto BufferPtr =
- FileSystem::Instance().CreateDataBuffer(filename, load_size, 0);
- ASSERT_NE(BufferPtr, nullptr);
-
- EXPECT_THAT_EXPECTED(MinidumpParser::Create(BufferPtr), llvm::Failed());
- }
-
llvm::Optional<MinidumpParser> parser;
};
+TEST_F(MinidumpParserTest, InvalidMinidump) {
+ std::string duplicate_streams;
+ llvm::raw_string_ostream os(duplicate_streams);
+ ASSERT_THAT_ERROR(llvm::MinidumpYAML::writeAsBinary(R"(
+--- !minidump
+Streams:
+ - Type: LinuxAuxv
+ Content: DEADBEEFBAADF00D
+ - Type: LinuxAuxv
+ Content: DEADBEEFBAADF00D
+ )",
+ os),
+ llvm::Succeeded());
+ os.flush();
+ auto data_buffer_sp = std::make_shared<DataBufferHeap>(
+ duplicate_streams.data(), duplicate_streams.size());
+ ASSERT_THAT_EXPECTED(MinidumpParser::Create(data_buffer_sp), llvm::Failed());
+}
+
TEST_F(MinidumpParserTest, GetThreadsAndGetThreadContext) {
SetUpData("linux-x86_64.dmp");
llvm::ArrayRef<MinidumpThread> thread_list;
@@ -146,17 +158,6 @@ TEST_F(MinidumpParserTest, GetMemoryListPadded) {
EXPECT_EQ((lldb::addr_t)0x8010, mem->start);
}
-TEST_F(MinidumpParserTest, TruncatedMinidumps) {
- InvalidMinidump("linux-x86_64.dmp", 32);
- InvalidMinidump("linux-x86_64.dmp", 100);
- InvalidMinidump("linux-x86_64.dmp", 20 * 1024);
-}
-
-TEST_F(MinidumpParserTest, IllFormedMinidumps) {
- InvalidMinidump("bad_duplicate_streams.dmp", -1);
- InvalidMinidump("bad_overlapping_streams.dmp", -1);
-}
-
TEST_F(MinidumpParserTest, GetArchitecture) {
SetUpData("linux-x86_64.dmp");
ASSERT_EQ(llvm::Triple::ArchType::x86_64,
OpenPOWER on IntegriCloud