@@ -639,22 +639,22 @@ LLDBMemoryReader::resolveRemoteAddress(uint64_t address) const {
639639 file_address, object_file->GetFileSpec ().GetFilename ());
640640 return {};
641641 }
642- auto sec = sec_list->GetSectionAtIndex (0 );
643- auto sec_file_address = sec->GetFileAddress ();
644- auto sec_load_address = sec->GetLoadBaseAddress (&m_process.GetTarget ());
642+ SectionSP sec = sec_list->GetSectionAtIndex (0 );
643+ addr_t sec_file_address = sec->GetFileAddress ();
644+ addr_t sec_load_address = sec->GetLoadBaseAddress (&m_process.GetTarget ());
645645
646- bool overflow = false ;
647- auto slide =
648- llvm::SaturatingAdd (sec_load_address, -sec_file_address, &overflow);
649- if (overflow) {
646+ if (sec_load_address < sec_file_address) {
650647 LLDB_LOG (log,
651- " [MemoryReader] section load address {0:x} - file address {1:x} "
652- " overflows " ,
648+ " [MemoryReader] section load address {0:x} is smaller than "
649+ " section file address {1:x} " ,
653650 sec_load_address, sec_file_address);
654651 return {};
655652 }
656653
657- auto virtual_address = llvm::SaturatingAdd (file_address, slide, &overflow);
654+ addr_t slide = sec_load_address - sec_file_address;
655+
656+ bool overflow = false ;
657+ addr_t virtual_address = llvm::SaturatingAdd (file_address, slide, &overflow);
658658 if (overflow) {
659659 LLDB_LOG (log, " [MemoryReader] file address {0:x} + slide {1:x} overflows" ,
660660 sec_load_address, sec_file_address);
0 commit comments