mirror of
https://github.com/chromium/crashpad.git
synced 2025-01-01 19:05:20 +08:00
07fcf63c21
Mostly size_t <-> unsigned int warnings, but I also had a mistake in PROCESS_BASIC_INFORMATION, the pids are 32-on-32 and 64-on-64. The Windows build is still x86 until https://codereview.chromium.org/981333002/. I don't think I'll bother maintaining the x86 build for now, though we will probably need it for x86 OSs in the future. It should be straightforward to revive it once we need it, and have bots to support it. R=mark@chromium.org BUG=crashpad:1 Review URL: https://codereview.chromium.org/983103004
106 lines
4.0 KiB
C++
106 lines
4.0 KiB
C++
// Copyright 2014 The Crashpad Authors. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#ifndef CRASHPAD_MINIDUMP_TEST_MINIDUMP_MEMORY_WRITER_TEST_UTIL_H_
|
|
#define CRASHPAD_MINIDUMP_TEST_MINIDUMP_MEMORY_WRITER_TEST_UTIL_H_
|
|
|
|
#include "minidump/minidump_memory_writer.h"
|
|
|
|
#include <windows.h>
|
|
#include <dbghelp.h>
|
|
#include <stdint.h>
|
|
|
|
#include <string>
|
|
|
|
#include "base/basictypes.h"
|
|
#include "util/file/file_writer.h"
|
|
|
|
namespace crashpad {
|
|
namespace test {
|
|
|
|
//! \brief A MinidumpMemoryWriter implementation used for testing.
|
|
//!
|
|
//! TestMinidumpMemoryWriter objects are created with a fixed base address and
|
|
//! size, and will write the same byte (\a value) repeatedly, \a size times.
|
|
class TestMinidumpMemoryWriter final : public MinidumpMemoryWriter {
|
|
public:
|
|
TestMinidumpMemoryWriter(uint64_t base_address, size_t size, uint8_t value);
|
|
~TestMinidumpMemoryWriter();
|
|
|
|
protected:
|
|
// MinidumpMemoryWriter:
|
|
uint64_t MemoryRangeBaseAddress() const override;
|
|
size_t MemoryRangeSize() const override;
|
|
|
|
// MinidumpWritable:
|
|
bool WillWriteAtOffsetImpl(FileOffset offset) override;
|
|
bool WriteObject(FileWriterInterface* file_writer) override;
|
|
|
|
private:
|
|
uint64_t base_address_;
|
|
FileOffset expected_offset_;
|
|
size_t size_;
|
|
uint8_t value_;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(TestMinidumpMemoryWriter);
|
|
};
|
|
|
|
//! \brief Verifies, via gtest assertions, that a MINIDUMP_MEMORY_DESCRIPTOR
|
|
//! structure contains expected values.
|
|
//!
|
|
//! In \a expected and \a observed,
|
|
//! MINIDUMP_MEMORY_DESCRIPTOR::StartOfMemoryRange and
|
|
//! MINIDUMP_LOCATION_DESCRIPTOR::DataSize are compared and must match. If
|
|
//! MINIDUMP_LOCATION_DESCRIPTOR::Rva is nonzero in \a expected, the same field
|
|
//! in \a observed must match it, subject to a 16-byte alignment augmentation.
|
|
//!
|
|
//! \param[in] expected A MINIDUMP_MEMORY_DESCRIPTOR structure containing
|
|
//! expected values.
|
|
//! \param[in] observed A MINIDUMP_MEMORY_DESCRIPTOR structure containing
|
|
//! observed values.
|
|
void ExpectMinidumpMemoryDescriptor(const MINIDUMP_MEMORY_DESCRIPTOR* expected,
|
|
const MINIDUMP_MEMORY_DESCRIPTOR* observed);
|
|
|
|
//! \brief Verifies, via gtest assertions, that a MINIDUMP_MEMORY_DESCRIPTOR
|
|
//! structure contains expected values, and that the memory region it points
|
|
//! to contains expected values assuming it was written by a
|
|
//! TestMinidumpMemoryWriter object.
|
|
//!
|
|
//! \a expected and \a observed are compared by
|
|
//! ExpectMinidumpMemoryDescriptor().
|
|
//!
|
|
//! \param[in] expected A MINIDUMP_MEMORY_DESCRIPTOR structure containing
|
|
//! expected values.
|
|
//! \param[in] observed A MINIDUMP_MEMORY_DESCRIPTOR structure containing
|
|
//! observed values.
|
|
//! \param[in] file_contents The contents of the minidump file in which \a
|
|
//! observed was found. The memory region referenced by \a observed will be
|
|
//! read from this string.
|
|
//! \param[in] value The \a value used to create a TestMinidumpMemoryWriter.
|
|
//! Each byte of memory in the region referenced by \a observed must be this
|
|
//! value.
|
|
//! \param[in] at_eof If `true`, the region referenced by \a observed must
|
|
//! appear at the end of \a file_contents, without any data following it.
|
|
void ExpectMinidumpMemoryDescriptorAndContents(
|
|
const MINIDUMP_MEMORY_DESCRIPTOR* expected,
|
|
const MINIDUMP_MEMORY_DESCRIPTOR* observed,
|
|
const std::string& file_contents,
|
|
uint8_t value,
|
|
bool at_eof);
|
|
|
|
} // namespace test
|
|
} // namespace crashpad
|
|
|
|
#endif // CRASHPAD_MINIDUMP_TEST_MINIDUMP_MEMORY_WRITER_TEST_UTIL_H_
|