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

Side by Side Diff: base/debug/stack_trace_unittest.cc

Issue 11745003: GTTF: dump registers on crash on 64-bit Linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 4
5 #include <limits> 5 #include <limits>
6 #include <sstream> 6 #include <sstream>
7 #include <string> 7 #include <string>
8 8
9 #include "base/debug/stack_trace.h" 9 #include "base/debug/stack_trace.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 // of re-entering malloc. 144 // of re-entering malloc.
145 TEST_F(StackTraceTest, AsyncSignalUnsafeSignalHandlerHang) { 145 TEST_F(StackTraceTest, AsyncSignalUnsafeSignalHandlerHang) {
146 ProcessHandle child = this->SpawnChild("MismatchedMallocChildProcess", false); 146 ProcessHandle child = this->SpawnChild("MismatchedMallocChildProcess", false);
147 ASSERT_NE(kNullProcessHandle, child); 147 ASSERT_NE(kNullProcessHandle, child);
148 ASSERT_TRUE(WaitForSingleProcess(child, TestTimeouts::action_timeout())); 148 ASSERT_TRUE(WaitForSingleProcess(child, TestTimeouts::action_timeout()));
149 } 149 }
150 #endif // !defined(OS_IOS) 150 #endif // !defined(OS_IOS)
151 151
152 namespace { 152 namespace {
153 153
154 std::string itoa_r_wrapper(intptr_t i, size_t sz, int base) { 154 std::string itoa_r_wrapper(intptr_t i, size_t sz, int base, size_t padding) {
155 char buffer[1024]; 155 char buffer[1024];
156 CHECK_LE(sz, sizeof(buffer)); 156 CHECK_LE(sz, sizeof(buffer));
157 157
158 char* result = internal::itoa_r(i, buffer, sz, base); 158 char* result = internal::itoa_r(i, buffer, sz, base, padding);
159 EXPECT_TRUE(result); 159 EXPECT_TRUE(result);
160 return std::string(buffer); 160 return std::string(buffer);
161 } 161 }
162 162
163 } // namespace 163 } // namespace
164 164
165 TEST_F(StackTraceTest, itoa_r) { 165 TEST_F(StackTraceTest, itoa_r) {
166 EXPECT_EQ("0", itoa_r_wrapper(0, 128, 10)); 166 EXPECT_EQ("0", itoa_r_wrapper(0, 128, 10, 0));
167 EXPECT_EQ("-1", itoa_r_wrapper(-1, 128, 10)); 167 EXPECT_EQ("-1", itoa_r_wrapper(-1, 128, 10, 0));
168 168
169 // Test edge cases. 169 // Test edge cases.
170 if (sizeof(intptr_t) == 4) { 170 if (sizeof(intptr_t) == 4) {
171 EXPECT_EQ("ffffffff", itoa_r_wrapper(-1, 128, 16)); 171 EXPECT_EQ("ffffffff", itoa_r_wrapper(-1, 128, 16, 0));
172 EXPECT_EQ("-2147483648", 172 EXPECT_EQ("-2147483648",
173 itoa_r_wrapper(std::numeric_limits<intptr_t>::min(), 128, 10)); 173 itoa_r_wrapper(std::numeric_limits<intptr_t>::min(), 128, 10, 0));
174 EXPECT_EQ("2147483647", 174 EXPECT_EQ("2147483647",
175 itoa_r_wrapper(std::numeric_limits<intptr_t>::max(), 128, 10)); 175 itoa_r_wrapper(std::numeric_limits<intptr_t>::max(), 128, 10, 0));
176 176
177 EXPECT_EQ("80000000", 177 EXPECT_EQ("80000000",
178 itoa_r_wrapper(std::numeric_limits<intptr_t>::min(), 128, 16)); 178 itoa_r_wrapper(std::numeric_limits<intptr_t>::min(), 128, 16, 0));
179 EXPECT_EQ("7fffffff", 179 EXPECT_EQ("7fffffff",
180 itoa_r_wrapper(std::numeric_limits<intptr_t>::max(), 128, 16)); 180 itoa_r_wrapper(std::numeric_limits<intptr_t>::max(), 128, 16, 0));
181 } else if (sizeof(intptr_t) == 8) { 181 } else if (sizeof(intptr_t) == 8) {
182 EXPECT_EQ("ffffffffffffffff", itoa_r_wrapper(-1, 128, 16)); 182 EXPECT_EQ("ffffffffffffffff", itoa_r_wrapper(-1, 128, 16, 0));
183 EXPECT_EQ("-9223372036854775808", 183 EXPECT_EQ("-9223372036854775808",
184 itoa_r_wrapper(std::numeric_limits<intptr_t>::min(), 128, 10)); 184 itoa_r_wrapper(std::numeric_limits<intptr_t>::min(), 128, 10, 0));
185 EXPECT_EQ("9223372036854775807", 185 EXPECT_EQ("9223372036854775807",
186 itoa_r_wrapper(std::numeric_limits<intptr_t>::max(), 128, 10)); 186 itoa_r_wrapper(std::numeric_limits<intptr_t>::max(), 128, 10, 0));
187 187
188 EXPECT_EQ("8000000000000000", 188 EXPECT_EQ("8000000000000000",
189 itoa_r_wrapper(std::numeric_limits<intptr_t>::min(), 128, 16)); 189 itoa_r_wrapper(std::numeric_limits<intptr_t>::min(), 128, 16, 0));
190 EXPECT_EQ("7fffffffffffffff", 190 EXPECT_EQ("7fffffffffffffff",
191 itoa_r_wrapper(std::numeric_limits<intptr_t>::max(), 128, 16)); 191 itoa_r_wrapper(std::numeric_limits<intptr_t>::max(), 128, 16, 0));
192 } else { 192 } else {
193 ADD_FAILURE() << "Missing test case for your size of intptr_t (" 193 ADD_FAILURE() << "Missing test case for your size of intptr_t ("
194 << sizeof(intptr_t) << ")"; 194 << sizeof(intptr_t) << ")";
195 } 195 }
196 196
197 // Test hex output. 197 // Test hex output.
198 EXPECT_EQ("688", itoa_r_wrapper(0x688, 128, 16)); 198 EXPECT_EQ("688", itoa_r_wrapper(0x688, 128, 16, 0));
199 EXPECT_EQ("deadbeef", itoa_r_wrapper(0xdeadbeef, 128, 16)); 199 EXPECT_EQ("deadbeef", itoa_r_wrapper(0xdeadbeef, 128, 16, 0));
200 200
201 // Check that itoa_r respects passed buffer size limit. 201 // Check that itoa_r respects passed buffer size limit.
202 char buffer[1024]; 202 char buffer[1024];
203 EXPECT_TRUE(internal::itoa_r(0xdeadbeef, buffer, 10, 16)); 203 EXPECT_TRUE(internal::itoa_r(0xdeadbeef, buffer, 10, 16, 0));
204 EXPECT_TRUE(internal::itoa_r(0xdeadbeef, buffer, 9, 16)); 204 EXPECT_TRUE(internal::itoa_r(0xdeadbeef, buffer, 9, 16, 0));
205 EXPECT_FALSE(internal::itoa_r(0xdeadbeef, buffer, 8, 16)); 205 EXPECT_FALSE(internal::itoa_r(0xdeadbeef, buffer, 8, 16, 0));
206 EXPECT_FALSE(internal::itoa_r(0xdeadbeef, buffer, 7, 16)); 206 EXPECT_FALSE(internal::itoa_r(0xdeadbeef, buffer, 7, 16, 0));
207 EXPECT_TRUE(internal::itoa_r(0xbeef, buffer, 5, 16, 4));
208 EXPECT_FALSE(internal::itoa_r(0xbeef, buffer, 5, 16, 5));
209 EXPECT_FALSE(internal::itoa_r(0xbeef, buffer, 5, 16, 6));
210
211 // Test padding.
212 EXPECT_EQ("1", itoa_r_wrapper(1, 128, 10, 0));
213 EXPECT_EQ("1", itoa_r_wrapper(1, 128, 10, 1));
214 EXPECT_EQ("01", itoa_r_wrapper(1, 128, 10, 2));
215 EXPECT_EQ("001", itoa_r_wrapper(1, 128, 10, 3));
216 EXPECT_EQ("0001", itoa_r_wrapper(1, 128, 10, 4));
217 EXPECT_EQ("00001", itoa_r_wrapper(1, 128, 10, 5));
218 EXPECT_EQ("688", itoa_r_wrapper(0x688, 128, 16, 0));
219 EXPECT_EQ("688", itoa_r_wrapper(0x688, 128, 16, 1));
220 EXPECT_EQ("688", itoa_r_wrapper(0x688, 128, 16, 2));
221 EXPECT_EQ("688", itoa_r_wrapper(0x688, 128, 16, 3));
222 EXPECT_EQ("0688", itoa_r_wrapper(0x688, 128, 16, 4));
223 EXPECT_EQ("00688", itoa_r_wrapper(0x688, 128, 16, 5));
207 } 224 }
208 #endif // defined(OS_POSIX) && !defined(OS_ANDROID) 225 #endif // defined(OS_POSIX) && !defined(OS_ANDROID)
209 226
210 } // namespace debug 227 } // namespace debug
211 } // namespace base 228 } // namespace base
OLDNEW
« base/debug/stack_trace_posix.cc ('K') | « base/debug/stack_trace_posix.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698