OLD | NEW |
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 //! The `extended_registers` field is valid and contains `fxsave` data. | 105 //! The `extended_registers` field is valid and contains `fxsave` data. |
106 kMinidumpContextX86Extended = kMinidumpContextX86 | 0x00000020, | 106 kMinidumpContextX86Extended = kMinidumpContextX86 | 0x00000020, |
107 | 107 |
108 //! \brief Indicates the validity of `xsave` data (`CONTEXT_XSTATE`). | 108 //! \brief Indicates the validity of `xsave` data (`CONTEXT_XSTATE`). |
109 //! | 109 //! |
110 //! The context contains `xsave` data. This is used with an extended context | 110 //! The context contains `xsave` data. This is used with an extended context |
111 //! structure not currently defined here. | 111 //! structure not currently defined here. |
112 kMinidumpContextX86Xstate = kMinidumpContextX86 | 0x00000040, | 112 kMinidumpContextX86Xstate = kMinidumpContextX86 | 0x00000040, |
113 | 113 |
114 //! \brief Indicates the validity of control, integer, and segment registers. | 114 //! \brief Indicates the validity of control, integer, and segment registers. |
| 115 //! (`CONTEXT_FULL`). |
115 kMinidumpContextX86Full = kMinidumpContextX86Control | | 116 kMinidumpContextX86Full = kMinidumpContextX86Control | |
116 kMinidumpContextX86Integer | | 117 kMinidumpContextX86Integer | |
117 kMinidumpContextX86Segment, | 118 kMinidumpContextX86Segment, |
118 | 119 |
119 //! \brief Indicates the validity of all registers except `xsave` data. | 120 //! \brief Indicates the validity of all registers except `xsave` data. |
| 121 //! (`CONTEXT_ALL`). |
120 kMinidumpContextX86All = kMinidumpContextX86Full | | 122 kMinidumpContextX86All = kMinidumpContextX86Full | |
121 kMinidumpContextX86FloatingPoint | | 123 kMinidumpContextX86FloatingPoint | |
122 kMinidumpContextX86Debug | | 124 kMinidumpContextX86Debug | |
123 kMinidumpContextX86Extended, | 125 kMinidumpContextX86Extended, |
124 }; | 126 }; |
125 | 127 |
126 //! \brief A 32-bit x86 CPU context (register state) carried in a minidump file. | 128 //! \brief A 32-bit x86 CPU context (register state) carried in a minidump file. |
127 //! | 129 //! |
128 //! This is analogous to the `CONTEXT` structure on Windows when targeting | 130 //! This is analogous to the `CONTEXT` structure on Windows when targeting |
129 //! 32-bit x86. This structure is used instead of `CONTEXT` to make it available | 131 //! 32-bit x86. This structure is used instead of `CONTEXT` to make it available |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 //! \brief Indicates the validity of debug registers | 212 //! \brief Indicates the validity of debug registers |
211 //! (`CONTEXT_DEBUG_REGISTERS`). | 213 //! (`CONTEXT_DEBUG_REGISTERS`). |
212 //! | 214 //! |
213 //! The `dr0` through `dr3`, `dr6`, and `dr7` fields are valid. | 215 //! The `dr0` through `dr3`, `dr6`, and `dr7` fields are valid. |
214 kMinidumpContextAMD64Debug = kMinidumpContextAMD64 | 0x00000010, | 216 kMinidumpContextAMD64Debug = kMinidumpContextAMD64 | 0x00000010, |
215 | 217 |
216 //! \brief Indicates the validity of `xsave` data (`CONTEXT_XSTATE`). | 218 //! \brief Indicates the validity of `xsave` data (`CONTEXT_XSTATE`). |
217 //! | 219 //! |
218 //! The context contains `xsave` data. This is used with an extended context | 220 //! The context contains `xsave` data. This is used with an extended context |
219 //! structure not currently defined here. | 221 //! structure not currently defined here. |
220 kMinidumpContextX86Xstate = kMinidumpContextAMD64 | 0x00000040, | 222 kMinidumpContextAMD64Xstate = kMinidumpContextAMD64 | 0x00000040, |
221 | 223 |
222 //! \brief Indicates the validity of control, integer, and segment registers. | 224 //! \brief Indicates the validity of control, integer, and floating-point |
| 225 //! registers (`CONTEXT_FULL`). |
223 kMinidumpContextAMD64Full = kMinidumpContextAMD64Control | | 226 kMinidumpContextAMD64Full = kMinidumpContextAMD64Control | |
224 kMinidumpContextAMD64Integer | | 227 kMinidumpContextAMD64Integer | |
225 kMinidumpContextAMD64Segment, | 228 kMinidumpContextAMD64FloatingPoint, |
226 | 229 |
227 //! \brief Indicates the validity of all registers except `xsave` data. | 230 //! \brief Indicates the validity of all registers except `xsave` data |
| 231 //! (`CONTEXT_ALL`). |
228 kMinidumpContextAMD64All = kMinidumpContextAMD64Full | | 232 kMinidumpContextAMD64All = kMinidumpContextAMD64Full | |
229 kMinidumpContextAMD64FloatingPoint | | 233 kMinidumpContextAMD64Segment | |
230 kMinidumpContextAMD64Debug, | 234 kMinidumpContextAMD64Debug, |
231 }; | 235 }; |
232 | 236 |
233 //! \brief An x86_64 (AMD64) CPU context (register state) carried in a minidump | 237 //! \brief An x86_64 (AMD64) CPU context (register state) carried in a minidump |
234 //! file. | 238 //! file. |
235 //! | 239 //! |
236 //! This is analogous to the `CONTEXT` structure on Windows when targeting | 240 //! This is analogous to the `CONTEXT` structure on Windows when targeting |
237 //! x86_64. This structure is used instead of `CONTEXT` to make it available | 241 //! x86_64. This structure is used instead of `CONTEXT` to make it available |
238 //! when targeting other architectures. | 242 //! when targeting other architectures. |
239 struct __attribute__((aligned(16))) MinidumpContextAMD64 { | 243 struct __attribute__((aligned(16))) MinidumpContextAMD64 { |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 uint64_t last_branch_to_rip; | 358 uint64_t last_branch_to_rip; |
355 uint64_t last_branch_from_rip; | 359 uint64_t last_branch_from_rip; |
356 uint64_t last_exception_to_rip; | 360 uint64_t last_exception_to_rip; |
357 uint64_t last_exception_from_rip; | 361 uint64_t last_exception_from_rip; |
358 //! \} | 362 //! \} |
359 }; | 363 }; |
360 | 364 |
361 } // namespace crashpad | 365 } // namespace crashpad |
362 | 366 |
363 #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ | 367 #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ |
OLD | NEW |