17daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai/* Copyright (c) 2006, Google Inc. 27daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * All rights reserved. 33261e8b6eac44a41341f112821482bee6c940c98mmentovai * 47daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * Redistribution and use in source and binary forms, with or without 57daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * modification, are permitted provided that the following conditions are 67daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * met: 73261e8b6eac44a41341f112821482bee6c940c98mmentovai * 87daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * * Redistributions of source code must retain the above copyright 97daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * notice, this list of conditions and the following disclaimer. 107daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * * Redistributions in binary form must reproduce the above 117daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * copyright notice, this list of conditions and the following disclaimer 127daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * in the documentation and/or other materials provided with the 137daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * distribution. 147daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * * Neither the name of Google Inc. nor the names of its 157daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * contributors may be used to endorse or promote products derived from 167daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * this software without specific prior written permission. 173261e8b6eac44a41341f112821482bee6c940c98mmentovai * 187daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 197daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 207daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 217daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 227daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 237daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 247daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 257daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 267daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 277daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 287daf246e4baf0837e25429668cc23e92b6afe3b3mmentovai * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 293261e8b6eac44a41341f112821482bee6c940c98mmentovai 303261e8b6eac44a41341f112821482bee6c940c98mmentovai/* minidump_format.h: A cross-platform reimplementation of minidump-related 313261e8b6eac44a41341f112821482bee6c940c98mmentovai * portions of DbgHelp.h from the Windows Platform SDK. 323261e8b6eac44a41341f112821482bee6c940c98mmentovai * 333261e8b6eac44a41341f112821482bee6c940c98mmentovai * (This is C99 source, please don't corrupt it with C++.) 343261e8b6eac44a41341f112821482bee6c940c98mmentovai * 352e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai * Structures that are defined by Microsoft to contain a zero-length array 362e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai * are instead defined here to contain an array with one element, as 372e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai * zero-length arrays are forbidden by standard C and C++. In these cases, 382e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai * *_minsize constants are provided to be used in place of sizeof. For a 392e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai * cleaner interface to these sizes when using C++, see minidump_size.h. 402e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai * 413261e8b6eac44a41341f112821482bee6c940c98mmentovai * These structures are also sufficient to populate minidump files. 423261e8b6eac44a41341f112821482bee6c940c98mmentovai * 433261e8b6eac44a41341f112821482bee6c940c98mmentovai * These definitions may be extended to support handling minidump files 443261e8b6eac44a41341f112821482bee6c940c98mmentovai * for other CPUs and other operating systems. 453261e8b6eac44a41341f112821482bee6c940c98mmentovai * 463261e8b6eac44a41341f112821482bee6c940c98mmentovai * Because precise data type sizes are crucial for this implementation to 473261e8b6eac44a41341f112821482bee6c940c98mmentovai * function properly and portably in terms of interoperability with minidumps 483261e8b6eac44a41341f112821482bee6c940c98mmentovai * produced by DbgHelp on Windows, a set of primitive types with known sizes 493261e8b6eac44a41341f112821482bee6c940c98mmentovai * are used as the basis of each structure defined by this file. DbgHelp 503261e8b6eac44a41341f112821482bee6c940c98mmentovai * on Windows is assumed to be the reference implementation; this file 513261e8b6eac44a41341f112821482bee6c940c98mmentovai * seeks to provide a cross-platform compatible implementation. To avoid 523261e8b6eac44a41341f112821482bee6c940c98mmentovai * collisions with the types and values defined and used by DbgHelp in the 533261e8b6eac44a41341f112821482bee6c940c98mmentovai * event that this implementation is used on Windows, each type and value 543261e8b6eac44a41341f112821482bee6c940c98mmentovai * defined here is given a new name, beginning with "MD". Names of the 55683c86e6c585e79e36eaa3a55ca6191f7cc87db4mmentovai * equivalent types and values in the Windows Platform SDK are given in 563261e8b6eac44a41341f112821482bee6c940c98mmentovai * comments. 573261e8b6eac44a41341f112821482bee6c940c98mmentovai * 583261e8b6eac44a41341f112821482bee6c940c98mmentovai * Author: Mark Mentovai */ 59a8b48f29ddff17cdb1c3e620814bc98dc1b829eadoshimun@gmail.com 603261e8b6eac44a41341f112821482bee6c940c98mmentovai 61e5dc60822e5938fea2ae892ccddb906641ba174emmentovai#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ 62e5dc60822e5938fea2ae892ccddb906641ba174emmentovai#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ 633261e8b6eac44a41341f112821482bee6c940c98mmentovai 642e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai#include <stddef.h> 653261e8b6eac44a41341f112821482bee6c940c98mmentovai 66e5dc60822e5938fea2ae892ccddb906641ba174emmentovai#include "google_breakpad/common/breakpad_types.h" 673261e8b6eac44a41341f112821482bee6c940c98mmentovai 683261e8b6eac44a41341f112821482bee6c940c98mmentovai 695ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai#if defined(_MSC_VER) 705ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai/* Disable "zero-sized array in struct/union" warnings when compiling in 715ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * MSVC. DbgHelp.h does this too. */ 725ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai#pragma warning(push) 735ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai#pragma warning(disable:4200) 745ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai#endif /* _MSC_VER */ 755ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 765ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 773261e8b6eac44a41341f112821482bee6c940c98mmentovai/* 783261e8b6eac44a41341f112821482bee6c940c98mmentovai * guiddef.h 793261e8b6eac44a41341f112821482bee6c940c98mmentovai */ 803261e8b6eac44a41341f112821482bee6c940c98mmentovai 813261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 826162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t data1; 836162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t data2; 846162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t data3; 856162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint8_t data4[8]; 86355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDGUID; /* GUID */ 873261e8b6eac44a41341f112821482bee6c940c98mmentovai 883261e8b6eac44a41341f112821482bee6c940c98mmentovai 893261e8b6eac44a41341f112821482bee6c940c98mmentovai/* 903261e8b6eac44a41341f112821482bee6c940c98mmentovai * WinNT.h 913261e8b6eac44a41341f112821482bee6c940c98mmentovai */ 923261e8b6eac44a41341f112821482bee6c940c98mmentovai 931a1890a52aaf8bfbea34a8d918423e6c81f3ea80ted.mielczarek/* Non-x86 CPU identifiers found in the high 24 bits of 94e5dc60822e5938fea2ae892ccddb906641ba174emmentovai * (MDRawContext*).context_flags. These aren't used by Breakpad, but are 9582a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * defined here for reference, to avoid assigning values that conflict 9682a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * (although some values already conflict). */ 9782a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai#define MD_CONTEXT_IA64 0x00080000 /* CONTEXT_IA64 */ 9882a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai/* Additional values from winnt.h in the Windows CE 5.0 SDK: */ 9982a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai#define MD_CONTEXT_SHX 0x000000c0 /* CONTEXT_SH4 (Super-H, includes SH3) */ 10082a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai#define MD_CONTEXT_ALPHA 0x00020000 /* CONTEXT_ALPHA */ 10182a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai 1021a1890a52aaf8bfbea34a8d918423e6c81f3ea80ted.mielczarek/* As of Windows 7 SP1, the number of flag bits has increased to 1031a1890a52aaf8bfbea34a8d918423e6c81f3ea80ted.mielczarek * include 0x40 (CONTEXT_XSTATE): 1041a1890a52aaf8bfbea34a8d918423e6c81f3ea80ted.mielczarek * http://msdn.microsoft.com/en-us/library/hh134238%28v=vs.85%29.aspx */ 1051a1890a52aaf8bfbea34a8d918423e6c81f3ea80ted.mielczarek#define MD_CONTEXT_CPU_MASK 0xffffff00 1063402cae5e58f7503adc4d9de6d9ea69e725ddcb2mmentovai 10782a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai 1083402cae5e58f7503adc4d9de6d9ea69e725ddcb2mmentovai/* This is a base type for MDRawContextX86 and MDRawContextPPC. This 1093402cae5e58f7503adc4d9de6d9ea69e725ddcb2mmentovai * structure should never be allocated directly. The actual structure type 1103402cae5e58f7503adc4d9de6d9ea69e725ddcb2mmentovai * can be determined by examining the context_flags field. */ 1113402cae5e58f7503adc4d9de6d9ea69e725ddcb2mmentovaitypedef struct { 1126162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t context_flags; 1133402cae5e58f7503adc4d9de6d9ea69e725ddcb2mmentovai} MDRawContextBase; 1143402cae5e58f7503adc4d9de6d9ea69e725ddcb2mmentovai 1159276b0d3017ad5ca93c8b593cacf317e1eaa114eted.mielczarek#include "minidump_cpu_amd64.h" 1169276b0d3017ad5ca93c8b593cacf317e1eaa114eted.mielczarek#include "minidump_cpu_arm.h" 117a157c99f9fdfc5f5072db05a5075ae23fce43c88mark@chromium.org#include "minidump_cpu_arm64.h" 1185f22d6a7f471f2352d394c188560fd06830e14f3gordana.cmiljanovic@imgtec.com#include "minidump_cpu_mips.h" 119a194d6f1acbcd3f941b228901a02a0708f1c2ad5nealsid#include "minidump_cpu_ppc.h" 120a194d6f1acbcd3f941b228901a02a0708f1c2ad5nealsid#include "minidump_cpu_ppc64.h" 1219276b0d3017ad5ca93c8b593cacf317e1eaa114eted.mielczarek#include "minidump_cpu_sparc.h" 1229276b0d3017ad5ca93c8b593cacf317e1eaa114eted.mielczarek#include "minidump_cpu_x86.h" 1233261e8b6eac44a41341f112821482bee6c940c98mmentovai 1243261e8b6eac44a41341f112821482bee6c940c98mmentovai/* 1253261e8b6eac44a41341f112821482bee6c940c98mmentovai * WinVer.h 1263261e8b6eac44a41341f112821482bee6c940c98mmentovai */ 1273261e8b6eac44a41341f112821482bee6c940c98mmentovai 1283261e8b6eac44a41341f112821482bee6c940c98mmentovai 1293261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 1306162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t signature; 1316162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t struct_version; 1326162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t file_version_hi; 1336162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t file_version_lo; 1346162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t product_version_hi; 1356162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t product_version_lo; 1366162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t file_flags_mask; /* Identifies valid bits in fileFlags */ 1376162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t file_flags; 1386162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t file_os; 1396162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t file_type; 1406162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t file_subtype; 1416162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t file_date_hi; 1426162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t file_date_lo; 143355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDVSFixedFileInfo; /* VS_FIXEDFILEINFO */ 1443261e8b6eac44a41341f112821482bee6c940c98mmentovai 1453261e8b6eac44a41341f112821482bee6c940c98mmentovai/* For (MDVSFixedFileInfo).signature */ 1463261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_SIGNATURE 0xfeef04bd 1473261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VS_FFI_SIGNATURE */ 1483261e8b6eac44a41341f112821482bee6c940c98mmentovai 1493261e8b6eac44a41341f112821482bee6c940c98mmentovai/* For (MDVSFixedFileInfo).version */ 1503261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_VERSION 0x00010000 1513261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VS_FFI_STRUCVERSION */ 1523261e8b6eac44a41341f112821482bee6c940c98mmentovai 1533261e8b6eac44a41341f112821482bee6c940c98mmentovai/* For (MDVSFixedFileInfo).file_flags_mask and 1543261e8b6eac44a41341f112821482bee6c940c98mmentovai * (MDVSFixedFileInfo).file_flags */ 1553261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_FLAGS_DEBUG 0x00000001 1563261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VS_FF_DEBUG */ 1573261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRERELEASE 0x00000002 1583261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VS_FF_PRERELEASE */ 1593261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PATCHED 0x00000004 1603261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VS_FF_PATCHED */ 1613261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRIVATEBUILD 0x00000008 1623261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VS_FF_PRIVATEBUILD */ 1633261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_FLAGS_INFOINFERRED 0x00000010 1643261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VS_FF_INFOINFERRED */ 1653261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_FLAGS_SPECIALBUILD 0x00000020 1663261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VS_FF_SPECIALBUILD */ 1673261e8b6eac44a41341f112821482bee6c940c98mmentovai 1683261e8b6eac44a41341f112821482bee6c940c98mmentovai/* For (MDVSFixedFileInfo).file_os: high 16 bits */ 169355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS_UNKNOWN 0 /* VOS_UNKNOWN */ 170355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS_DOS (1 << 16) /* VOS_DOS */ 171355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS_OS216 (2 << 16) /* VOS_OS216 */ 172355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS_OS232 (3 << 16) /* VOS_OS232 */ 173355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS_NT (4 << 16) /* VOS_NT */ 174355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS_WINCE (5 << 16) /* VOS_WINCE */ 1753261e8b6eac44a41341f112821482bee6c940c98mmentovai/* Low 16 bits */ 176355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS__BASE 0 /* VOS__BASE */ 177355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS16 1 /* VOS__WINDOWS16 */ 178355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS__PM16 2 /* VOS__PM16 */ 179355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS__PM32 3 /* VOS__PM32 */ 180355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS32 4 /* VOS__WINDOWS32 */ 1813261e8b6eac44a41341f112821482bee6c940c98mmentovai 1823261e8b6eac44a41341f112821482bee6c940c98mmentovai/* For (MDVSFixedFileInfo).file_type */ 183355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_TYPE_UNKNOWN 0 /* VFT_UNKNOWN */ 184355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_TYPE_APP 1 /* VFT_APP */ 185355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_TYPE_DLL 2 /* VFT_DLL */ 186355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_TYPE_DRV 3 /* VFT_DLL */ 187355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_TYPE_FONT 4 /* VFT_FONT */ 188355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_TYPE_VXD 5 /* VFT_VXD */ 189355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_VSFIXEDFILEINFO_FILE_TYPE_STATIC_LIB 7 /* VFT_STATIC_LIB */ 1903261e8b6eac44a41341f112821482bee6c940c98mmentovai 1913261e8b6eac44a41341f112821482bee6c940c98mmentovai/* For (MDVSFixedFileInfo).file_subtype */ 1923261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_UNKNOWN 0 1933261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_UNKNOWN */ 1943261e8b6eac44a41341f112821482bee6c940c98mmentovai/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_DRV */ 1953261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_PRINTER 1 1963261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_PRINTER */ 1973261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_KEYBOARD 2 1983261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_KEYBOARD */ 1993261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_LANGUAGE 3 2003261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_LANGUAGE */ 2013261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_DISPLAY 4 2023261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_DISPLAY */ 2033261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_MOUSE 5 2043261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_MOUSE */ 2053261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_NETWORK 6 2063261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_NETWORK */ 2073261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SYSTEM 7 2083261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_SYSTEM */ 2093261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INSTALLABLE 8 2103261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_INSTALLABLE */ 2113261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SOUND 9 2123261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_SOUND */ 2133261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_COMM 10 2143261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_COMM */ 2153261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INPUTMETHOD 11 2163261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_INPUTMETHOD */ 2173261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_VERSIONED_PRINTER 12 2183261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_DRV_VERSIONED_PRINTER */ 2193261e8b6eac44a41341f112821482bee6c940c98mmentovai/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_FONT */ 2203261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_RASTER 1 2213261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_FONT_RASTER */ 2223261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_VECTOR 2 2233261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_FONT_VECTOR */ 2243261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_TRUETYPE 3 2253261e8b6eac44a41341f112821482bee6c940c98mmentovai /* VFT2_FONT_TRUETYPE */ 2263261e8b6eac44a41341f112821482bee6c940c98mmentovai 2273261e8b6eac44a41341f112821482bee6c940c98mmentovai 2283261e8b6eac44a41341f112821482bee6c940c98mmentovai/* 2293261e8b6eac44a41341f112821482bee6c940c98mmentovai * DbgHelp.h 2303261e8b6eac44a41341f112821482bee6c940c98mmentovai */ 2313261e8b6eac44a41341f112821482bee6c940c98mmentovai 2323261e8b6eac44a41341f112821482bee6c940c98mmentovai 233355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai/* An MDRVA is an offset into the minidump file. The beginning of the 234355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * MDRawHeader is at offset 0. */ 2356162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.comtypedef uint32_t MDRVA; /* RVA */ 2363261e8b6eac44a41341f112821482bee6c940c98mmentovai 2373261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 2386162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t data_size; 2393261e8b6eac44a41341f112821482bee6c940c98mmentovai MDRVA rva; 240355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDLocationDescriptor; /* MINIDUMP_LOCATION_DESCRIPTOR */ 2413261e8b6eac44a41341f112821482bee6c940c98mmentovai 2423261e8b6eac44a41341f112821482bee6c940c98mmentovai 2433261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 244355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai /* The base address of the memory range on the host that produced the 245355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * minidump. */ 2466162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t start_of_memory_range; 247355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai 2483261e8b6eac44a41341f112821482bee6c940c98mmentovai MDLocationDescriptor memory; 249355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDMemoryDescriptor; /* MINIDUMP_MEMORY_DESCRIPTOR */ 2503261e8b6eac44a41341f112821482bee6c940c98mmentovai 2513261e8b6eac44a41341f112821482bee6c940c98mmentovai 2523261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 2536162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t signature; 2546162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t version; 2556162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t stream_count; 256355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai MDRVA stream_directory_rva; /* A |stream_count|-sized array of 257355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * MDRawDirectory structures. */ 2586162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t checksum; /* Can be 0. In fact, that's all that's 259355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * been found in minidump files. */ 2606162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t time_date_stamp; /* time_t */ 2616162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t flags; 262355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDRawHeader; /* MINIDUMP_HEADER */ 2633261e8b6eac44a41341f112821482bee6c940c98mmentovai 2643261e8b6eac44a41341f112821482bee6c940c98mmentovai/* For (MDRawHeader).signature and (MDRawHeader).version. Note that only the 2653261e8b6eac44a41341f112821482bee6c940c98mmentovai * low 16 bits of (MDRawHeader).version are MD_HEADER_VERSION. Per the 2663261e8b6eac44a41341f112821482bee6c940c98mmentovai * documentation, the high 16 bits are implementation-specific. */ 2673261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_HEADER_SIGNATURE 0x504d444d /* 'PMDM' */ 2683261e8b6eac44a41341f112821482bee6c940c98mmentovai /* MINIDUMP_SIGNATURE */ 2693261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_HEADER_VERSION 0x0000a793 /* 42899 */ 2703261e8b6eac44a41341f112821482bee6c940c98mmentovai /* MINIDUMP_VERSION */ 2713261e8b6eac44a41341f112821482bee6c940c98mmentovai 272355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai/* For (MDRawHeader).flags: */ 2733261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef enum { 274e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis /* MD_NORMAL is the standard type of minidump. It includes full 275355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * streams for the thread list, module list, exception, system info, 276355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * and miscellaneous info. A memory list stream is also present, 277355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * pointing to the same stack memory contained in the thread list, 278355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * as well as a 256-byte region around the instruction address that 279355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * was executing when the exception occurred. Stack memory is from 280355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * 4 bytes below a thread's stack pointer up to the top of the 281355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * memory region encompassing the stack. */ 282e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_NORMAL = 0x00000000, 283e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITH_DATA_SEGS = 0x00000001, 284e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITH_FULL_MEMORY = 0x00000002, 285e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITH_HANDLE_DATA = 0x00000004, 286e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_FILTER_MEMORY = 0x00000008, 287e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_SCAN_MEMORY = 0x00000010, 288e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITH_UNLOADED_MODULES = 0x00000020, 289e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITH_INDIRECTLY_REFERENCED_MEMORY = 0x00000040, 290e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_FILTER_MODULE_PATHS = 0x00000080, 291e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITH_PROCESS_THREAD_DATA = 0x00000100, 292e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITH_PRIVATE_READ_WRITE_MEMORY = 0x00000200, 293e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITHOUT_OPTIONAL_DATA = 0x00000400, 294e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITH_FULL_MEMORY_INFO = 0x00000800, 295e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_WITH_THREAD_INFO = 0x00001000, 29680745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_WITH_CODE_SEGS = 0x00002000, 29780745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_WITHOUT_AUXILLIARY_SEGS = 0x00004000, 29880745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_WITH_FULL_AUXILLIARY_STATE = 0x00008000, 29980745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_WITH_PRIVATE_WRITE_COPY_MEMORY = 0x00010000, 30080745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_IGNORE_INACCESSIBLE_MEMORY = 0x00020000, 30180745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_WITH_TOKEN_INFORMATION = 0x00040000 302355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDType; /* MINIDUMP_TYPE */ 3033261e8b6eac44a41341f112821482bee6c940c98mmentovai 3043261e8b6eac44a41341f112821482bee6c940c98mmentovai 3053261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 3066162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t stream_type; 3073261e8b6eac44a41341f112821482bee6c940c98mmentovai MDLocationDescriptor location; 308355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDRawDirectory; /* MINIDUMP_DIRECTORY */ 3093261e8b6eac44a41341f112821482bee6c940c98mmentovai 3103261e8b6eac44a41341f112821482bee6c940c98mmentovai/* For (MDRawDirectory).stream_type */ 3113261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef enum { 312e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_UNUSED_STREAM = 0, 313e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_RESERVED_STREAM_0 = 1, 314e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_RESERVED_STREAM_1 = 2, 315e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_THREAD_LIST_STREAM = 3, /* MDRawThreadList */ 316e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_MODULE_LIST_STREAM = 4, /* MDRawModuleList */ 317e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_MEMORY_LIST_STREAM = 5, /* MDRawMemoryList */ 318e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_EXCEPTION_STREAM = 6, /* MDRawExceptionStream */ 319e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_SYSTEM_INFO_STREAM = 7, /* MDRawSystemInfo */ 320e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_THREAD_EX_LIST_STREAM = 8, 321e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_MEMORY_64_LIST_STREAM = 9, 322e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_COMMENT_STREAM_A = 10, 323e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_COMMENT_STREAM_W = 11, 324e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_HANDLE_DATA_STREAM = 12, 325e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_FUNCTION_TABLE_STREAM = 13, 326e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_UNLOADED_MODULE_LIST_STREAM = 14, 327e47047b3835dcbb5da7fe7f5f9b6d78a5307122awaylonis MD_MISC_INFO_STREAM = 15, /* MDRawMiscInfo */ 32880745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_INFO_LIST_STREAM = 16, /* MDRawMemoryInfoList */ 32980745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_THREAD_INFO_LIST_STREAM = 17, 33080745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_HANDLE_OPERATION_LIST_STREAM = 18, 3315ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai MD_LAST_RESERVED_STREAM = 0x0000ffff, 3325ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 333e5dc60822e5938fea2ae892ccddb906641ba174emmentovai /* Breakpad extension types. 0x4767 = "Gg" */ 33484b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek MD_BREAKPAD_INFO_STREAM = 0x47670001, /* MDRawBreakpadInfo */ 33508c5838aa96f7d8246ebb1883d0aec959ac38487cdn@chromium.org MD_ASSERTION_INFO_STREAM = 0x47670002, /* MDRawAssertionInfo */ 33684b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek /* These are additional minidump stream values which are specific to 33784b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek * the linux breakpad implementation. */ 33884b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek MD_LINUX_CPU_INFO = 0x47670003, /* /proc/cpuinfo */ 33984b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek MD_LINUX_PROC_STATUS = 0x47670004, /* /proc/$x/status */ 34084b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek MD_LINUX_LSB_RELEASE = 0x47670005, /* /etc/lsb-release */ 34184b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek MD_LINUX_CMD_LINE = 0x47670006, /* /proc/$x/cmdline */ 34284b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek MD_LINUX_ENVIRON = 0x47670007, /* /proc/$x/environ */ 34384b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek MD_LINUX_AUXV = 0x47670008, /* /proc/$x/auxv */ 34484b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek MD_LINUX_MAPS = 0x47670009, /* /proc/$x/maps */ 345e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org MD_LINUX_DSO_DEBUG = 0x4767000A /* MDRawDebug{32,64} */ 346355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDStreamType; /* MINIDUMP_STREAM_TYPE */ 3473261e8b6eac44a41341f112821482bee6c940c98mmentovai 3483261e8b6eac44a41341f112821482bee6c940c98mmentovai 3493261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 3506162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t length; /* Length of buffer in bytes (not characters), 3513562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * excluding 0-terminator */ 3526162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t buffer[1]; /* UTF-16-encoded, 0-terminated */ 353aa57b8e3dedd3cdc9f627cddae9c80b285d5a39bmmentovai} MDString; /* MINIDUMP_STRING */ 354aa57b8e3dedd3cdc9f627cddae9c80b285d5a39bmmentovai 3552e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovaistatic const size_t MDString_minsize = offsetof(MDString, buffer[0]); 3562e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai 357aa57b8e3dedd3cdc9f627cddae9c80b285d5a39bmmentovai 358aa57b8e3dedd3cdc9f627cddae9c80b285d5a39bmmentovaitypedef struct { 3596162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t thread_id; 3606162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t suspend_count; 3616162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t priority_class; 3626162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t priority; 3636162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t teb; /* Thread environment block */ 3643261e8b6eac44a41341f112821482bee6c940c98mmentovai MDMemoryDescriptor stack; 365355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai MDLocationDescriptor thread_context; /* MDRawContext[CPU] */ 366355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDRawThread; /* MINIDUMP_THREAD */ 3673261e8b6eac44a41341f112821482bee6c940c98mmentovai 3683261e8b6eac44a41341f112821482bee6c940c98mmentovai 3693261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 3706162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t number_of_threads; 3712e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai MDRawThread threads[1]; 372355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDRawThreadList; /* MINIDUMP_THREAD_LIST */ 3733261e8b6eac44a41341f112821482bee6c940c98mmentovai 3742e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovaistatic const size_t MDRawThreadList_minsize = offsetof(MDRawThreadList, 3752e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai threads[0]); 3762e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai 3773261e8b6eac44a41341f112821482bee6c940c98mmentovai 3783261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 3796162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t base_of_image; 3806162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t size_of_image; 3816162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t checksum; /* 0 if unknown */ 3826162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t time_date_stamp; /* time_t */ 383aa57b8e3dedd3cdc9f627cddae9c80b285d5a39bmmentovai MDRVA module_name_rva; /* MDString, pathname or filename */ 3843261e8b6eac44a41341f112821482bee6c940c98mmentovai MDVSFixedFileInfo version_info; 3853261e8b6eac44a41341f112821482bee6c940c98mmentovai 3863261e8b6eac44a41341f112821482bee6c940c98mmentovai /* The next field stores a CodeView record and is populated when a module's 3873261e8b6eac44a41341f112821482bee6c940c98mmentovai * debug information resides in a PDB file. It identifies the PDB file. */ 3883261e8b6eac44a41341f112821482bee6c940c98mmentovai MDLocationDescriptor cv_record; 3893261e8b6eac44a41341f112821482bee6c940c98mmentovai 3903261e8b6eac44a41341f112821482bee6c940c98mmentovai /* The next field is populated when a module's debug information resides 3913261e8b6eac44a41341f112821482bee6c940c98mmentovai * in a DBG file. It identifies the DBG file. This field is effectively 3923261e8b6eac44a41341f112821482bee6c940c98mmentovai * obsolete with modules built by recent toolchains. */ 3933261e8b6eac44a41341f112821482bee6c940c98mmentovai MDLocationDescriptor misc_record; 3943261e8b6eac44a41341f112821482bee6c940c98mmentovai 3953261e8b6eac44a41341f112821482bee6c940c98mmentovai /* Alignment problem: reserved0 and reserved1 are defined by the platform 3963261e8b6eac44a41341f112821482bee6c940c98mmentovai * SDK as 64-bit quantities. However, that results in a structure whose 3973261e8b6eac44a41341f112821482bee6c940c98mmentovai * alignment is unpredictable on different CPUs and ABIs. If the ABI 3983261e8b6eac44a41341f112821482bee6c940c98mmentovai * specifies full alignment of 64-bit quantities in structures (as ppc 3993261e8b6eac44a41341f112821482bee6c940c98mmentovai * does), there will be padding between miscRecord and reserved0. If 4003261e8b6eac44a41341f112821482bee6c940c98mmentovai * 64-bit quantities can be aligned on 32-bit boundaries (as on x86), 4013261e8b6eac44a41341f112821482bee6c940c98mmentovai * this padding will not exist. (Note that the structure up to this point 4023261e8b6eac44a41341f112821482bee6c940c98mmentovai * contains 1 64-bit member followed by 21 32-bit members.) 4033261e8b6eac44a41341f112821482bee6c940c98mmentovai * As a workaround, reserved0 and reserved1 are instead defined here as 4043261e8b6eac44a41341f112821482bee6c940c98mmentovai * four 32-bit quantities. This should be harmless, as there are 4053261e8b6eac44a41341f112821482bee6c940c98mmentovai * currently no known uses for these fields. */ 4066162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t reserved0[2]; 4076162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t reserved1[2]; 408355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDRawModule; /* MINIDUMP_MODULE */ 4093261e8b6eac44a41341f112821482bee6c940c98mmentovai 4103261e8b6eac44a41341f112821482bee6c940c98mmentovai/* The inclusion of a 64-bit type in MINIDUMP_MODULE forces the struct to 4113261e8b6eac44a41341f112821482bee6c940c98mmentovai * be tail-padded out to a multiple of 64 bits under some ABIs (such as PPC). 4123261e8b6eac44a41341f112821482bee6c940c98mmentovai * This doesn't occur on systems that don't tail-pad in this manner. Define 4133261e8b6eac44a41341f112821482bee6c940c98mmentovai * this macro to be the usable size of the MDRawModule struct, and use it in 4143261e8b6eac44a41341f112821482bee6c940c98mmentovai * place of sizeof(MDRawModule). */ 4153261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_MODULE_SIZE 108 4163261e8b6eac44a41341f112821482bee6c940c98mmentovai 4173261e8b6eac44a41341f112821482bee6c940c98mmentovai 4183261e8b6eac44a41341f112821482bee6c940c98mmentovai/* (MDRawModule).cv_record can reference MDCVInfoPDB20 or MDCVInfoPDB70. 4193261e8b6eac44a41341f112821482bee6c940c98mmentovai * Ref.: http://www.debuginfo.com/articles/debuginfomatch.html 4203261e8b6eac44a41341f112821482bee6c940c98mmentovai * MDCVInfoPDB70 is the expected structure type with recent toolchains. */ 4213261e8b6eac44a41341f112821482bee6c940c98mmentovai 4223261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 4236162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t signature; 4246162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t offset; /* Offset to debug data (expect 0 in minidump) */ 4253261e8b6eac44a41341f112821482bee6c940c98mmentovai} MDCVHeader; 4263261e8b6eac44a41341f112821482bee6c940c98mmentovai 4273261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 4283261e8b6eac44a41341f112821482bee6c940c98mmentovai MDCVHeader cv_header; 4296162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t signature; /* time_t debug information created */ 4306162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t age; /* revision of PDB file */ 4316162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint8_t pdb_file_name[1]; /* Pathname or filename of PDB file */ 4323261e8b6eac44a41341f112821482bee6c940c98mmentovai} MDCVInfoPDB20; 4333261e8b6eac44a41341f112821482bee6c940c98mmentovai 4342e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovaistatic const size_t MDCVInfoPDB20_minsize = offsetof(MDCVInfoPDB20, 4352e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai pdb_file_name[0]); 4362e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai 437355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_CVINFOPDB20_SIGNATURE 0x3031424e /* cvHeader.signature = '01BN' */ 4383261e8b6eac44a41341f112821482bee6c940c98mmentovai 4393261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 4406162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t cv_signature; 441355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai MDGUID signature; /* GUID, identifies PDB file */ 4426162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t age; /* Identifies incremental changes to PDB file */ 4436162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint8_t pdb_file_name[1]; /* Pathname or filename of PDB file, 444355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * 0-terminated 8-bit character data (UTF-8?) */ 4453261e8b6eac44a41341f112821482bee6c940c98mmentovai} MDCVInfoPDB70; 4463261e8b6eac44a41341f112821482bee6c940c98mmentovai 4472e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovaistatic const size_t MDCVInfoPDB70_minsize = offsetof(MDCVInfoPDB70, 4482e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai pdb_file_name[0]); 4492e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai 450355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai#define MD_CVINFOPDB70_SIGNATURE 0x53445352 /* cvSignature = 'SDSR' */ 4513261e8b6eac44a41341f112821482bee6c940c98mmentovai 4529abfe3d0a5bbefd85c54feda0dac2d030cbb5635mmentovaitypedef struct { 4536162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t data1[2]; 4546162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t data2; 4556162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t data3; 4566162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t data4; 4576162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t data5[3]; 4586162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint8_t extra[2]; 4599abfe3d0a5bbefd85c54feda0dac2d030cbb5635mmentovai} MDCVInfoELF; 4609abfe3d0a5bbefd85c54feda0dac2d030cbb5635mmentovai 46148dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai/* In addition to the two CodeView record formats above, used for linking 46248dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * to external pdb files, it is possible for debugging data to be carried 46348dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * directly in the CodeView record itself. These signature values will 46448dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * be found in the first 4 bytes of the CodeView record. Additional values 46548dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * not commonly experienced in the wild are given by "Microsoft Symbol and 46648dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * Type Information", http://www.x86.org/ftp/manuals/tools/sym.pdf, section 46748dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * 7.2. An in-depth description of the CodeView 4.1 format is given by 46848dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * "Undocumented Windows 2000 Secrets", Windows 2000 Debugging Support/ 46948dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * Microsoft Symbol File Internals/CodeView Subsections, 47048dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * http://www.rawol.com/features/undocumented/sbs-w2k-1-windows-2000-debugging-support.pdf 47148dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai */ 47248dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai#define MD_CVINFOCV41_SIGNATURE 0x3930424e /* '90BN', CodeView 4.10. */ 47348dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai#define MD_CVINFOCV50_SIGNATURE 0x3131424e /* '11BN', CodeView 5.0, 47448dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai * MS C7-format (/Z7). */ 47548dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai 47648dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai#define MD_CVINFOUNKNOWN_SIGNATURE 0xffffffff /* An unlikely value. */ 47748dab62c2df1621db0e5b57f400e1fc38c1b37eemmentovai 4783261e8b6eac44a41341f112821482bee6c940c98mmentovai/* (MDRawModule).miscRecord can reference MDImageDebugMisc. The Windows 4793261e8b6eac44a41341f112821482bee6c940c98mmentovai * structure is actually defined in WinNT.h. This structure is effectively 4803261e8b6eac44a41341f112821482bee6c940c98mmentovai * obsolete with modules built by recent toolchains. */ 4813261e8b6eac44a41341f112821482bee6c940c98mmentovai 4823261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 4836162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t data_type; /* IMAGE_DEBUG_TYPE_*, not defined here because 484355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * this debug record type is mostly obsolete. */ 4856162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t length; /* Length of entire MDImageDebugMisc structure */ 4866162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint8_t unicode; /* True if data is multibyte */ 4876162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint8_t reserved[3]; 4886162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint8_t data[1]; 489355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDImageDebugMisc; /* IMAGE_DEBUG_MISC */ 4903261e8b6eac44a41341f112821482bee6c940c98mmentovai 4912e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovaistatic const size_t MDImageDebugMisc_minsize = offsetof(MDImageDebugMisc, 4922e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai data[0]); 4932e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai 4943261e8b6eac44a41341f112821482bee6c940c98mmentovai 4953261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 4966162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t number_of_modules; 4972e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai MDRawModule modules[1]; 498355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDRawModuleList; /* MINIDUMP_MODULE_LIST */ 4993261e8b6eac44a41341f112821482bee6c940c98mmentovai 5002e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovaistatic const size_t MDRawModuleList_minsize = offsetof(MDRawModuleList, 5012e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai modules[0]); 5022e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai 5033261e8b6eac44a41341f112821482bee6c940c98mmentovai 5043261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 5056162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t number_of_memory_ranges; 5062e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai MDMemoryDescriptor memory_ranges[1]; 507355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDRawMemoryList; /* MINIDUMP_MEMORY_LIST */ 5083261e8b6eac44a41341f112821482bee6c940c98mmentovai 5092e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovaistatic const size_t MDRawMemoryList_minsize = offsetof(MDRawMemoryList, 5102e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai memory_ranges[0]); 5112e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai 5123261e8b6eac44a41341f112821482bee6c940c98mmentovai 5133261e8b6eac44a41341f112821482bee6c940c98mmentovai#define MD_EXCEPTION_MAXIMUM_PARAMETERS 15 5143261e8b6eac44a41341f112821482bee6c940c98mmentovai 5153261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 5166162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t exception_code; /* Windows: MDExceptionCodeWin, 517b5c78cc8d1bdbd96a0d31750cd35d2475752c7a0ted.mielczarek * Mac OS X: MDExceptionMac, 518b5c78cc8d1bdbd96a0d31750cd35d2475752c7a0ted.mielczarek * Linux: MDExceptionCodeLinux. */ 5196162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t exception_flags; /* Windows: 1 if noncontinuable, 520355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai Mac OS X: MDExceptionCodeMac. */ 5216162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t exception_record; /* Address (in the minidump-producing host's 522355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * memory) of another MDException, for 523355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * nested exceptions. */ 5246162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t exception_address; /* The address that caused the exception. 525355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * Mac OS X: exception subcode (which is 526355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * typically the address). */ 5276162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t number_parameters; /* Number of valid elements in 528355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * exception_information. */ 5296162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t __align; 5306162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t exception_information[MD_EXCEPTION_MAXIMUM_PARAMETERS]; 531355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDException; /* MINIDUMP_EXCEPTION */ 532355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai 533a194d6f1acbcd3f941b228901a02a0708f1c2ad5nealsid#include "minidump_exception_linux.h" 534d9b40724ed6a6c243eaef196e617071ec36d4282thestig@chromium.org#include "minidump_exception_mac.h" 535d9b40724ed6a6c243eaef196e617071ec36d4282thestig@chromium.org#include "minidump_exception_ps3.h" 536a194d6f1acbcd3f941b228901a02a0708f1c2ad5nealsid#include "minidump_exception_solaris.h" 537d9b40724ed6a6c243eaef196e617071ec36d4282thestig@chromium.org#include "minidump_exception_win32.h" 538ea2bba970675e01f9964f82d3f44960c1aad05dcmmentovai 5393261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 5406162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t thread_id; /* Thread in which the exception 541355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * occurred. Corresponds to 542355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * (MDRawThread).thread_id. */ 5436162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t __align; 5443261e8b6eac44a41341f112821482bee6c940c98mmentovai MDException exception_record; 545355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai MDLocationDescriptor thread_context; /* MDRawContext[CPU] */ 546355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai} MDRawExceptionStream; /* MINIDUMP_EXCEPTION_STREAM */ 5473261e8b6eac44a41341f112821482bee6c940c98mmentovai 5483261e8b6eac44a41341f112821482bee6c940c98mmentovai 5493261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef union { 5503261e8b6eac44a41341f112821482bee6c940c98mmentovai struct { 5516162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t vendor_id[3]; /* cpuid 0: ebx, edx, ecx */ 5526162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t version_information; /* cpuid 1: eax */ 5536162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t feature_information; /* cpuid 1: edx */ 5546162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t amd_extended_cpu_features; /* cpuid 0x80000001, ebx */ 5553261e8b6eac44a41341f112821482bee6c940c98mmentovai } x86_cpu_info; 5563261e8b6eac44a41341f112821482bee6c940c98mmentovai struct { 557972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org uint32_t cpuid; 558972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org uint32_t elf_hwcaps; /* linux specific, 0 otherwise */ 559972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org } arm_cpu_info; 560972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org struct { 5616162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t processor_features[2]; 5623261e8b6eac44a41341f112821482bee6c940c98mmentovai } other_cpu_info; 56382a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai} MDCPUInformation; /* CPU_INFORMATION */ 5643261e8b6eac44a41341f112821482bee6c940c98mmentovai 565972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org/* For (MDCPUInformation).arm_cpu_info.elf_hwcaps. 566972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org * This matches the Linux kernel definitions from <asm/hwcaps.h> */ 567972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.orgtypedef enum { 568972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_SWP = (1 << 0), 569972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_HALF = (1 << 1), 570972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_THUMB = (1 << 2), 571972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_26BIT = (1 << 3), 572972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_FAST_MULT = (1 << 4), 573972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_FPA = (1 << 5), 574972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_VFP = (1 << 6), 575972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_EDSP = (1 << 7), 576972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_JAVA = (1 << 8), 577972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_IWMMXT = (1 << 9), 578972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_CRUNCH = (1 << 10), 579972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_THUMBEE = (1 << 11), 580972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_NEON = (1 << 12), 581972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_VFPv3 = (1 << 13), 582972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_VFPv3D16 = (1 << 14), 583972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_TLS = (1 << 15), 584972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_VFPv4 = (1 << 16), 585972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_IDIVA = (1 << 17), 586972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org MD_CPU_ARM_ELF_HWCAP_IDIVT = (1 << 18), 587972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org} MDCPUInformationARMElfHwCaps; 5883261e8b6eac44a41341f112821482bee6c940c98mmentovai 5893261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 5903261e8b6eac44a41341f112821482bee6c940c98mmentovai /* The next 3 fields and numberOfProcessors are from the SYSTEM_INFO 5913261e8b6eac44a41341f112821482bee6c940c98mmentovai * structure as returned by GetSystemInfo */ 5926162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t processor_architecture; 5936162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t processor_level; /* x86: 5 = 586, 6 = 686, ... */ 594972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org /* ARM: 6 = ARMv6, 7 = ARMv7 ... */ 5956162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t processor_revision; /* x86: 0xMMSS, where MM=model, 596355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * SS=stepping */ 597972816ca0a2c53907b4a75c8351bed0802c9e91bdigit@chromium.org /* ARM: 0 */ 5982e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai 5996162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint8_t number_of_processors; 6006162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint8_t product_type; /* Windows: VER_NT_* from WinNT.h */ 6013261e8b6eac44a41341f112821482bee6c940c98mmentovai 6023261e8b6eac44a41341f112821482bee6c940c98mmentovai /* The next 5 fields are from the OSVERSIONINFO structure as returned 6033261e8b6eac44a41341f112821482bee6c940c98mmentovai * by GetVersionEx */ 6046162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t major_version; 6056162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t minor_version; 6066162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t build_number; 6076162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t platform_id; 608aa57b8e3dedd3cdc9f627cddae9c80b285d5a39bmmentovai MDRVA csd_version_rva; /* MDString further identifying the 609355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * host OS. 610355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai * Windows: name of the installed OS 61182a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * service pack. 61282a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * Mac OS X: the Apple OS build number 61382a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * (sw_vers -buildVersion). 61482a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * Linux: uname -srvmo */ 6153261e8b6eac44a41341f112821482bee6c940c98mmentovai 6166162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t suite_mask; /* Windows: VER_SUITE_* from WinNT.h */ 6176162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t reserved2; 6182e0e2234b9e9d7d82c4c3c20396bdf8f18007e6cmmentovai 6193261e8b6eac44a41341f112821482bee6c940c98mmentovai MDCPUInformation cpu; 62082a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai} MDRawSystemInfo; /* MINIDUMP_SYSTEM_INFO */ 62182a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai 62282a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai/* For (MDRawSystemInfo).processor_architecture: */ 62382a6c6037b0dac132b86a88dccf6673efb52a51cmmentovaitypedef enum { 62482a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_X86 = 0, /* PROCESSOR_ARCHITECTURE_INTEL */ 62582a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_MIPS = 1, /* PROCESSOR_ARCHITECTURE_MIPS */ 62682a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_ALPHA = 2, /* PROCESSOR_ARCHITECTURE_ALPHA */ 62782a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_PPC = 3, /* PROCESSOR_ARCHITECTURE_PPC */ 62882a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_SHX = 4, /* PROCESSOR_ARCHITECTURE_SHX 62982a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * (Super-H) */ 63082a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_ARM = 5, /* PROCESSOR_ARCHITECTURE_ARM */ 63182a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_IA64 = 6, /* PROCESSOR_ARCHITECTURE_IA64 */ 63282a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_ALPHA64 = 7, /* PROCESSOR_ARCHITECTURE_ALPHA64 */ 63382a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_MSIL = 8, /* PROCESSOR_ARCHITECTURE_MSIL 63482a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * (Microsoft Intermediate Language) */ 63582a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_AMD64 = 9, /* PROCESSOR_ARCHITECTURE_AMD64 */ 63682a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_X86_WIN64 = 10, 63782a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai /* PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 (WoW64) */ 6389abfe3d0a5bbefd85c54feda0dac2d030cbb5635mmentovai MD_CPU_ARCHITECTURE_SPARC = 0x8001, /* Breakpad-defined value for SPARC */ 6398826ca6748e735f4330dd5a7d0db2dc0eab0cc50thestig@chromium.org MD_CPU_ARCHITECTURE_PPC64 = 0x8002, /* Breakpad-defined value for PPC64 */ 640a157c99f9fdfc5f5072db05a5075ae23fce43c88mark@chromium.org MD_CPU_ARCHITECTURE_ARM64 = 0x8003, /* Breakpad-defined value for ARM64 */ 64182a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_CPU_ARCHITECTURE_UNKNOWN = 0xffff /* PROCESSOR_ARCHITECTURE_UNKNOWN */ 64282a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai} MDCPUArchitecture; 64382a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai 64482a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai/* For (MDRawSystemInfo).platform_id: */ 64582a6c6037b0dac132b86a88dccf6673efb52a51cmmentovaitypedef enum { 64682a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_OS_WIN32S = 0, /* VER_PLATFORM_WIN32s (Windows 3.1) */ 64782a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_OS_WIN32_WINDOWS = 1, /* VER_PLATFORM_WIN32_WINDOWS (Windows 95-98-Me) */ 64882a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_OS_WIN32_NT = 2, /* VER_PLATFORM_WIN32_NT (Windows NT, 2000+) */ 64982a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_OS_WIN32_CE = 3, /* VER_PLATFORM_WIN32_CE, VER_PLATFORM_WIN32_HH 65082a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * (Windows CE, Windows Mobile, "Handheld") */ 65182a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai 652e5dc60822e5938fea2ae892ccddb906641ba174emmentovai /* The following values are Breakpad-defined. */ 65382a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_OS_UNIX = 0x8000, /* Generic Unix-ish */ 65482a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai MD_OS_MAC_OS_X = 0x8101, /* Mac OS X/Darwin */ 65563f97ad134db3fa175c489b50b66a79bf0c95025qsr@chromium.org MD_OS_IOS = 0x8102, /* iOS */ 6569abfe3d0a5bbefd85c54feda0dac2d030cbb5635mmentovai MD_OS_LINUX = 0x8201, /* Linux */ 6575187de1ae5cb7df2343b650416aa805084bdf8dadigit@chromium.org MD_OS_SOLARIS = 0x8202, /* Solaris */ 658d9b40724ed6a6c243eaef196e617071ec36d4282thestig@chromium.org MD_OS_ANDROID = 0x8203, /* Android */ 65942faddc9c3be48a8a29236ab866013288d25491emseaborn@chromium.org MD_OS_PS3 = 0x8204, /* PS3 */ 66042faddc9c3be48a8a29236ab866013288d25491emseaborn@chromium.org MD_OS_NACL = 0x8205 /* Native Client (NaCl) */ 66182a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai} MDOSPlatform; 6623261e8b6eac44a41341f112821482bee6c940c98mmentovai 6633261e8b6eac44a41341f112821482bee6c940c98mmentovaitypedef struct { 6643562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t year; 6653562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t month; 6663562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t day_of_week; 6673562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t day; 6683562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t hour; 6693562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t minute; 6703562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t second; 6713562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t milliseconds; 6723562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com} MDSystemTime; /* SYSTEMTIME */ 6733562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 6743562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.comtypedef struct { 6753562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* Required field. The bias is the difference, in minutes, between 6763562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * Coordinated Universal Time (UTC) and local time. 6773562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * Formula: UTC = local time + bias */ 6783562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com int32_t bias; 6793562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* A description for standard time. For example, "EST" could indicate Eastern 6803562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * Standard Time. In practice this contains the full time zone names. This 6813562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * string can be empty. */ 6823562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t standard_name[32]; /* UTF-16-encoded, 0-terminated */ 6833562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* A MDSystemTime structure that contains a date and local time when the 6843562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * transition from daylight saving time to standard time occurs on this 6853562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * operating system. If the time zone does not support daylight saving time, 6863562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * the month member in the MDSystemTime structure is zero. */ 6873562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MDSystemTime standard_date; 6883562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* The bias value to be used during local time translations that occur during 6893562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * standard time. */ 6903562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com int32_t standard_bias; 6913562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* A description for daylight saving time. For example, "PDT" could indicate 6923562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * Pacific Daylight Time. In practice this contains the full time zone names. 6933562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * This string can be empty. */ 6943562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t daylight_name[32]; /* UTF-16-encoded, 0-terminated */ 6953562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* A MDSystemTime structure that contains a date and local time when the 6963562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * transition from standard time to daylight saving time occurs on this 6973562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * operating system. If the time zone does not support daylight saving time, 6983562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * the month member in the MDSystemTime structure is zero.*/ 6993562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MDSystemTime daylight_date; 7003562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* The bias value to be used during local time translations that occur during 7013562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * daylight saving time. */ 7023562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com int32_t daylight_bias; 7033562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com} MDTimeZoneInformation; /* TIME_ZONE_INFORMATION */ 7043562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 7053562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com/* MAX_PATH from windef.h */ 7063562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com#define MD_MAX_PATH 260 7073562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 7083562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com/* The miscellaneous information stream contains a variety 7093562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * of small pieces of information. A member is valid if 7103562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * it's within the available size and its corresponding 7113562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * bit is set. */ 7123562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.comtypedef struct { 7136162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t size_of_info; /* Length of entire MDRawMiscInfo structure. */ 7146162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t flags1; 71582a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai 71682a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai /* The next field is only valid if flags1 contains 71782a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * MD_MISCINFO_FLAGS1_PROCESS_ID. */ 7186162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t process_id; 71982a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai 72082a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai /* The next 3 fields are only valid if flags1 contains 72182a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * MD_MISCINFO_FLAGS1_PROCESS_TIMES. */ 7226162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t process_create_time; /* time_t process started */ 7236162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t process_user_time; /* seconds of user CPU time */ 7246162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t process_kernel_time; /* seconds of kernel CPU time */ 7253261e8b6eac44a41341f112821482bee6c940c98mmentovai 7263261e8b6eac44a41341f112821482bee6c940c98mmentovai /* The following fields are not present in MINIDUMP_MISC_INFO but are 7271b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * in MINIDUMP_MISC_INFO_2. When this struct is populated, these values 7281b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * may not be set. Use flags1 and size_of_info to determine whether these 72982a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * values are present. These are only valid when flags1 contains 73082a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO. */ 7316162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t processor_max_mhz; 7326162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t processor_current_mhz; 7336162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t processor_mhz_limit; 7346162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t processor_max_idle_state; 7356162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t processor_current_idle_state; 73682a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai 7373562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* The following fields are not present in MINIDUMP_MISC_INFO_2 but are 7381b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * in MINIDUMP_MISC_INFO_3. When this struct is populated, these values 7391b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * may not be set. Use flags1 and size_of_info to determine whether these 7403562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * values are present. */ 7413562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 7423562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* The following field is only valid if flags1 contains 7433562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * MD_MISCINFO_FLAGS1_PROCESS_INTEGRITY. */ 7443562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint32_t process_integrity_level; 7453562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 7463562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* The following field is only valid if flags1 contains 7473562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * MD_MISCINFO_FLAGS1_PROCESS_EXECUTE_FLAGS. */ 7483562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint32_t process_execute_flags; 7493562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 7503562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* The following field is only valid if flags1 contains 7513562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * MD_MISCINFO_FLAGS1_PROTECTED_PROCESS. */ 7523562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint32_t protected_process; 7533562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 7543562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* The following 2 fields are only valid if flags1 contains 7553562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com * MD_MISCINFO_FLAGS1_TIMEZONE. */ 7563562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint32_t time_zone_id; 7573562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MDTimeZoneInformation time_zone; 7583562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 7593562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* The following fields are not present in MINIDUMP_MISC_INFO_3 but are 7601b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * in MINIDUMP_MISC_INFO_4. When this struct is populated, these values 7611b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * may not be set. Use flags1 and size_of_info to determine whether these 7621b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * values are present. */ 7633562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 7641b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org /* The following 2 fields are only valid if flags1 contains 7651b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * MD_MISCINFO_FLAGS1_BUILDSTRING. */ 7663562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t build_string[MD_MAX_PATH]; /* UTF-16-encoded, 0-terminated */ 7673562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com uint16_t dbg_bld_str[40]; /* UTF-16-encoded, 0-terminated */ 7681b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org} MDRawMiscInfo; /* MINIDUMP_MISC_INFO, MINIDUMP_MISC_INFO_2, 7691b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * MINIDUMP_MISC_INFO_3, MINIDUMP_MISC_INFO_4, 7701b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org * MINIDUMP_MISC_INFO_N */ 7713562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com 7723562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.comstatic const size_t MD_MISCINFO_SIZE = 7733562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com offsetof(MDRawMiscInfo, processor_max_mhz); 7743562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.comstatic const size_t MD_MISCINFO2_SIZE = 7753562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com offsetof(MDRawMiscInfo, process_integrity_level); 7763562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.comstatic const size_t MD_MISCINFO3_SIZE = 7773562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com offsetof(MDRawMiscInfo, build_string[0]); 7783562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.comstatic const size_t MD_MISCINFO4_SIZE = sizeof(MDRawMiscInfo); 779355c757b495016b1db1e8f53d2806c2667e1e4a1mmentovai 78082a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai/* For (MDRawMiscInfo).flags1. These values indicate which fields in the 78182a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai * MDRawMiscInfoStructure are valid. */ 78282a6c6037b0dac132b86a88dccf6673efb52a51cmmentovaitypedef enum { 7833562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MD_MISCINFO_FLAGS1_PROCESS_ID = 0x00000001, 78482a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai /* MINIDUMP_MISC1_PROCESS_ID */ 7853562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MD_MISCINFO_FLAGS1_PROCESS_TIMES = 0x00000002, 78682a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai /* MINIDUMP_MISC1_PROCESS_TIMES */ 7873562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO = 0x00000004, 78882a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai /* MINIDUMP_MISC1_PROCESSOR_POWER_INFO */ 7893562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MD_MISCINFO_FLAGS1_PROCESS_INTEGRITY = 0x00000010, 7903562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* MINIDUMP_MISC3_PROCESS_INTEGRITY */ 7913562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MD_MISCINFO_FLAGS1_PROCESS_EXECUTE_FLAGS = 0x00000020, 7923562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* MINIDUMP_MISC3_PROCESS_EXECUTE_FLAGS */ 7933562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MD_MISCINFO_FLAGS1_TIMEZONE = 0x00000040, 7943562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* MINIDUMP_MISC3_TIMEZONE */ 7953562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com MD_MISCINFO_FLAGS1_PROTECTED_PROCESS = 0x00000080, 7963562017ff5a65fff770cd798903ee294db912aa2ivan.penkov@gmail.com /* MINIDUMP_MISC3_PROTECTED_PROCESS */ 7971b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org MD_MISCINFO_FLAGS1_BUILDSTRING = 0x00000100, 7981b9922ced527aeee4b085aa58916af43d86b99eemark@chromium.org /* MINIDUMP_MISC4_BUILDSTRING */ 79982a6c6037b0dac132b86a88dccf6673efb52a51cmmentovai} MDMiscInfoFlags1; 8003261e8b6eac44a41341f112821482bee6c940c98mmentovai 8016162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com/* 80280745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * Around DbgHelp version 6.0, the style of new LIST structures changed 80380745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * from including an array of length 1 at the end of the struct to 80480745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * represent the variable-length data to including explicit 80580745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * "size of header", "size of entry" and "number of entries" fields 80680745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * in the header, presumably to allow backwards-compatibly-extending 80780745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * the structures in the future. The actual list entries follow the 80880745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * header data directly in this case. 80980745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek */ 81080745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek 81180745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarektypedef struct { 8126162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t size_of_header; /* sizeof(MDRawMemoryInfoList) */ 8136162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t size_of_entry; /* sizeof(MDRawMemoryInfo) */ 8146162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t number_of_entries; 81580745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek} MDRawMemoryInfoList; /* MINIDUMP_MEMORY_INFO_LIST */ 81680745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek 81780745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarektypedef struct { 8186162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t base_address; /* Base address of a region of pages */ 8196162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t allocation_base; /* Base address of a range of pages 82080745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * within this region. */ 8216162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t allocation_protection; /* Memory protection when this region 82280745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * was originally allocated: 82380745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek * MDMemoryProtection */ 8246162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t __alignment1; 8256162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint64_t region_size; 8266162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t state; /* MDMemoryState */ 8276162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t protection; /* MDMemoryProtection */ 8286162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t type; /* MDMemoryType */ 8296162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t __alignment2; 83080745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek} MDRawMemoryInfo; /* MINIDUMP_MEMORY_INFO */ 83180745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek 83280745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek/* For (MDRawMemoryInfo).state */ 83380745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarektypedef enum { 83480745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_STATE_COMMIT = 0x1000, /* physical storage has been allocated */ 83580745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_STATE_RESERVE = 0x2000, /* reserved, but no physical storage */ 83680745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_STATE_FREE = 0x10000 /* available to be allocated */ 83780745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek} MDMemoryState; 83880745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek 83980745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek/* For (MDRawMemoryInfo).allocation_protection and .protection */ 84080745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarektypedef enum { 84180745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_NOACCESS = 0x01, /* PAGE_NOACCESS */ 84280745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_READONLY = 0x02, /* PAGE_READONLY */ 84380745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_READWRITE = 0x04, /* PAGE_READWRITE */ 84480745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_WRITECOPY = 0x08, /* PAGE_WRITECOPY */ 84580745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_EXECUTE = 0x10, /* PAGE_EXECUTE */ 84680745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_EXECUTE_READ = 0x20, /* PAGE_EXECUTE_READ */ 84780745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_EXECUTE_READWRITE = 0x40, /* PAGE_EXECUTE_READWRITE */ 84880745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_EXECUTE_WRITECOPY = 0x80, /* PAGE_EXECUTE_WRITECOPY */ 84980745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek /* These options can be combined with the previous flags. */ 85080745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_GUARD = 0x100, /* PAGE_GUARD */ 85180745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_NOCACHE = 0x200, /* PAGE_NOCACHE */ 85280745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_PROTECT_WRITECOMBINE = 0x400, /* PAGE_WRITECOMBINE */ 85380745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek} MDMemoryProtection; 85480745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek 85580745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek/* Used to mask the mutually exclusive options from the combinable flags. */ 8566162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.comconst uint32_t MD_MEMORY_PROTECTION_ACCESS_MASK = 0xFF; 85780745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek 85880745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek/* For (MDRawMemoryInfo).type */ 85980745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarektypedef enum { 86080745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_TYPE_PRIVATE = 0x20000, /* not shared by other processes */ 86180745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_TYPE_MAPPED = 0x40000, /* mapped into the view of a section */ 86280745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek MD_MEMORY_TYPE_IMAGE = 0x1000000 /* mapped into the view of an image */ 86380745c59dec4eaaefb36d159b53591a2c60ae37fted.mielczarek} MDMemoryType; 8643261e8b6eac44a41341f112821482bee6c940c98mmentovai 8655ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai/* 866e5dc60822e5938fea2ae892ccddb906641ba174emmentovai * Breakpad extension types 8675ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai */ 8685ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 8695ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 8705ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovaitypedef struct { 871e5dc60822e5938fea2ae892ccddb906641ba174emmentovai /* validity is a bitmask with values from MDBreakpadInfoValidity, indicating 8725ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * which of the other fields in the structure are valid. */ 8736162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t validity; 8745ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 8755ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai /* Thread ID of the handler thread. dump_thread_id should correspond to 8765ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * the thread_id of an MDRawThread in the minidump's MDRawThreadList if 8775ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * a dedicated thread in that list was used to produce the minidump. If 8785ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * the MDRawThreadList does not contain a dedicated thread used to produce 8795ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * the minidump, this field should be set to 0 and the validity field 880e5dc60822e5938fea2ae892ccddb906641ba174emmentovai * must not contain MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID. */ 8816162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t dump_thread_id; 8825ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 8835ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai /* Thread ID of the thread that requested the minidump be produced. As 8845ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * with dump_thread_id, requesting_thread_id should correspond to the 8855ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * thread_id of an MDRawThread in the minidump's MDRawThreadList. For 8865ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * minidumps produced as a result of an exception, requesting_thread_id 8875ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * will be the same as the MDRawExceptionStream's thread_id field. For 8885ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * minidumps produced "manually" at the program's request, 8895ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * requesting_thread_id will indicate which thread caused the dump to be 8905ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * written. If the minidump was produced at the request of something 8915ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * other than a thread in the MDRawThreadList, this field should be set 8925ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai * to 0 and the validity field must not contain 893e5dc60822e5938fea2ae892ccddb906641ba174emmentovai * MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID. */ 8946162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t requesting_thread_id; 895e5dc60822e5938fea2ae892ccddb906641ba174emmentovai} MDRawBreakpadInfo; 8965ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 897e5dc60822e5938fea2ae892ccddb906641ba174emmentovai/* For (MDRawBreakpadInfo).validity: */ 8985ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovaitypedef enum { 8995ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai /* When set, the dump_thread_id field is valid. */ 900e5dc60822e5938fea2ae892ccddb906641ba174emmentovai MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID = 1 << 0, 9015ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 9025ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai /* When set, the requesting_thread_id field is valid. */ 903e5dc60822e5938fea2ae892ccddb906641ba174emmentovai MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID = 1 << 1 904e5dc60822e5938fea2ae892ccddb906641ba174emmentovai} MDBreakpadInfoValidity; 9055ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 906baff938211b0127f6254c3179eb9a58af49ce8d0mmentovaitypedef struct { 907baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai /* expression, function, and file are 0-terminated UTF-16 strings. They 908baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai * may be truncated if necessary, but should always be 0-terminated when 909baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai * written to a file. 910baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai * Fixed-length strings are used because MiniDumpWriteDump doesn't offer 911baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai * a way for user streams to point to arbitrary RVAs for strings. */ 9126162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t expression[128]; /* Assertion that failed... */ 9136162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t function[128]; /* ...within this function... */ 9146162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint16_t file[128]; /* ...in this file... */ 9156162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t line; /* ...at this line. */ 9166162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t type; 917baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai} MDRawAssertionInfo; 918baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai 919b86e7ec7f09489a9f6a982a305406dd79a85bbd5ted.mielczarek/* For (MDRawAssertionInfo).type: */ 920baff938211b0127f6254c3179eb9a58af49ce8d0mmentovaitypedef enum { 921baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai MD_ASSERTION_INFO_TYPE_UNKNOWN = 0, 922baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai 923baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai /* Used for assertions that would be raised by the MSVC CRT but are 924baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai * directed to an invalid parameter handler instead. */ 925b86e7ec7f09489a9f6a982a305406dd79a85bbd5ted.mielczarek MD_ASSERTION_INFO_TYPE_INVALID_PARAMETER, 926b86e7ec7f09489a9f6a982a305406dd79a85bbd5ted.mielczarek 927b86e7ec7f09489a9f6a982a305406dd79a85bbd5ted.mielczarek /* Used for assertions that would be raised by the MSVC CRT but are 928b86e7ec7f09489a9f6a982a305406dd79a85bbd5ted.mielczarek * directed to a pure virtual call handler instead. */ 929b86e7ec7f09489a9f6a982a305406dd79a85bbd5ted.mielczarek MD_ASSERTION_INFO_TYPE_PURE_VIRTUAL_CALL 930baff938211b0127f6254c3179eb9a58af49ce8d0mmentovai} MDAssertionInfoData; 9315ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 93284b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek/* These structs are used to store the DSO debug data in Linux minidumps, 933e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org * which is necessary for converting minidumps to usable coredumps. 934e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org * Because of a historical accident, several fields are variably encoded 935e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org * according to client word size, so tools potentially need to support both. */ 936e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org 937e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.orgtypedef struct { 938e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint32_t addr; 939e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org MDRVA name; 940e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint32_t ld; 941e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org} MDRawLinkMap32; 942e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org 943e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.orgtypedef struct { 944e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint32_t version; 945e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org MDRVA map; /* array of MDRawLinkMap32 */ 946e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint32_t dso_count; 947e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint32_t brk; 948e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint32_t ldbase; 949e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint32_t dynamic; 950e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org} MDRawDebug32; 951e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org 95284b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarektypedef struct { 953e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint64_t addr; 95484b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek MDRVA name; 955e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint64_t ld; 956e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org} MDRawLinkMap64; 95784b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek 95884b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarektypedef struct { 9596162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t version; 960e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org MDRVA map; /* array of MDRawLinkMap64 */ 9616162aed3c3fcfc53373c963ac375d39a5dfa5a25ted.mielczarek@gmail.com uint32_t dso_count; 962e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint64_t brk; 963e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint64_t ldbase; 964e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org uint64_t dynamic; 965e2f4be928865f991e7177248bc4daadb0bd4aed0mdempsky@chromium.org} MDRawDebug64; 96684b0fc6b7342b8bec16a2056bd9a160e87232ac8ted.mielczarek 9675ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai#if defined(_MSC_VER) 9685ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai#pragma warning(pop) 9695ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai#endif /* _MSC_VER */ 9705ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 9715ac32b6534688b71a2b6fe7841cf7e552a992d01mmentovai 972e5dc60822e5938fea2ae892ccddb906641ba174emmentovai#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ */ 973