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, |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
13 // limitations under the License. | 13 // limitations under the License. |
14 | 14 |
15 #ifndef CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ | 15 #ifndef CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ |
16 #define CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ | 16 #define CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ |
17 | 17 |
18 #include <stdint.h> | 18 #include <stdint.h> |
19 | 19 |
20 #include "base/compiler_specific.h" | |
21 #include "snapshot/cpu_context.h" | 20 #include "snapshot/cpu_context.h" |
22 #include "util/numeric/int128.h" | 21 #include "util/numeric/int128.h" |
23 | 22 |
24 namespace crashpad { | 23 namespace crashpad { |
25 | 24 |
26 //! \brief Architecture-independent flags for `context_flags` fields in Minidump | 25 //! \brief Architecture-independent flags for `context_flags` fields in Minidump |
27 //! context structures. | 26 //! context structures. |
28 // | 27 // |
29 // http://zachsaw.blogspot.com/2010/11/wow64-bug-getthreadcontext-may-return.htm
l#c5639760895973344002 | 28 // http://zachsaw.blogspot.com/2010/11/wow64-bug-getthreadcontext-may-return.htm
l#c5639760895973344002 |
30 enum MinidumpContextFlags : uint32_t { | 29 enum MinidumpContextFlags : uint32_t { |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 //! file. | 246 //! file. |
248 //! | 247 //! |
249 //! This is analogous to the `CONTEXT` structure on Windows when targeting | 248 //! This is analogous to the `CONTEXT` structure on Windows when targeting |
250 //! x86_64. This structure is used instead of `CONTEXT` to make it available | 249 //! x86_64. This structure is used instead of `CONTEXT` to make it available |
251 //! when targeting other architectures. | 250 //! when targeting other architectures. |
252 //! | 251 //! |
253 //! \note This structure doesn’t carry `dr4` or `dr5`, which are obsolete and | 252 //! \note This structure doesn’t carry `dr4` or `dr5`, which are obsolete and |
254 //! normally alias `dr6` and `dr7`, respectively. See Intel Software | 253 //! normally alias `dr6` and `dr7`, respectively. See Intel Software |
255 //! Developer’s Manual, Volume 3B: System Programming, Part 2 (253669-052), | 254 //! Developer’s Manual, Volume 3B: System Programming, Part 2 (253669-052), |
256 //! 17.2.2 “Debug Registers DR4 and DR5”. | 255 //! 17.2.2 “Debug Registers DR4 and DR5”. |
257 struct ALIGNAS(16) MinidumpContextAMD64 { | 256 struct alignas(16) MinidumpContextAMD64 { |
258 //! \brief Register parameter home address. | 257 //! \brief Register parameter home address. |
259 //! | 258 //! |
260 //! On Windows, this field may contain the “home” address (on-stack, in the | 259 //! On Windows, this field may contain the “home” address (on-stack, in the |
261 //! shadow area) of a parameter passed by register. This field is present for | 260 //! shadow area) of a parameter passed by register. This field is present for |
262 //! convenience but is not necessarily populated, even if a corresponding | 261 //! convenience but is not necessarily populated, even if a corresponding |
263 //! parameter was passed by register. | 262 //! parameter was passed by register. |
264 //! | 263 //! |
265 //! \{ | 264 //! \{ |
266 uint64_t p1_home; | 265 uint64_t p1_home; |
267 uint64_t p2_home; | 266 uint64_t p2_home; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 uint64_t last_branch_to_rip; | 334 uint64_t last_branch_to_rip; |
336 uint64_t last_branch_from_rip; | 335 uint64_t last_branch_from_rip; |
337 uint64_t last_exception_to_rip; | 336 uint64_t last_exception_to_rip; |
338 uint64_t last_exception_from_rip; | 337 uint64_t last_exception_from_rip; |
339 //! \} | 338 //! \} |
340 }; | 339 }; |
341 | 340 |
342 } // namespace crashpad | 341 } // namespace crashpad |
343 | 342 |
344 #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ | 343 #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ |
OLD | NEW |