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

Side by Side Diff: base/win/pe_image.cc

Issue 1124763003: Update from https://crrev.com/327068 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: update nacl, buildtools, fix display_change_notifier_unittest Created 5 years, 7 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // This file implements PEImage, a generic class to manipulate PE files. 5 // This file implements PEImage, a generic class to manipulate PE files.
6 // This file was adapted from GreenBorder's Code. 6 // This file was adapted from GreenBorder's Code.
7 7
8 #include "base/win/pe_image.h" 8 #include "base/win/pe_image.h"
9 9
10 namespace base { 10 namespace base {
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 bool PEImage::ImageAddrToOnDiskOffset(LPVOID address, 561 bool PEImage::ImageAddrToOnDiskOffset(LPVOID address,
562 DWORD *on_disk_offset) const { 562 DWORD *on_disk_offset) const {
563 if (NULL == address) 563 if (NULL == address)
564 return false; 564 return false;
565 565
566 // Get the section that this address belongs to. 566 // Get the section that this address belongs to.
567 PIMAGE_SECTION_HEADER section_header = GetImageSectionFromAddr(address); 567 PIMAGE_SECTION_HEADER section_header = GetImageSectionFromAddr(address);
568 if (NULL == section_header) 568 if (NULL == section_header)
569 return false; 569 return false;
570 570
571 #pragma warning(push) 571 #pragma warning(suppress : 4302) // pointer truncation
572 #pragma warning(disable: 4311)
573 // These casts generate warnings because they are 32 bit specific. 572 // These casts generate warnings because they are 32 bit specific.
574 // Don't follow the virtual RVAToAddr, use the one on the base. 573 // Don't follow the virtual RVAToAddr, use the one on the base.
575 DWORD offset_within_section = reinterpret_cast<DWORD>(address) - 574 DWORD offset_within_section = reinterpret_cast<DWORD>(address) -
576 reinterpret_cast<DWORD>(PEImage::RVAToAddr( 575 reinterpret_cast<DWORD>(PEImage::RVAToAddr(
577 section_header->VirtualAddress)); 576 section_header->VirtualAddress));
578 #pragma warning(pop)
579 577
580 *on_disk_offset = section_header->PointerToRawData + offset_within_section; 578 *on_disk_offset = section_header->PointerToRawData + offset_within_section;
581 return true; 579 return true;
582 } 580 }
583 581
584 PVOID PEImage::RVAToAddr(DWORD rva) const { 582 PVOID PEImage::RVAToAddr(DWORD rva) const {
585 if (rva == 0) 583 if (rva == 0)
586 return NULL; 584 return NULL;
587 585
588 return reinterpret_cast<char*>(module_) + rva; 586 return reinterpret_cast<char*>(module_) + rva;
589 } 587 }
590 588
591 PVOID PEImageAsData::RVAToAddr(DWORD rva) const { 589 PVOID PEImageAsData::RVAToAddr(DWORD rva) const {
592 if (rva == 0) 590 if (rva == 0)
593 return NULL; 591 return NULL;
594 592
595 PVOID in_memory = PEImage::RVAToAddr(rva); 593 PVOID in_memory = PEImage::RVAToAddr(rva);
596 DWORD disk_offset; 594 DWORD disk_offset;
597 595
598 if (!ImageAddrToOnDiskOffset(in_memory, &disk_offset)) 596 if (!ImageAddrToOnDiskOffset(in_memory, &disk_offset))
599 return NULL; 597 return NULL;
600 598
601 return PEImage::RVAToAddr(disk_offset); 599 return PEImage::RVAToAddr(disk_offset);
602 } 600 }
603 601
604 } // namespace win 602 } // namespace win
605 } // namespace base 603 } // namespace base
OLDNEW
« no previous file with comments | « base/win/pe_image.h ('k') | base/win/registry.cc » ('j') | mojo/public/tools/BUILD.gn » ('J')

Powered by Google App Engine
This is Rietveld 408576698