Home | History | Annotate | Download | only in courgette

Lines Matching refs:rva

223 bool DisassemblerWin32X86::ParseRelocs(std::vector<RVA> *relocs) {
250 RVA page_rva = ReadU32(block, 0);
269 RVA rva = page_rva + offset;
271 relocs->push_back(rva);
288 const Section* DisassemblerWin32X86::RVAToSection(RVA rva) const {
291 uint32 offset = rva - section->virtual_address;
299 int DisassemblerWin32X86::RVAToFileOffset(RVA rva) const {
300 const Section* section = RVAToSection(rva);
302 uint32 offset = rva - section->virtual_address;
310 // Small RVA values point into the file header in the loaded image.
311 // RVA 0 is the module load address which Windows uses as the module handle.
312 // RVA 2 sometimes occurs, I'm not sure what it is, but it would map into the
314 if (rva == 0 || rva == 2)
315 return rva;
321 const uint8* DisassemblerWin32X86::RVAToPointer(RVA rva) const {
322 int file_offset = RVAToFileOffset(rva);
380 RVA rva = abs32_locations_[i];
382 uint32 target_address = Read32LittleEndian(RVAToPointer(rva));
409 std::map<RVA, int>::iterator abs32_iter = abs32_target_rvas_.begin();
410 std::map<RVA, int>::iterator rel32_iter = rel32_target_rvas_.begin();
435 RVA relocs_start_rva = base_relocation_table().address_;
440 RVA start_rva = FileOffsetToRVA(start_file_offset);
441 RVA end_rva = start_rva + section->virtual_size;
443 // Quick way to convert from Pointer to RVA within a single Section is to
447 std::vector<RVA>::iterator abs32_pos = abs32_locations_.begin();
452 RVA current_rva = static_cast<RVA>(p - adjust_pointer_to_rva);
481 RVA rel32_rva = static_cast<RVA>(rel32 - adjust_pointer_to_rva);
497 RVA target_rva = rel32_rva + 4 + Read32LittleEndian(rel32);
539 RVA relocs_start_rva = base_relocation_table().address_;
544 RVA start_rva = FileOffsetToRVA(start_file_offset);
545 RVA end_rva = start_rva + section->virtual_size;
547 // Quick way to convert from Pointer to RVA within a single Section is to
551 std::vector<RVA>::iterator rel32_pos = rel32_locations_.begin();
552 std::vector<RVA>::iterator abs32_pos = abs32_locations_.begin();
560 RVA current_rva = static_cast<RVA>(p - adjust_pointer_to_rva);
580 RVA target_rva = target_address - image_base();
593 RVA target_rva = current_rva + 4 + Read32LittleEndian(p);
623 const std::map<RVA, int>& map) {
625 std::map<int, std::vector<RVA> > h;
626 for (std::map<RVA, int>::const_iterator p = map.begin();
640 for (std::map<int, std::vector<RVA> >::reverse_iterator p = h.rbegin();
668 std::string DisassemblerWin32X86::DescribeRVA(RVA rva) const {
669 const Section* section = RVAToSection(rva);
671 s << std::hex << rva;
675 << std::hex << (rva - section->virtual_address)
697 RVA DisassemblerWin32X86::FileOffsetToRVA(uint32 file_offset) const {
720 RVA rva = ReadU32(data_directory, 0);
725 // TODO(sra): validate RVA.
726 directory->address_ = rva;