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

Side by Side Diff: third_party/crashpad/crashpad/client/capture_context_mac_test.cc

Issue 2555353002: Update Crashpad to 32981a3ee9d7c2769fb27afa038fe2e194cfa329 (Closed)
Patch Set: fix readme Created 4 years 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
OLDNEW
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 #include "client/capture_context_mac.h" 15 #include "client/capture_context_mac.h"
16 16
17 #include <mach/mach.h> 17 #include <mach/mach.h>
18 #include <stdint.h> 18 #include <stdint.h>
19 19
20 #include <algorithm> 20 #include <algorithm>
21 21
22 #include "build/build_config.h" 22 #include "build/build_config.h"
23 #include "gtest/gtest.h" 23 #include "gtest/gtest.h"
24 #include "util/misc/address_sanitizer.h"
24 #include "util/misc/implicit_cast.h" 25 #include "util/misc/implicit_cast.h"
25 26
26 namespace crashpad { 27 namespace crashpad {
27 namespace test { 28 namespace test {
28 namespace { 29 namespace {
29 30
30 // If the context structure has fields that tell whether it’s valid, such as 31 // If the context structure has fields that tell whether it’s valid, such as
31 // magic numbers or size fields, sanity-checks those fields for validity with 32 // magic numbers or size fields, sanity-checks those fields for validity with
32 // fatal gtest assertions. For other fields, where it’s possible to reason about 33 // fatal gtest assertions. For other fields, where it’s possible to reason about
33 // their validity based solely on their contents, sanity-checks via nonfatal 34 // their validity based solely on their contents, sanity-checks via nonfatal
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 97
97 { 98 {
98 SCOPED_TRACE("context_1"); 99 SCOPED_TRACE("context_1");
99 ASSERT_NO_FATAL_FAILURE(SanityCheckContext(context_1)); 100 ASSERT_NO_FATAL_FAILURE(SanityCheckContext(context_1));
100 } 101 }
101 102
102 // The program counter reference value is this function’s address. The 103 // The program counter reference value is this function’s address. The
103 // captured program counter should be slightly greater than or equal to the 104 // captured program counter should be slightly greater than or equal to the
104 // reference program counter. 105 // reference program counter.
105 uintptr_t pc = ProgramCounterFromContext(context_1); 106 uintptr_t pc = ProgramCounterFromContext(context_1);
106 #if !__has_feature(address_sanitizer) 107
108 #if !defined(ADDRESS_SANITIZER)
107 // AddressSanitizer can cause enough code bloat that the “nearby” check would 109 // AddressSanitizer can cause enough code bloat that the “nearby” check would
108 // likely fail. 110 // likely fail.
109 const uintptr_t kReferencePC = 111 const uintptr_t kReferencePC =
110 reinterpret_cast<uintptr_t>(TestCaptureContext); 112 reinterpret_cast<uintptr_t>(TestCaptureContext);
111 EXPECT_LT(pc - kReferencePC, 64u); 113 EXPECT_LT(pc - kReferencePC, 64u);
112 #endif 114 #endif // !defined(ADDRESS_SANITIZER)
113 115
114 // Declare sp and context_2 here because all local variables need to be 116 // Declare sp and context_2 here because all local variables need to be
115 // declared before computing the stack pointer reference value, so that the 117 // declared before computing the stack pointer reference value, so that the
116 // reference value can be the lowest value possible. 118 // reference value can be the lowest value possible.
117 uintptr_t sp; 119 uintptr_t sp;
118 NativeCPUContext context_2; 120 NativeCPUContext context_2;
119 121
120 // The stack pointer reference value is the lowest address of a local variable 122 // The stack pointer reference value is the lowest address of a local variable
121 // in this function. The captured program counter will be slightly less than 123 // in this function. The captured program counter will be slightly less than
122 // or equal to the reference stack pointer. 124 // or equal to the reference stack pointer.
(...skipping 20 matching lines...) Expand all
143 EXPECT_GT(ProgramCounterFromContext(context_2), pc); 145 EXPECT_GT(ProgramCounterFromContext(context_2), pc);
144 } 146 }
145 147
146 TEST(CaptureContextMac, CaptureContext) { 148 TEST(CaptureContextMac, CaptureContext) {
147 ASSERT_NO_FATAL_FAILURE(TestCaptureContext()); 149 ASSERT_NO_FATAL_FAILURE(TestCaptureContext());
148 } 150 }
149 151
150 } // namespace 152 } // namespace
151 } // namespace test 153 } // namespace test
152 } // namespace crashpad 154 } // namespace crashpad
OLDNEW
« no previous file with comments | « third_party/crashpad/crashpad/build/crashpad.gypi ('k') | third_party/crashpad/crashpad/client/crashpad_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698