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, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |