aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/google_breakpad/common/minidump_format.h75
1 files changed, 73 insertions, 2 deletions
diff --git a/src/google_breakpad/common/minidump_format.h b/src/google_breakpad/common/minidump_format.h
index f3b4a46b..77f28ca7 100644
--- a/src/google_breakpad/common/minidump_format.h
+++ b/src/google_breakpad/common/minidump_format.h
@@ -291,7 +291,12 @@ typedef enum {
MD_WITHOUT_OPTIONAL_DATA = 0x00000400,
MD_WITH_FULL_MEMORY_INFO = 0x00000800,
MD_WITH_THREAD_INFO = 0x00001000,
- MD_WITH_CODE_SEGS = 0x00002000
+ MD_WITH_CODE_SEGS = 0x00002000,
+ MD_WITHOUT_AUXILLIARY_SEGS = 0x00004000,
+ MD_WITH_FULL_AUXILLIARY_STATE = 0x00008000,
+ MD_WITH_PRIVATE_WRITE_COPY_MEMORY = 0x00010000,
+ MD_IGNORE_INACCESSIBLE_MEMORY = 0x00020000,
+ MD_WITH_TOKEN_INFORMATION = 0x00040000
} MDType; /* MINIDUMP_TYPE */
@@ -318,10 +323,13 @@ typedef enum {
MD_FUNCTION_TABLE_STREAM = 13,
MD_UNLOADED_MODULE_LIST_STREAM = 14,
MD_MISC_INFO_STREAM = 15, /* MDRawMiscInfo */
+ MD_MEMORY_INFO_LIST_STREAM = 16, /* MDRawMemoryInfoList */
+ MD_THREAD_INFO_LIST_STREAM = 17,
+ MD_HANDLE_OPERATION_LIST_STREAM = 18,
MD_LAST_RESERVED_STREAM = 0x0000ffff,
/* Breakpad extension types. 0x4767 = "Gg" */
- MD_BREAKPAD_INFO_STREAM = 0x47670001, /* MDRawBreakpadInfo */
+ MD_BREAKPAD_INFO_STREAM = 0x47670001, /* MDRawBreakpadInfo */
MD_ASSERTION_INFO_STREAM = 0x47670002 /* MDRawAssertionInfo */
} MDStreamType; /* MINIDUMP_STREAM_TYPE */
@@ -645,6 +653,69 @@ typedef enum {
/* MINIDUMP_MISC1_PROCESSOR_POWER_INFO */
} MDMiscInfoFlags1;
+/*
+ * Around DbgHelp version 6.0, the style of new LIST structures changed
+ * from including an array of length 1 at the end of the struct to
+ * represent the variable-length data to including explicit
+ * "size of header", "size of entry" and "number of entries" fields
+ * in the header, presumably to allow backwards-compatibly-extending
+ * the structures in the future. The actual list entries follow the
+ * header data directly in this case.
+ */
+
+typedef struct {
+ u_int32_t size_of_header; /* sizeof(MDRawMemoryInfoList) */
+ u_int32_t size_of_entry; /* sizeof(MDRawMemoryInfo) */
+ u_int64_t number_of_entries;
+} MDRawMemoryInfoList; /* MINIDUMP_MEMORY_INFO_LIST */
+
+typedef struct {
+ u_int64_t base_address; /* Base address of a region of pages */
+ u_int64_t allocation_base; /* Base address of a range of pages
+ * within this region. */
+ u_int32_t allocation_protection; /* Memory protection when this region
+ * was originally allocated:
+ * MDMemoryProtection */
+ u_int32_t __alignment1;
+ u_int64_t region_size;
+ u_int32_t state; /* MDMemoryState */
+ u_int32_t protection; /* MDMemoryProtection */
+ u_int32_t type; /* MDMemoryType */
+ u_int32_t __alignment2;
+} MDRawMemoryInfo; /* MINIDUMP_MEMORY_INFO */
+
+/* For (MDRawMemoryInfo).state */
+typedef enum {
+ MD_MEMORY_STATE_COMMIT = 0x1000, /* physical storage has been allocated */
+ MD_MEMORY_STATE_RESERVE = 0x2000, /* reserved, but no physical storage */
+ MD_MEMORY_STATE_FREE = 0x10000 /* available to be allocated */
+} MDMemoryState;
+
+/* For (MDRawMemoryInfo).allocation_protection and .protection */
+typedef enum {
+ MD_MEMORY_PROTECT_NOACCESS = 0x01, /* PAGE_NOACCESS */
+ MD_MEMORY_PROTECT_READONLY = 0x02, /* PAGE_READONLY */
+ MD_MEMORY_PROTECT_READWRITE = 0x04, /* PAGE_READWRITE */
+ MD_MEMORY_PROTECT_WRITECOPY = 0x08, /* PAGE_WRITECOPY */
+ MD_MEMORY_PROTECT_EXECUTE = 0x10, /* PAGE_EXECUTE */
+ MD_MEMORY_PROTECT_EXECUTE_READ = 0x20, /* PAGE_EXECUTE_READ */
+ MD_MEMORY_PROTECT_EXECUTE_READWRITE = 0x40, /* PAGE_EXECUTE_READWRITE */
+ MD_MEMORY_PROTECT_EXECUTE_WRITECOPY = 0x80, /* PAGE_EXECUTE_WRITECOPY */
+ /* These options can be combined with the previous flags. */
+ MD_MEMORY_PROTECT_GUARD = 0x100, /* PAGE_GUARD */
+ MD_MEMORY_PROTECT_NOCACHE = 0x200, /* PAGE_NOCACHE */
+ MD_MEMORY_PROTECT_WRITECOMBINE = 0x400, /* PAGE_WRITECOMBINE */
+} MDMemoryProtection;
+
+/* Used to mask the mutually exclusive options from the combinable flags. */
+const u_int32_t MD_MEMORY_PROTECTION_ACCESS_MASK = 0xFF;
+
+/* For (MDRawMemoryInfo).type */
+typedef enum {
+ MD_MEMORY_TYPE_PRIVATE = 0x20000, /* not shared by other processes */
+ MD_MEMORY_TYPE_MAPPED = 0x40000, /* mapped into the view of a section */
+ MD_MEMORY_TYPE_IMAGE = 0x1000000 /* mapped into the view of an image */
+} MDMemoryType;
/*
* Breakpad extension types