Add structure definitions for the memory info list, as well as some other new enum values.
R=mark at http://breakpad.appspot.com/254001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@754 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
972ae49d47
commit
80745c59de
1 changed files with 73 additions and 2 deletions
|
@ -291,7 +291,12 @@ typedef enum {
|
||||||
MD_WITHOUT_OPTIONAL_DATA = 0x00000400,
|
MD_WITHOUT_OPTIONAL_DATA = 0x00000400,
|
||||||
MD_WITH_FULL_MEMORY_INFO = 0x00000800,
|
MD_WITH_FULL_MEMORY_INFO = 0x00000800,
|
||||||
MD_WITH_THREAD_INFO = 0x00001000,
|
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 */
|
} MDType; /* MINIDUMP_TYPE */
|
||||||
|
|
||||||
|
|
||||||
|
@ -318,6 +323,9 @@ typedef enum {
|
||||||
MD_FUNCTION_TABLE_STREAM = 13,
|
MD_FUNCTION_TABLE_STREAM = 13,
|
||||||
MD_UNLOADED_MODULE_LIST_STREAM = 14,
|
MD_UNLOADED_MODULE_LIST_STREAM = 14,
|
||||||
MD_MISC_INFO_STREAM = 15, /* MDRawMiscInfo */
|
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,
|
MD_LAST_RESERVED_STREAM = 0x0000ffff,
|
||||||
|
|
||||||
/* Breakpad extension types. 0x4767 = "Gg" */
|
/* Breakpad extension types. 0x4767 = "Gg" */
|
||||||
|
@ -645,6 +653,69 @@ typedef enum {
|
||||||
/* MINIDUMP_MISC1_PROCESSOR_POWER_INFO */
|
/* MINIDUMP_MISC1_PROCESSOR_POWER_INFO */
|
||||||
} MDMiscInfoFlags1;
|
} 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
|
* Breakpad extension types
|
||||||
|
|
Loading…
Reference in a new issue