| 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 |