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

Side by Side Diff: minidump/minidump_module_writer_test.cc

Issue 674153002: minidump: Change the ownership model (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Rebase Created 6 years, 1 month 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,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 ASSERT_EQ(kMinidumpStreamTypeModuleList, directory[0].StreamType); 52 ASSERT_EQ(kMinidumpStreamTypeModuleList, directory[0].StreamType);
53 EXPECT_EQ(kModuleListStreamOffset, directory[0].Location.Rva); 53 EXPECT_EQ(kModuleListStreamOffset, directory[0].Location.Rva);
54 54
55 *module_list = MinidumpWritableAtLocationDescriptor<MINIDUMP_MODULE_LIST>( 55 *module_list = MinidumpWritableAtLocationDescriptor<MINIDUMP_MODULE_LIST>(
56 file_contents, directory[0].Location); 56 file_contents, directory[0].Location);
57 ASSERT_TRUE(module_list); 57 ASSERT_TRUE(module_list);
58 } 58 }
59 59
60 TEST(MinidumpModuleWriter, EmptyModuleList) { 60 TEST(MinidumpModuleWriter, EmptyModuleList) {
61 MinidumpFileWriter minidump_file_writer; 61 MinidumpFileWriter minidump_file_writer;
62 MinidumpModuleListWriter module_list_writer; 62 auto module_list_writer = make_scoped_ptr(new MinidumpModuleListWriter());
63 63
64 minidump_file_writer.AddStream(&module_list_writer); 64 minidump_file_writer.AddStream(module_list_writer.Pass());
65 65
66 StringFileWriter file_writer; 66 StringFileWriter file_writer;
67 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); 67 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
68 68
69 ASSERT_EQ(sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) + 69 ASSERT_EQ(sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) +
70 sizeof(MINIDUMP_MODULE_LIST), 70 sizeof(MINIDUMP_MODULE_LIST),
71 file_writer.string().size()); 71 file_writer.string().size());
72 72
73 const MINIDUMP_MODULE_LIST* module_list; 73 const MINIDUMP_MODULE_LIST* module_list;
74 ASSERT_NO_FATAL_FAILURE( 74 ASSERT_NO_FATAL_FAILURE(
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 258
259 ASSERT_NO_FATAL_FAILURE(ExpectMiscellaneousDebugRecord(&observed->MiscRecord, 259 ASSERT_NO_FATAL_FAILURE(ExpectMiscellaneousDebugRecord(&observed->MiscRecord,
260 file_contents, 260 file_contents,
261 expected_debug_name, 261 expected_debug_name,
262 expected_debug_type, 262 expected_debug_type,
263 expected_debug_utf16)); 263 expected_debug_utf16));
264 } 264 }
265 265
266 TEST(MinidumpModuleWriter, EmptyModule) { 266 TEST(MinidumpModuleWriter, EmptyModule) {
267 MinidumpFileWriter minidump_file_writer; 267 MinidumpFileWriter minidump_file_writer;
268 MinidumpModuleListWriter module_list_writer; 268 auto module_list_writer = make_scoped_ptr(new MinidumpModuleListWriter());
269 269
270 const char kModuleName[] = "test_executable"; 270 const char kModuleName[] = "test_executable";
271 271
272 MinidumpModuleWriter module_writer; 272 auto module_writer = make_scoped_ptr(new MinidumpModuleWriter());
273 module_writer.SetName(kModuleName); 273 module_writer->SetName(kModuleName);
274 274
275 module_list_writer.AddModule(&module_writer); 275 module_list_writer->AddModule(module_writer.Pass());
276 minidump_file_writer.AddStream(&module_list_writer); 276 minidump_file_writer.AddStream(module_list_writer.Pass());
277 277
278 StringFileWriter file_writer; 278 StringFileWriter file_writer;
279 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); 279 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
280 280
281 ASSERT_GT(file_writer.string().size(), 281 ASSERT_GT(file_writer.string().size(),
282 sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) + 282 sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) +
283 sizeof(MINIDUMP_MODULE_LIST) + 1 * sizeof(MINIDUMP_MODULE)); 283 sizeof(MINIDUMP_MODULE_LIST) + 1 * sizeof(MINIDUMP_MODULE));
284 284
285 const MINIDUMP_MODULE_LIST* module_list; 285 const MINIDUMP_MODULE_LIST* module_list;
286 ASSERT_NO_FATAL_FAILURE( 286 ASSERT_NO_FATAL_FAILURE(
(...skipping 10 matching lines...) Expand all
297 nullptr, 297 nullptr,
298 0, 298 0,
299 0, 299 0,
300 nullptr, 300 nullptr,
301 0, 301 0,
302 false)); 302 false));
303 } 303 }
304 304
305 TEST(MinidumpModuleWriter, OneModule) { 305 TEST(MinidumpModuleWriter, OneModule) {
306 MinidumpFileWriter minidump_file_writer; 306 MinidumpFileWriter minidump_file_writer;
307 MinidumpModuleListWriter module_list_writer; 307 auto module_list_writer = make_scoped_ptr(new MinidumpModuleListWriter());
308 308
309 const char kModuleName[] = "statically_linked"; 309 const char kModuleName[] = "statically_linked";
310 const uint64_t kModuleBase = 0x10da69000; 310 const uint64_t kModuleBase = 0x10da69000;
311 const uint32_t kModuleSize = 0x1000; 311 const uint32_t kModuleSize = 0x1000;
312 const uint32_t kChecksum = 0x76543210; 312 const uint32_t kChecksum = 0x76543210;
313 const time_t kTimestamp = 0x386d4380; 313 const time_t kTimestamp = 0x386d4380;
314 const uint32_t kFileVersionMS = 0x00010002; 314 const uint32_t kFileVersionMS = 0x00010002;
315 const uint32_t kFileVersionLS = 0x00030004; 315 const uint32_t kFileVersionLS = 0x00030004;
316 const uint32_t kProductVersionMS = 0x00050006; 316 const uint32_t kProductVersionMS = 0x00050006;
317 const uint32_t kProductVersionLS = 0x00070008; 317 const uint32_t kProductVersionLS = 0x00070008;
318 const uint32_t kFileFlagsMask = VS_FF_DEBUG | VS_FF_PRERELEASE | 318 const uint32_t kFileFlagsMask = VS_FF_DEBUG | VS_FF_PRERELEASE |
319 VS_FF_PATCHED | VS_FF_PRIVATEBUILD | 319 VS_FF_PATCHED | VS_FF_PRIVATEBUILD |
320 VS_FF_INFOINFERRED | VS_FF_SPECIALBUILD; 320 VS_FF_INFOINFERRED | VS_FF_SPECIALBUILD;
321 const uint32_t kFileFlags = VS_FF_PRIVATEBUILD | VS_FF_SPECIALBUILD; 321 const uint32_t kFileFlags = VS_FF_PRIVATEBUILD | VS_FF_SPECIALBUILD;
322 const uint32_t kFileOS = VOS_DOS; 322 const uint32_t kFileOS = VOS_DOS;
323 const uint32_t kFileType = VFT_DRV; 323 const uint32_t kFileType = VFT_DRV;
324 const uint32_t kFileSubtype = VFT2_DRV_KEYBOARD; 324 const uint32_t kFileSubtype = VFT2_DRV_KEYBOARD;
325 const char kPDBName[] = "statical.pdb"; 325 const char kPDBName[] = "statical.pdb";
326 const uint8_t kPDBUUIDBytes[16] = 326 const uint8_t kPDBUUIDBytes[16] =
327 {0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 327 {0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
328 0x08, 0x19, 0x2a, 0x3b, 0x4c, 0x5d, 0x6e, 0x7f}; 328 0x08, 0x19, 0x2a, 0x3b, 0x4c, 0x5d, 0x6e, 0x7f};
329 UUID pdb_uuid; 329 UUID pdb_uuid;
330 pdb_uuid.InitializeFromBytes(kPDBUUIDBytes); 330 pdb_uuid.InitializeFromBytes(kPDBUUIDBytes);
331 const uint32_t kPDBAge = 1; 331 const uint32_t kPDBAge = 1;
332 const uint32_t kDebugType = IMAGE_DEBUG_MISC_EXENAME; 332 const uint32_t kDebugType = IMAGE_DEBUG_MISC_EXENAME;
333 const char kDebugName[] = "statical.dbg"; 333 const char kDebugName[] = "statical.dbg";
334 const bool kDebugUTF16 = false; 334 const bool kDebugUTF16 = false;
335 335
336 MinidumpModuleWriter module_writer; 336 auto module_writer = make_scoped_ptr(new MinidumpModuleWriter());
337 module_writer.SetName(kModuleName); 337 module_writer->SetName(kModuleName);
338 module_writer.SetImageBaseAddress(kModuleBase); 338 module_writer->SetImageBaseAddress(kModuleBase);
339 module_writer.SetImageSize(kModuleSize); 339 module_writer->SetImageSize(kModuleSize);
340 module_writer.SetChecksum(kChecksum); 340 module_writer->SetChecksum(kChecksum);
341 module_writer.SetTimestamp(kTimestamp); 341 module_writer->SetTimestamp(kTimestamp);
342 module_writer.SetFileVersion(kFileVersionMS >> 16, 342 module_writer->SetFileVersion(kFileVersionMS >> 16,
343 kFileVersionMS & 0xffff, 343 kFileVersionMS & 0xffff,
344 kFileVersionLS >> 16, 344 kFileVersionLS >> 16,
345 kFileVersionLS & 0xffff); 345 kFileVersionLS & 0xffff);
346 module_writer.SetProductVersion(kProductVersionMS >> 16, 346 module_writer->SetProductVersion(kProductVersionMS >> 16,
347 kProductVersionMS & 0xffff, 347 kProductVersionMS & 0xffff,
348 kProductVersionLS >> 16, 348 kProductVersionLS >> 16,
349 kProductVersionLS & 0xffff); 349 kProductVersionLS & 0xffff);
350 module_writer.SetFileFlagsAndMask(kFileFlags, kFileFlagsMask); 350 module_writer->SetFileFlagsAndMask(kFileFlags, kFileFlagsMask);
351 module_writer.SetFileOS(kFileOS); 351 module_writer->SetFileOS(kFileOS);
352 module_writer.SetFileTypeAndSubtype(kFileType, kFileSubtype); 352 module_writer->SetFileTypeAndSubtype(kFileType, kFileSubtype);
353 353
354 MinidumpModuleCodeViewRecordPDB70Writer codeview_pdb70_writer; 354 auto codeview_pdb70_writer =
355 codeview_pdb70_writer.SetPDBName(kPDBName); 355 make_scoped_ptr(new MinidumpModuleCodeViewRecordPDB70Writer());
356 codeview_pdb70_writer.SetUUIDAndAge(pdb_uuid, kPDBAge); 356 codeview_pdb70_writer->SetPDBName(kPDBName);
357 module_writer.SetCodeViewRecord(&codeview_pdb70_writer); 357 codeview_pdb70_writer->SetUUIDAndAge(pdb_uuid, kPDBAge);
358 module_writer->SetCodeViewRecord(codeview_pdb70_writer.Pass());
358 359
359 MinidumpModuleMiscDebugRecordWriter misc_debug_writer; 360 auto misc_debug_writer =
360 misc_debug_writer.SetDataType(kDebugType); 361 make_scoped_ptr(new MinidumpModuleMiscDebugRecordWriter());
361 misc_debug_writer.SetData(kDebugName, kDebugUTF16); 362 misc_debug_writer->SetDataType(kDebugType);
362 module_writer.SetMiscDebugRecord(&misc_debug_writer); 363 misc_debug_writer->SetData(kDebugName, kDebugUTF16);
364 module_writer->SetMiscDebugRecord(misc_debug_writer.Pass());
363 365
364 module_list_writer.AddModule(&module_writer); 366 module_list_writer->AddModule(module_writer.Pass());
365 minidump_file_writer.AddStream(&module_list_writer); 367 minidump_file_writer.AddStream(module_list_writer.Pass());
366 368
367 StringFileWriter file_writer; 369 StringFileWriter file_writer;
368 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); 370 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
369 371
370 ASSERT_GT(file_writer.string().size(), 372 ASSERT_GT(file_writer.string().size(),
371 sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) + 373 sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) +
372 sizeof(MINIDUMP_MODULE_LIST) + 1 * sizeof(MINIDUMP_MODULE)); 374 sizeof(MINIDUMP_MODULE_LIST) + 1 * sizeof(MINIDUMP_MODULE));
373 375
374 const MINIDUMP_MODULE_LIST* module_list; 376 const MINIDUMP_MODULE_LIST* module_list;
375 ASSERT_NO_FATAL_FAILURE( 377 ASSERT_NO_FATAL_FAILURE(
(...skipping 28 matching lines...) Expand all
404 kDebugType, 406 kDebugType,
405 kDebugUTF16)); 407 kDebugUTF16));
406 } 408 }
407 409
408 TEST(MinidumpModuleWriter, OneModule_CodeViewUsesPDB20_MiscUsesUTF16) { 410 TEST(MinidumpModuleWriter, OneModule_CodeViewUsesPDB20_MiscUsesUTF16) {
409 // MinidumpModuleWriter.OneModule tested with a PDB 7.0 link as the CodeView 411 // MinidumpModuleWriter.OneModule tested with a PDB 7.0 link as the CodeView
410 // record and an IMAGE_DEBUG_MISC record in UTF-8. This test exercises the 412 // record and an IMAGE_DEBUG_MISC record in UTF-8. This test exercises the
411 // alternatives, a PDB 2.0 link as the CodeView record and an IMAGE_DEBUG_MISC 413 // alternatives, a PDB 2.0 link as the CodeView record and an IMAGE_DEBUG_MISC
412 // record with UTF-16 data. 414 // record with UTF-16 data.
413 MinidumpFileWriter minidump_file_writer; 415 MinidumpFileWriter minidump_file_writer;
414 MinidumpModuleListWriter module_list_writer; 416 auto module_list_writer = make_scoped_ptr(new MinidumpModuleListWriter());
415 417
416 const char kModuleName[] = "dinosaur"; 418 const char kModuleName[] = "dinosaur";
417 const char kPDBName[] = "d1n05.pdb"; 419 const char kPDBName[] = "d1n05.pdb";
418 const time_t kPDBTimestamp = 0x386d4380; 420 const time_t kPDBTimestamp = 0x386d4380;
419 const uint32_t kPDBAge = 1; 421 const uint32_t kPDBAge = 1;
420 const uint32_t kDebugType = IMAGE_DEBUG_MISC_EXENAME; 422 const uint32_t kDebugType = IMAGE_DEBUG_MISC_EXENAME;
421 const char kDebugName[] = "d1n05.dbg"; 423 const char kDebugName[] = "d1n05.dbg";
422 const bool kDebugUTF16 = true; 424 const bool kDebugUTF16 = true;
423 425
424 MinidumpModuleWriter module_writer; 426 auto module_writer = make_scoped_ptr(new MinidumpModuleWriter());
425 module_writer.SetName(kModuleName); 427 module_writer->SetName(kModuleName);
426 428
427 MinidumpModuleCodeViewRecordPDB20Writer codeview_pdb20_writer; 429 auto codeview_pdb20_writer =
428 codeview_pdb20_writer.SetPDBName(kPDBName); 430 make_scoped_ptr(new MinidumpModuleCodeViewRecordPDB20Writer());
429 codeview_pdb20_writer.SetTimestampAndAge(kPDBTimestamp, kPDBAge); 431 codeview_pdb20_writer->SetPDBName(kPDBName);
430 module_writer.SetCodeViewRecord(&codeview_pdb20_writer); 432 codeview_pdb20_writer->SetTimestampAndAge(kPDBTimestamp, kPDBAge);
433 module_writer->SetCodeViewRecord(codeview_pdb20_writer.Pass());
431 434
432 MinidumpModuleMiscDebugRecordWriter misc_debug_writer; 435 auto misc_debug_writer =
433 misc_debug_writer.SetDataType(kDebugType); 436 make_scoped_ptr(new MinidumpModuleMiscDebugRecordWriter());
434 misc_debug_writer.SetData(kDebugName, kDebugUTF16); 437 misc_debug_writer->SetDataType(kDebugType);
435 module_writer.SetMiscDebugRecord(&misc_debug_writer); 438 misc_debug_writer->SetData(kDebugName, kDebugUTF16);
439 module_writer->SetMiscDebugRecord(misc_debug_writer.Pass());
436 440
437 module_list_writer.AddModule(&module_writer); 441 module_list_writer->AddModule(module_writer.Pass());
438 minidump_file_writer.AddStream(&module_list_writer); 442 minidump_file_writer.AddStream(module_list_writer.Pass());
439 443
440 StringFileWriter file_writer; 444 StringFileWriter file_writer;
441 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); 445 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
442 446
443 ASSERT_GT(file_writer.string().size(), 447 ASSERT_GT(file_writer.string().size(),
444 sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) + 448 sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) +
445 sizeof(MINIDUMP_MODULE_LIST) + 1 * sizeof(MINIDUMP_MODULE)); 449 sizeof(MINIDUMP_MODULE_LIST) + 1 * sizeof(MINIDUMP_MODULE));
446 450
447 const MINIDUMP_MODULE_LIST* module_list; 451 const MINIDUMP_MODULE_LIST* module_list;
448 ASSERT_NO_FATAL_FAILURE( 452 ASSERT_NO_FATAL_FAILURE(
(...skipping 14 matching lines...) Expand all
463 kDebugName, 467 kDebugName,
464 kDebugType, 468 kDebugType,
465 kDebugUTF16)); 469 kDebugUTF16));
466 } 470 }
467 471
468 TEST(MinidumpModuleWriter, ThreeModules) { 472 TEST(MinidumpModuleWriter, ThreeModules) {
469 // As good exercise, this test uses three modules, one with a PDB 7.0 link as 473 // As good exercise, this test uses three modules, one with a PDB 7.0 link as
470 // its CodeView record, one with no CodeView record, and one with a PDB 2.0 474 // its CodeView record, one with no CodeView record, and one with a PDB 2.0
471 // link as its CodeView record. 475 // link as its CodeView record.
472 MinidumpFileWriter minidump_file_writer; 476 MinidumpFileWriter minidump_file_writer;
473 MinidumpModuleListWriter module_list_writer; 477 auto module_list_writer = make_scoped_ptr(new MinidumpModuleListWriter());
474 478
475 const char kModuleName0[] = "main"; 479 const char kModuleName0[] = "main";
476 const uint64_t kModuleBase0 = 0x100101000; 480 const uint64_t kModuleBase0 = 0x100101000;
477 const uint32_t kModuleSize0 = 0xf000; 481 const uint32_t kModuleSize0 = 0xf000;
478 const char kPDBName0[] = "main"; 482 const char kPDBName0[] = "main";
479 const uint8_t kPDBUUIDBytes0[16] = 483 const uint8_t kPDBUUIDBytes0[16] =
480 {0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 484 {0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11,
481 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99}; 485 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99};
482 UUID pdb_uuid_0; 486 UUID pdb_uuid_0;
483 pdb_uuid_0.InitializeFromBytes(kPDBUUIDBytes0); 487 pdb_uuid_0.InitializeFromBytes(kPDBUUIDBytes0);
484 const uint32_t kPDBAge0 = 0; 488 const uint32_t kPDBAge0 = 0;
485 489
486 const char kModuleName1[] = "ld.so"; 490 const char kModuleName1[] = "ld.so";
487 const uint64_t kModuleBase1 = 0x200202000; 491 const uint64_t kModuleBase1 = 0x200202000;
488 const uint32_t kModuleSize1 = 0x1e000; 492 const uint32_t kModuleSize1 = 0x1e000;
489 493
490 const char kModuleName2[] = "libc.so"; 494 const char kModuleName2[] = "libc.so";
491 const uint64_t kModuleBase2 = 0x300303000; 495 const uint64_t kModuleBase2 = 0x300303000;
492 const uint32_t kModuleSize2 = 0x2d000; 496 const uint32_t kModuleSize2 = 0x2d000;
493 const char kPDBName2[] = "libc.so"; 497 const char kPDBName2[] = "libc.so";
494 const time_t kPDBTimestamp2 = 0x386d4380; 498 const time_t kPDBTimestamp2 = 0x386d4380;
495 const uint32_t kPDBAge2 = 2; 499 const uint32_t kPDBAge2 = 2;
496 500
497 MinidumpModuleWriter module_writer_0; 501 auto module_writer_0 = make_scoped_ptr(new MinidumpModuleWriter());
498 module_writer_0.SetName(kModuleName0); 502 module_writer_0->SetName(kModuleName0);
499 module_writer_0.SetImageBaseAddress(kModuleBase0); 503 module_writer_0->SetImageBaseAddress(kModuleBase0);
500 module_writer_0.SetImageSize(kModuleSize0); 504 module_writer_0->SetImageSize(kModuleSize0);
501 505
502 MinidumpModuleCodeViewRecordPDB70Writer codeview_pdb70_writer_0; 506 auto codeview_pdb70_writer_0 =
503 codeview_pdb70_writer_0.SetPDBName(kPDBName0); 507 make_scoped_ptr(new MinidumpModuleCodeViewRecordPDB70Writer());
504 codeview_pdb70_writer_0.SetUUIDAndAge(pdb_uuid_0, kPDBAge0); 508 codeview_pdb70_writer_0->SetPDBName(kPDBName0);
505 module_writer_0.SetCodeViewRecord(&codeview_pdb70_writer_0); 509 codeview_pdb70_writer_0->SetUUIDAndAge(pdb_uuid_0, kPDBAge0);
510 module_writer_0->SetCodeViewRecord(codeview_pdb70_writer_0.Pass());
506 511
507 module_list_writer.AddModule(&module_writer_0); 512 module_list_writer->AddModule(module_writer_0.Pass());
508 513
509 MinidumpModuleWriter module_writer_1; 514 auto module_writer_1 = make_scoped_ptr(new MinidumpModuleWriter());
510 module_writer_1.SetName(kModuleName1); 515 module_writer_1->SetName(kModuleName1);
511 module_writer_1.SetImageBaseAddress(kModuleBase1); 516 module_writer_1->SetImageBaseAddress(kModuleBase1);
512 module_writer_1.SetImageSize(kModuleSize1); 517 module_writer_1->SetImageSize(kModuleSize1);
513 518
514 module_list_writer.AddModule(&module_writer_1); 519 module_list_writer->AddModule(module_writer_1.Pass());
515 520
516 MinidumpModuleWriter module_writer_2; 521 auto module_writer_2 = make_scoped_ptr(new MinidumpModuleWriter());
517 module_writer_2.SetName(kModuleName2); 522 module_writer_2->SetName(kModuleName2);
518 module_writer_2.SetImageBaseAddress(kModuleBase2); 523 module_writer_2->SetImageBaseAddress(kModuleBase2);
519 module_writer_2.SetImageSize(kModuleSize2); 524 module_writer_2->SetImageSize(kModuleSize2);
520 525
521 MinidumpModuleCodeViewRecordPDB20Writer codeview_pdb70_writer_2; 526 auto codeview_pdb70_writer_2 =
522 codeview_pdb70_writer_2.SetPDBName(kPDBName2); 527 make_scoped_ptr(new MinidumpModuleCodeViewRecordPDB20Writer());
523 codeview_pdb70_writer_2.SetTimestampAndAge(kPDBTimestamp2, kPDBAge2); 528 codeview_pdb70_writer_2->SetPDBName(kPDBName2);
524 module_writer_2.SetCodeViewRecord(&codeview_pdb70_writer_2); 529 codeview_pdb70_writer_2->SetTimestampAndAge(kPDBTimestamp2, kPDBAge2);
530 module_writer_2->SetCodeViewRecord(codeview_pdb70_writer_2.Pass());
525 531
526 module_list_writer.AddModule(&module_writer_2); 532 module_list_writer->AddModule(module_writer_2.Pass());
527 533
528 minidump_file_writer.AddStream(&module_list_writer); 534 minidump_file_writer.AddStream(module_list_writer.Pass());
529 535
530 StringFileWriter file_writer; 536 StringFileWriter file_writer;
531 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); 537 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
532 538
533 ASSERT_GT(file_writer.string().size(), 539 ASSERT_GT(file_writer.string().size(),
534 sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) + 540 sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) +
535 sizeof(MINIDUMP_MODULE_LIST) + 1 * sizeof(MINIDUMP_MODULE)); 541 sizeof(MINIDUMP_MODULE_LIST) + 1 * sizeof(MINIDUMP_MODULE));
536 542
537 const MINIDUMP_MODULE_LIST* module_list; 543 const MINIDUMP_MODULE_LIST* module_list;
538 ASSERT_NO_FATAL_FAILURE( 544 ASSERT_NO_FATAL_FAILURE(
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 kPDBTimestamp2, 601 kPDBTimestamp2,
596 kPDBAge2, 602 kPDBAge2,
597 nullptr, 603 nullptr,
598 0, 604 0,
599 false)); 605 false));
600 } 606 }
601 } 607 }
602 608
603 TEST(MinidumpSystemInfoWriterDeathTest, NoModuleName) { 609 TEST(MinidumpSystemInfoWriterDeathTest, NoModuleName) {
604 MinidumpFileWriter minidump_file_writer; 610 MinidumpFileWriter minidump_file_writer;
605 MinidumpModuleListWriter module_list_writer; 611 auto module_list_writer = make_scoped_ptr(new MinidumpModuleListWriter());
606 MinidumpModuleWriter module_writer; 612 auto module_writer = make_scoped_ptr(new MinidumpModuleWriter());
607 module_list_writer.AddModule(&module_writer); 613 module_list_writer->AddModule(module_writer.Pass());
608 minidump_file_writer.AddStream(&module_list_writer); 614 minidump_file_writer.AddStream(module_list_writer.Pass());
609 615
610 StringFileWriter file_writer; 616 StringFileWriter file_writer;
611 ASSERT_DEATH(minidump_file_writer.WriteEverything(&file_writer), "name_"); 617 ASSERT_DEATH(minidump_file_writer.WriteEverything(&file_writer), "name_");
612 } 618 }
613 619
614 } // namespace 620 } // namespace
615 } // namespace test 621 } // namespace test
616 } // namespace crashpad 622 } // namespace crashpad
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698