This revision was automatically updated to reflect the committed changes. Closed by commit rGcee05eed2f47: [lldb] Warn when Mach-O files have overlapping segments (authored by bulbazord).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D144528/new/ https://reviews.llvm.org/D144528 Files: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp Index: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp =================================================================== --- lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -6182,6 +6182,10 @@ size_t num_loaded_sections = 0; const size_t num_sections = section_list->GetSize(); + // Warn if some top-level segments map to the same address. The binary may be + // malformed. + const bool warn_multiple = true; + if (value_is_offset) { // "value" is an offset to apply to each top level segment for (size_t sect_idx = 0; sect_idx < num_sections; ++sect_idx) { @@ -6190,7 +6194,8 @@ SectionSP section_sp(section_list->GetSectionAtIndex(sect_idx)); if (SectionIsLoadable(section_sp.get())) if (target.GetSectionLoadList().SetSectionLoadAddress( - section_sp, section_sp->GetFileAddress() + value)) + section_sp, section_sp->GetFileAddress() + value, + warn_multiple)) ++num_loaded_sections; } } else { @@ -6207,7 +6212,7 @@ value, mach_header_section, section_sp.get()); if (section_load_addr != LLDB_INVALID_ADDRESS) { if (target.GetSectionLoadList().SetSectionLoadAddress( - section_sp, section_load_addr)) + section_sp, section_load_addr, warn_multiple)) ++num_loaded_sections; } }
Index: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp =================================================================== --- lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -6182,6 +6182,10 @@ size_t num_loaded_sections = 0; const size_t num_sections = section_list->GetSize(); + // Warn if some top-level segments map to the same address. The binary may be + // malformed. + const bool warn_multiple = true; + if (value_is_offset) { // "value" is an offset to apply to each top level segment for (size_t sect_idx = 0; sect_idx < num_sections; ++sect_idx) { @@ -6190,7 +6194,8 @@ SectionSP section_sp(section_list->GetSectionAtIndex(sect_idx)); if (SectionIsLoadable(section_sp.get())) if (target.GetSectionLoadList().SetSectionLoadAddress( - section_sp, section_sp->GetFileAddress() + value)) + section_sp, section_sp->GetFileAddress() + value, + warn_multiple)) ++num_loaded_sections; } } else { @@ -6207,7 +6212,7 @@ value, mach_header_section, section_sp.get()); if (section_load_addr != LLDB_INVALID_ADDRESS) { if (target.GetSectionLoadList().SetSectionLoadAddress( - section_sp, section_load_addr)) + section_sp, section_load_addr, warn_multiple)) ++num_loaded_sections; } }
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits