@@ -639,22 +639,22 @@ LLDBMemoryReader::resolveRemoteAddress(uint64_t address) const {
639
639
file_address, object_file->GetFileSpec ().GetFilename ());
640
640
return {};
641
641
}
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 ());
645
645
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) {
650
647
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} " ,
653
650
sec_load_address, sec_file_address);
654
651
return {};
655
652
}
656
653
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);
658
658
if (overflow) {
659
659
LLDB_LOG (log , " [MemoryReader] file address {0:x} + slide {1:x} overflows" ,
660
660
sec_load_address, sec_file_address);
0 commit comments