Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(285)

Side by Side Diff: chrome_frame/crash_reporting/veh_test.h

Issue 10636046: Make chrome compile with the win8 sdk (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome_frame/crash_reporting/vectored_handler-impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 #ifndef CHROME_FRAME_CRASH_REPORTING_VEH_TEST_H_ 4 #ifndef CHROME_FRAME_CRASH_REPORTING_VEH_TEST_H_
5 #define CHROME_FRAME_CRASH_REPORTING_VEH_TEST_H_ 5 #define CHROME_FRAME_CRASH_REPORTING_VEH_TEST_H_
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include "base/logging.h" 8 #include "base/logging.h"
9 9
10 #ifndef EXCEPTION_CHAIN_END 10 #ifndef EXCEPTION_CHAIN_END
11 #define EXCEPTION_CHAIN_END ((struct _EXCEPTION_REGISTRATION_RECORD*)-1) 11 #define EXCEPTION_CHAIN_END ((struct _EXCEPTION_REGISTRATION_RECORD*)-1)
12 #if !defined(_WIN32_WINNT_WIN8)
12 typedef struct _EXCEPTION_REGISTRATION_RECORD { 13 typedef struct _EXCEPTION_REGISTRATION_RECORD {
13 struct _EXCEPTION_REGISTRATION_RECORD* Next; 14 struct _EXCEPTION_REGISTRATION_RECORD* Next;
14 PVOID Handler; 15 PVOID Handler;
15 } EXCEPTION_REGISTRATION_RECORD; 16 } EXCEPTION_REGISTRATION_RECORD;
17 // VEH handler flags settings.
18 // These are grabbed from winnt.h for PocketPC.
19 // Only EXCEPTION_NONCONTINUABLE in defined in "regular" winnt.h
20 // #define EXCEPTION_NONCONTINUABLE 0x1 // Noncontinuable exception
21 #define EXCEPTION_UNWINDING 0x2 // Unwind is in progress
22 #define EXCEPTION_EXIT_UNWIND 0x4 // Exit unwind is in progress
23 #define EXCEPTION_STACK_INVALID 0x8 // Stack out of limits or unaligned
24 #define EXCEPTION_NESTED_CALL 0x10 // Nested exception handler call
25 #define EXCEPTION_TARGET_UNWIND 0x20 // Target unwind in progress
26 #define EXCEPTION_COLLIDED_UNWIND 0x40 // Collided exception handler call
27
28 #define EXCEPTION_UNWIND (EXCEPTION_UNWINDING | EXCEPTION_EXIT_UNWIND | \
29 EXCEPTION_TARGET_UNWIND | EXCEPTION_COLLIDED_UNWIND)
30
31 #define IS_UNWINDING(Flag) (((Flag) & EXCEPTION_UNWIND) != 0)
32 #define IS_DISPATCHING(Flag) (((Flag) & EXCEPTION_UNWIND) == 0)
33 #define IS_TARGET_UNWIND(Flag) ((Flag) & EXCEPTION_TARGET_UNWIND)
34 #endif // !defined(_WIN32_WINNT_WIN8)
16 #endif // EXCEPTION_CHAIN_END 35 #endif // EXCEPTION_CHAIN_END
17 36
18 class ExceptionInfo : public _EXCEPTION_POINTERS { 37 class ExceptionInfo : public _EXCEPTION_POINTERS {
19 public: 38 public:
20 ExceptionInfo() { 39 ExceptionInfo() {
21 Clear(); 40 Clear();
22 } 41 }
23 42
24 ExceptionInfo(DWORD code, void* address) { 43 ExceptionInfo(DWORD code, void* address) {
25 Clear(); 44 Clear();
(...skipping 18 matching lines...) Expand all
44 } 63 }
45 }; 64 };
46 65
47 struct SEHChain { 66 struct SEHChain {
48 SEHChain(const void* p, ...) { 67 SEHChain(const void* p, ...) {
49 va_list vl; 68 va_list vl;
50 va_start(vl, p); 69 va_start(vl, p);
51 int i = 0; 70 int i = 0;
52 for (; p; ++i) { 71 for (; p; ++i) {
53 CHECK(i + 1 < arraysize(chain_)); 72 CHECK(i + 1 < arraysize(chain_));
54 chain_[i].Handler = const_cast<void*>(p); 73 chain_[i].Handler =
74 reinterpret_cast<PEXCEPTION_ROUTINE>(const_cast<void*>(p));
55 chain_[i].Next = &chain_[i + 1]; 75 chain_[i].Next = &chain_[i + 1];
56 p = va_arg(vl, const void*); 76 p = va_arg(vl, const void*);
57 } 77 }
58 78
59 chain_[i].Next = EXCEPTION_CHAIN_END; 79 chain_[i].Next = EXCEPTION_CHAIN_END;
60 } 80 }
61 81
62 EXCEPTION_REGISTRATION_RECORD chain_[25]; 82 EXCEPTION_REGISTRATION_RECORD chain_[25];
63 }; 83 };
64 84
65 struct StackHelper { 85 struct StackHelper {
66 StackHelper(const void* p, ...) { 86 StackHelper(const void* p, ...) {
67 va_list vl; 87 va_list vl;
68 va_start(vl, p); 88 va_start(vl, p);
69 count_ = 0; 89 count_ = 0;
70 for (; p; ++count_) { 90 for (; p; ++count_) {
71 CHECK(count_ < arraysize(stack_)); 91 CHECK(count_ < arraysize(stack_));
72 stack_[count_] = p; 92 stack_[count_] = p;
73 p = va_arg(vl, const void*); 93 p = va_arg(vl, const void*);
74 } 94 }
75 } 95 }
76 const void* stack_[64]; 96 const void* stack_[64];
77 WORD count_; 97 WORD count_;
78 }; 98 };
79 99
80 #endif // CHROME_FRAME_CRASH_REPORTING_VEH_TEST_H_ 100 #endif // CHROME_FRAME_CRASH_REPORTING_VEH_TEST_H_
OLDNEW
« no previous file with comments | « chrome_frame/crash_reporting/vectored_handler-impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698