1//===- MinidumpConstants.def - Iteration over minidump constants-*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#if !(defined HANDLE_MDMP_STREAM_TYPE || defined HANDLE_MDMP_ARCH ||           \
10      defined HANDLE_MDMP_PLATFORM)
11#error "Missing HANDLE_MDMP definition"
12#endif
13
14#ifndef HANDLE_MDMP_STREAM_TYPE
15#define HANDLE_MDMP_STREAM_TYPE(CODE, NAME)
16#endif
17
18#ifndef HANDLE_MDMP_ARCH
19#define HANDLE_MDMP_ARCH(CODE, NAME)
20#endif
21
22#ifndef HANDLE_MDMP_PLATFORM
23#define HANDLE_MDMP_PLATFORM(CODE, NAME)
24#endif
25
26HANDLE_MDMP_STREAM_TYPE(0x0003, ThreadList)
27HANDLE_MDMP_STREAM_TYPE(0x0004, ModuleList)
28HANDLE_MDMP_STREAM_TYPE(0x0005, MemoryList)
29HANDLE_MDMP_STREAM_TYPE(0x0006, Exception)
30HANDLE_MDMP_STREAM_TYPE(0x0007, SystemInfo)
31HANDLE_MDMP_STREAM_TYPE(0x0008, ThreadExList)
32HANDLE_MDMP_STREAM_TYPE(0x0009, Memory64List)
33HANDLE_MDMP_STREAM_TYPE(0x000a, CommentA)
34HANDLE_MDMP_STREAM_TYPE(0x000b, CommentW)
35HANDLE_MDMP_STREAM_TYPE(0x000c, HandleData)
36HANDLE_MDMP_STREAM_TYPE(0x000d, FunctionTable)
37HANDLE_MDMP_STREAM_TYPE(0x000e, UnloadedModuleList)
38HANDLE_MDMP_STREAM_TYPE(0x000f, MiscInfo)
39HANDLE_MDMP_STREAM_TYPE(0x0010, MemoryInfoList)
40HANDLE_MDMP_STREAM_TYPE(0x0011, ThreadInfoList)
41HANDLE_MDMP_STREAM_TYPE(0x0012, HandleOperationList)
42HANDLE_MDMP_STREAM_TYPE(0x0013, Token)
43HANDLE_MDMP_STREAM_TYPE(0x0014, JavascriptData)
44HANDLE_MDMP_STREAM_TYPE(0x0015, SystemMemoryInfo)
45HANDLE_MDMP_STREAM_TYPE(0x0016, ProcessVMCounters)
46// Breakpad extension types.  0x4767 = "Gg"
47HANDLE_MDMP_STREAM_TYPE(0x47670001, BreakpadInfo)
48HANDLE_MDMP_STREAM_TYPE(0x47670002, AssertionInfo)
49// These are additional minidump stream values which are specific to the linux
50// breakpad implementation.
51HANDLE_MDMP_STREAM_TYPE(0x47670003, LinuxCPUInfo)    // /proc/cpuinfo
52HANDLE_MDMP_STREAM_TYPE(0x47670004, LinuxProcStatus) // /proc/$x/status
53HANDLE_MDMP_STREAM_TYPE(0x47670005, LinuxLSBRelease) // /etc/lsb-release
54HANDLE_MDMP_STREAM_TYPE(0x47670006, LinuxCMDLine)    // /proc/$x/cmdline
55HANDLE_MDMP_STREAM_TYPE(0x47670007, LinuxEnviron)    // /proc/$x/environ
56HANDLE_MDMP_STREAM_TYPE(0x47670008, LinuxAuxv)       // /proc/$x/auxv
57HANDLE_MDMP_STREAM_TYPE(0x47670009, LinuxMaps)       // /proc/$x/maps
58HANDLE_MDMP_STREAM_TYPE(0x4767000A, LinuxDSODebug)
59HANDLE_MDMP_STREAM_TYPE(0x4767000B, LinuxProcStat)   // /proc/$x/stat
60HANDLE_MDMP_STREAM_TYPE(0x4767000C, LinuxProcUptime) // uptime
61HANDLE_MDMP_STREAM_TYPE(0x4767000D, LinuxProcFD)     // /proc/$x/fd
62// Facebook-defined stream types
63HANDLE_MDMP_STREAM_TYPE(0xFACE1CA7, FacebookLogcat)
64HANDLE_MDMP_STREAM_TYPE(0xFACECAFA, FacebookAppCustomData)
65HANDLE_MDMP_STREAM_TYPE(0xFACECAFB, FacebookBuildID)
66HANDLE_MDMP_STREAM_TYPE(0xFACECAFC, FacebookAppVersionName)
67HANDLE_MDMP_STREAM_TYPE(0xFACECAFD, FacebookJavaStack)
68HANDLE_MDMP_STREAM_TYPE(0xFACECAFE, FacebookDalvikInfo)
69HANDLE_MDMP_STREAM_TYPE(0xFACECAFF, FacebookUnwindSymbols)
70HANDLE_MDMP_STREAM_TYPE(0xFACECB00, FacebookDumpErrorLog)
71HANDLE_MDMP_STREAM_TYPE(0xFACECCCC, FacebookAppStateLog)
72HANDLE_MDMP_STREAM_TYPE(0xFACEDEAD, FacebookAbortReason)
73HANDLE_MDMP_STREAM_TYPE(0xFACEE000, FacebookThreadName)
74
75HANDLE_MDMP_ARCH(0x0000, X86)      // PROCESSOR_ARCHITECTURE_INTEL
76HANDLE_MDMP_ARCH(0x0001, MIPS)     // PROCESSOR_ARCHITECTURE_MIPS
77HANDLE_MDMP_ARCH(0x0002, Alpha)    // PROCESSOR_ARCHITECTURE_ALPHA
78HANDLE_MDMP_ARCH(0x0003, PPC)      // PROCESSOR_ARCHITECTURE_PPC
79HANDLE_MDMP_ARCH(0x0004, SHX)      // PROCESSOR_ARCHITECTURE_SHX (Super-H)
80HANDLE_MDMP_ARCH(0x0005, ARM)      // PROCESSOR_ARCHITECTURE_ARM
81HANDLE_MDMP_ARCH(0x0006, IA64)     // PROCESSOR_ARCHITECTURE_IA64
82HANDLE_MDMP_ARCH(0x0007, Alpha64)  // PROCESSOR_ARCHITECTURE_ALPHA64
83HANDLE_MDMP_ARCH(0x0008, MSIL)     // PROCESSOR_ARCHITECTURE_MSIL
84HANDLE_MDMP_ARCH(0x0009, AMD64)    // PROCESSOR_ARCHITECTURE_AMD64
85HANDLE_MDMP_ARCH(0x000a, X86Win64) // PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
86HANDLE_MDMP_ARCH(0x8001, SPARC)    // Breakpad-defined value for SPARC
87HANDLE_MDMP_ARCH(0x8002, PPC64)    // Breakpad-defined value for PPC64
88HANDLE_MDMP_ARCH(0x8003, ARM64)    // Breakpad-defined value for ARM64
89HANDLE_MDMP_ARCH(0x8004, MIPS64)   // Breakpad-defined value for MIPS64
90
91HANDLE_MDMP_PLATFORM(0x0000, Win32S) // Win32 on Windows 3.1
92HANDLE_MDMP_PLATFORM(0x0001, Win32Windows) // Windows 95-98-Me
93HANDLE_MDMP_PLATFORM(0x0002, Win32NT) // Windows NT, 2000+
94HANDLE_MDMP_PLATFORM(0x0003, Win32CE) // Windows CE, Windows Mobile, "Handheld"
95// Breakpad-defined values.
96HANDLE_MDMP_PLATFORM(0x8000, Unix) // Generic Unix-ish
97HANDLE_MDMP_PLATFORM(0x8101, MacOSX) // Mac OS X/Darwin
98HANDLE_MDMP_PLATFORM(0x8102, IOS) // iOS
99HANDLE_MDMP_PLATFORM(0x8201, Linux) // Linux
100HANDLE_MDMP_PLATFORM(0x8202, Solaris) // Solaris
101HANDLE_MDMP_PLATFORM(0x8203, Android) // Android
102HANDLE_MDMP_PLATFORM(0x8204, PS3) // PS3
103HANDLE_MDMP_PLATFORM(0x8205, NaCl) // Native Client (NaCl)
104
105#undef HANDLE_MDMP_STREAM_TYPE
106#undef HANDLE_MDMP_ARCH
107#undef HANDLE_MDMP_PLATFORM
108