| 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 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 const MachHeader* mh_execute_header = | 503 const MachHeader* mh_execute_header = |
| 504 reinterpret_cast<MachHeader*>(dlsym(RTLD_MAIN_ONLY, MH_EXECUTE_SYM)); | 504 reinterpret_cast<MachHeader*>(dlsym(RTLD_MAIN_ONLY, MH_EXECUTE_SYM)); |
| 505 ASSERT_NE(nullptr, mh_execute_header); | 505 ASSERT_NE(nullptr, mh_execute_header); |
| 506 mach_vm_address_t mh_execute_header_address = | 506 mach_vm_address_t mh_execute_header_address = |
| 507 reinterpret_cast<mach_vm_address_t>(mh_execute_header); | 507 reinterpret_cast<mach_vm_address_t>(mh_execute_header); |
| 508 | 508 |
| 509 MachOImageReader image_reader; | 509 MachOImageReader image_reader; |
| 510 ASSERT_TRUE(image_reader.Initialize( | 510 ASSERT_TRUE(image_reader.Initialize( |
| 511 &process_reader, mh_execute_header_address, "executable")); | 511 &process_reader, mh_execute_header_address, "executable")); |
| 512 | 512 |
| 513 EXPECT_EQ(static_cast<uint32_t>(MH_EXECUTE), image_reader.FileType()); | 513 EXPECT_EQ(implicit_cast<uint32_t>(MH_EXECUTE), image_reader.FileType()); |
| 514 | 514 |
| 515 // The main executable has image index 0. | 515 // The main executable has image index 0. |
| 516 intptr_t image_slide = _dyld_get_image_vmaddr_slide(0); | 516 intptr_t image_slide = _dyld_get_image_vmaddr_slide(0); |
| 517 | 517 |
| 518 ASSERT_NO_FATAL_FAILURE(ExpectMachImage(mh_execute_header, | 518 ASSERT_NO_FATAL_FAILURE(ExpectMachImage(mh_execute_header, |
| 519 mh_execute_header_address, | 519 mh_execute_header_address, |
| 520 image_slide, | 520 image_slide, |
| 521 &image_reader, | 521 &image_reader, |
| 522 true)); | 522 true)); |
| 523 | 523 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 549 reinterpret_cast<const MachHeader*>(_dyld_get_image_header(index)); | 549 reinterpret_cast<const MachHeader*>(_dyld_get_image_header(index)); |
| 550 mach_vm_address_t image_address = | 550 mach_vm_address_t image_address = |
| 551 reinterpret_cast<mach_vm_address_t>(mach_header); | 551 reinterpret_cast<mach_vm_address_t>(mach_header); |
| 552 | 552 |
| 553 MachOImageReader image_reader; | 553 MachOImageReader image_reader; |
| 554 ASSERT_TRUE( | 554 ASSERT_TRUE( |
| 555 image_reader.Initialize(&process_reader, image_address, image_name)); | 555 image_reader.Initialize(&process_reader, image_address, image_name)); |
| 556 | 556 |
| 557 uint32_t file_type = image_reader.FileType(); | 557 uint32_t file_type = image_reader.FileType(); |
| 558 if (index == 0) { | 558 if (index == 0) { |
| 559 EXPECT_EQ(static_cast<uint32_t>(MH_EXECUTE), file_type); | 559 EXPECT_EQ(implicit_cast<uint32_t>(MH_EXECUTE), file_type); |
| 560 } else { | 560 } else { |
| 561 EXPECT_TRUE(file_type == MH_DYLIB || file_type == MH_BUNDLE); | 561 EXPECT_TRUE(file_type == MH_DYLIB || file_type == MH_BUNDLE); |
| 562 } | 562 } |
| 563 | 563 |
| 564 intptr_t image_slide = _dyld_get_image_vmaddr_slide(index); | 564 intptr_t image_slide = _dyld_get_image_vmaddr_slide(index); |
| 565 ASSERT_NO_FATAL_FAILURE(ExpectMachImage( | 565 ASSERT_NO_FATAL_FAILURE(ExpectMachImage( |
| 566 mach_header, image_address, image_slide, &image_reader, false)); | 566 mach_header, image_address, image_slide, &image_reader, false)); |
| 567 | 567 |
| 568 ASSERT_NO_FATAL_FAILURE(ExpectSymbolTable(mach_header, &image_reader)); | 568 ASSERT_NO_FATAL_FAILURE(ExpectSymbolTable(mach_header, &image_reader)); |
| 569 } | 569 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 581 // dyld_all_image_infos::dyldImageLoadAddress is poorly-declared too. | 581 // dyld_all_image_infos::dyldImageLoadAddress is poorly-declared too. |
| 582 const MachHeader* mach_header = reinterpret_cast<const MachHeader*>( | 582 const MachHeader* mach_header = reinterpret_cast<const MachHeader*>( |
| 583 dyld_image_infos->dyldImageLoadAddress); | 583 dyld_image_infos->dyldImageLoadAddress); |
| 584 mach_vm_address_t image_address = | 584 mach_vm_address_t image_address = |
| 585 reinterpret_cast<mach_vm_address_t>(mach_header); | 585 reinterpret_cast<mach_vm_address_t>(mach_header); |
| 586 | 586 |
| 587 MachOImageReader image_reader; | 587 MachOImageReader image_reader; |
| 588 ASSERT_TRUE( | 588 ASSERT_TRUE( |
| 589 image_reader.Initialize(&process_reader, image_address, "dyld")); | 589 image_reader.Initialize(&process_reader, image_address, "dyld")); |
| 590 | 590 |
| 591 EXPECT_EQ(static_cast<uint32_t>(MH_DYLINKER), image_reader.FileType()); | 591 EXPECT_EQ(implicit_cast<uint32_t>(MH_DYLINKER), image_reader.FileType()); |
| 592 | 592 |
| 593 // There’s no good API to get dyld’s slide, so don’t bother checking it. | 593 // There’s no good API to get dyld’s slide, so don’t bother checking it. |
| 594 ASSERT_NO_FATAL_FAILURE(ExpectMachImage( | 594 ASSERT_NO_FATAL_FAILURE(ExpectMachImage( |
| 595 mach_header, image_address, kSlideUnknown, &image_reader, false)); | 595 mach_header, image_address, kSlideUnknown, &image_reader, false)); |
| 596 | 596 |
| 597 ASSERT_NO_FATAL_FAILURE(ExpectSymbolTable(mach_header, &image_reader)); | 597 ASSERT_NO_FATAL_FAILURE(ExpectSymbolTable(mach_header, &image_reader)); |
| 598 } | 598 } |
| 599 | 599 |
| 600 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 | 600 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 |
| 601 // If dyld is new enough to record UUIDs, check the UUID of any module that | 601 // If dyld is new enough to record UUIDs, check the UUID of any module that |
| (...skipping 29 matching lines...) Expand all Loading... |
| 631 image_reader.UUID(&actual_uuid); | 631 image_reader.UUID(&actual_uuid); |
| 632 EXPECT_EQ(expected_uuid, actual_uuid); | 632 EXPECT_EQ(expected_uuid, actual_uuid); |
| 633 } | 633 } |
| 634 } | 634 } |
| 635 #endif | 635 #endif |
| 636 } | 636 } |
| 637 | 637 |
| 638 } // namespace | 638 } // namespace |
| 639 } // namespace test | 639 } // namespace test |
| 640 } // namespace crashpad | 640 } // namespace crashpad |
| OLD | NEW |