Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Unified Diff: minidump/minidump_extensions.h

Issue 675803002: Add MinidumpCrashpadModule, its list form, their writers, and their tests (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Update for https://codereview.chromium.org/679443002/ Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « minidump/minidump_crashpad_module_writer_test.cc ('k') | minidump/minidump_extensions.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: minidump/minidump_extensions.h
diff --git a/minidump/minidump_extensions.h b/minidump/minidump_extensions.h
index e7618e3e0368c22cae715c013dd0ef0dd051703f..7386a76f4b2dd09300ea065eaa120329b24e6fa7 100644
--- a/minidump/minidump_extensions.h
+++ b/minidump/minidump_extensions.h
@@ -316,29 +316,106 @@ struct __attribute__((packed, aligned(4))) MinidumpSimpleStringDictionary {
MinidumpSimpleStringDictionaryEntry entries[0];
};
+//! \brief Additional Crashpad-specific information about a module carried
+//! within a minidump file.
+//!
+//! This structure augments the information provided by MINIDUMP_MODULE. The
+//! minidump file must contain a module list stream
+//! (::kMinidumpStreamTypeModuleList) in order for this structure to appear.
+//!
+//! This structure is versioned. When changing this structure, leave the
+//! existing structure intact so that earlier parsers will be able to understand
+//! the fields they are aware of, and make additions at the end of the
+//! structure. Revise #kVersion and document each field’s validity based on
+//! #version, so that newer parsers will be able to determine whether the added
+//! fields are valid or not.
+//!
+//! \sa MinidumpModuleCrashpadInfoList
+struct __attribute__((packed, aligned(4))) MinidumpModuleCrashpadInfo {
+ //! \brief The structure’s currently-defined version number.
+ //!
+ //! \sa version
+ static const uint32_t kVersion = 1;
+
+ //! \brief The structure’s version number.
+ //!
+ //! Readers can use this field to determine which other fields in the
+ //! structure are valid. Upon encountering a value greater than #kVersion, a
+ //! reader should assume that the structure’s layout is compatible with the
+ //! structure defined as having value #kVersion.
+ //!
+ //! Writers may produce values less than #kVersion in this field if there is
+ //! no need for any fields present in later versions.
+ uint32_t version;
+
+ //! \brief A link to a MINIDUMP_MODULE structure in the module list stream.
+ //!
+ //! This field is an index into MINIDUMP_MODULE_LIST::Modules. This field’s
+ //! value must be in the range of MINIDUMP_MODULE_LIST::NumberOfEntries.
+ //!
+ //! This field is present when #version is at least `1`.
+ uint32_t minidump_module_list_index;
+
+ //! \brief A MinidumpSimpleStringDictionary pointing to strings interpreted as
+ //! key-value pairs. The module controls the data that appears here.
+ //!
+ //! This field is present when #version is at least `1`.
+ MINIDUMP_LOCATION_DESCRIPTOR simple_annotations;
+};
+
+//! \brief Additional Crashpad-specific information about modules carried within
+//! a minidump file.
+//!
+//! This structure augments the information provided by
+//! MINIDUMP_MODULE_LIST. The minidump file must contain a module list stream
+//! (::kMinidumpStreamTypeModuleList) in order for this structure to appear.
+struct __attribute__((packed, aligned(4))) MinidumpModuleCrashpadInfoList {
+ //! \brief The number of modules present in the #modules array.
+ //!
+ //! This may be less than the value of MINIDUMP_MODULE_LIST::NumberOfModules
+ //! because not every MINIDUMP_MODULE structure carried within the minidump
+ //! file will necessarily have Crashpad-specific information provided by a
+ //! MinidumpModuleCrashpadInfo structure.
+ uint32_t count;
+
+ //! \brief Pointers to MinidumpModuleCrashpadInfo structures.
+ //!
+ //! These are referenced indirectly through MINIDUMP_LOCATION_DESCRIPTOR
+ //! pointers to allow for future growth of the MinidumpModuleCrashpadInfo
+ //! structure.
+ MINIDUMP_LOCATION_DESCRIPTOR modules[0];
+};
+
//! \brief Additional Crashpad-specific information carried within a minidump
//! file.
+//!
+//! This structure is versioned. When changing this structure, leave the
+//! existing structure intact so that earlier parsers will be able to understand
+//! the fields they are aware of, and make additions at the end of the
+//! structure. Revise #kVersion and document each field’s validity based on
+//! #version, so that newer parsers will be able to determine whether the added
+//! fields are valid or not.
struct __attribute__((packed, aligned(4))) MinidumpCrashpadInfo {
- //! \brief The size of the entire structure, in bytes.
+ //! \brief The structure’s currently-defined version number.
//!
//! \sa version
- uint32_t size;
+ static const uint32_t kVersion = 1;
- //! \brief The structure’s version number. This can be used to determine which
- //! other fields in the structure are valid.
+ //! \brief The structure’s version number.
//!
- //! \sa size
+ //! Readers can use this field to determine which other fields in the
+ //! structure are valid. Upon encountering a value greater than #kVersion, a
+ //! reader should assume that the structure’s layout is compatible with the
+ //! structure defined as having value #kVersion.
+ //!
+ //! Writers may produce values less than #kVersion in this field if there is
+ //! no need for any fields present in later versions.
uint32_t version;
- //! \brief A MinidumpSimpleStringDictionary pointing to strings interpreted as
- //! key-value pairs. The process that crashed controlled the data that
- //! appears here.
- //!
- //! If MINIDUMP_LOCATION_DESCRIPTOR::DataSize is `0`, no key-value pairs are
- //! present, and MINIDUMP_LOCATION_DESCRIPTOR::Rva should not be consulted.
+ //! \brief A pointer to a MinidumpModuleCrashpadInfoList structure.
//!
//! This field is present when #version is at least `1`.
- MINIDUMP_LOCATION_DESCRIPTOR simple_annotations;
+ MINIDUMP_LOCATION_DESCRIPTOR module_list;
};
} // namespace crashpad
« no previous file with comments | « minidump/minidump_crashpad_module_writer_test.cc ('k') | minidump/minidump_extensions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698