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

Unified Diff: util/misc/pdb_structures.h

Issue 1311003003: Implement ModuleSnapshotWin::UUID (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: fixes Created 5 years, 4 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 | « snapshot/win/pe_image_reader_test.cc ('k') | util/misc/pdb_structures.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: util/misc/pdb_structures.h
diff --git a/util/misc/pdb_structures.h b/util/misc/pdb_structures.h
new file mode 100644
index 0000000000000000000000000000000000000000..04d76eec5cf4ef2c1c3a18e9acd88f342da777a1
--- /dev/null
+++ b/util/misc/pdb_structures.h
@@ -0,0 +1,131 @@
+// Copyright 2015 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_UTIL_MISC_PDB_STRUCTURES_H_
+#define CRASHPAD_UTIL_MISC_PDB_STRUCTURES_H_
+
+#include "util/misc/uuid.h"
+
+namespace crashpad {
+
+//! \brief A CodeView record linking to a `.pdb` 2.0 file.
+//!
+//! This format provides an indirect link to debugging data by referencing an
+//! external `.pdb` file by its name, timestamp, and age. This structure may be
+//! pointed to by MINIDUMP_MODULE::CvRecord. It has been superseded by
+//! CodeViewRecordPDB70.
+//!
+//! For more information about this structure and format, see <a
+//! href="http://www.debuginfo.com/articles/debuginfomatch.html#pdbfiles">Matching
+//! Debug Information</a>, PDB Files, and <a
+//! href="http://undocumented.rawol.com/sbs-w2k-1-windows-2000-debugging-support.pdf#page=63">Undocumented
+//! Windows 2000 Secrets</a>, Windows 2000 Debugging Support/Microsoft Symbol
+//! File Internals/CodeView Subsections.
+//!
+//! \sa IMAGE_DEBUG_MISC
+struct CodeViewRecordPDB20 {
+ //! \brief The magic number identifying this structure version, stored in
+ //! #signature.
+ //!
+ //! In a hex dump, this will appear as “NB10” when produced by a little-endian
+ //! machine.
+ static const uint32_t kSignature = '01BN';
+
+ //! \brief The magic number identifying this structure version, the value of
+ //! #kSignature.
+ uint32_t signature;
+
+ //! \brief The offset to CodeView data.
+ //!
+ //! In this structure, this field always has the value `0` because no CodeView
+ //! data is present, there is only a link to CodeView data stored in an
+ //! external file.
+ uint32_t offset;
+
+ //! \brief The time that the `.pdb` file was created, in `time_t` format, the
+ //! number of seconds since the POSIX epoch.
+ uint32_t timestamp;
+
+ //! \brief The revision of the `.pdb` file.
+ //!
+ //! A `.pdb` file’s age indicates incremental changes to it. When a `.pdb`
+ //! file is created, it has age `1`, and subsequent updates increase this
+ //! value.
+ uint32_t age;
+
+ //! \brief The path or file name of the `.pdb` file associated with the
+ //! module.
+ //!
+ //! This is a NUL-terminated string. On Windows, it will be encoded in the
+ //! code page of the system that linked the module. On other operating
+ //! systems, UTF-8 may be used.
+ uint8_t pdb_name[1];
+};
+
+//! \brief A CodeView record linking to a `.pdb` 7.0 file.
+//!
+//! This format provides an indirect link to debugging data by referencing an
+//! external `.pdb` file by its name, %UUID, and age. This structure may be
+//! pointed to by MINIDUMP_MODULE::CvRecord.
+//!
+//! For more information about this structure and format, see <a
+//! href="http://www.debuginfo.com/articles/debuginfomatch.html#pdbfiles">Matching
+//! Debug Information</a>, PDB Files.
+//!
+//! \sa CodeViewRecordPDB20
+//! \sa IMAGE_DEBUG_MISC
+struct CodeViewRecordPDB70 {
+ // UUID has a constructor, which makes it non-POD, which makes this structure
+ // non-POD. In order for the default constructor to zero-initialize other
+ // members, an explicit constructor must be provided.
+ CodeViewRecordPDB70()
+ : signature(),
+ uuid(),
+ age(),
+ pdb_name() {
+ }
+
+ //! \brief The magic number identifying this structure version, stored in
+ //! #signature.
+ //!
+ //! In a hex dump, this will appear as “RSDS” when produced by a little-endian
+ //! machine.
+ static const uint32_t kSignature = 'SDSR';
+
+ //! \brief The magic number identifying this structure version, the value of
+ //! #kSignature.
+ uint32_t signature;
+
+ //! \brief The `.pdb` file’s unique identifier.
+ UUID uuid;
+
+ //! \brief The revision of the `.pdb` file.
+ //!
+ //! A `.pdb` file’s age indicates incremental changes to it. When a `.pdb`
+ //! file is created, it has age `1`, and subsequent updates increase this
+ //! value.
+ uint32_t age;
+
+ //! \brief The path or file name of the `.pdb` file associated with the
+ //! module.
+ //!
+ //! This is a NUL-terminated string. On Windows, it will be encoded in the
+ //! code page of the system that linked the module. On other operating
+ //! systems, UTF-8 may be used.
+ uint8_t pdb_name[1];
+};
+
+} // namespace crashpad
+
+#endif // CRASHPAD_UTIL_MISC_PDB_STRUCTURES_H_
« no previous file with comments | « snapshot/win/pe_image_reader_test.cc ('k') | util/misc/pdb_structures.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698