Mercurial > hg > CbC > CbC_llvm
diff lldb/source/Core/AddressRange.cpp @ 221:79ff65ed7e25
LLVM12 Original
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 15 Jun 2021 19:15:29 +0900 |
parents | 1d019706d866 |
children | 5f17cb93ff66 |
line wrap: on
line diff
--- a/lldb/source/Core/AddressRange.cpp Tue Jun 15 19:13:43 2021 +0900 +++ b/lldb/source/Core/AddressRange.cpp Tue Jun 15 19:15:29 2021 +0900 @@ -8,6 +8,7 @@ #include "lldb/Core/AddressRange.h" #include "lldb/Core/Module.h" +#include "lldb/Core/Section.h" #include "lldb/Target/Target.h" #include "lldb/Utility/ConstString.h" #include "lldb/Utility/FileSpec.h" @@ -18,7 +19,7 @@ #include <memory> -#include <inttypes.h> +#include <cinttypes> namespace lldb_private { class SectionList; @@ -42,14 +43,22 @@ AddressRange::~AddressRange() {} -// bool -// AddressRange::Contains (const Address &addr) const -//{ -// const addr_t byte_size = GetByteSize(); -// if (byte_size) -// return addr.GetSection() == m_base_addr.GetSection() && -// (addr.GetOffset() - m_base_addr.GetOffset()) < byte_size; -//} +bool AddressRange::Contains(const Address &addr) const { + SectionSP range_sect_sp = GetBaseAddress().GetSection(); + SectionSP addr_sect_sp = addr.GetSection(); + if (range_sect_sp) { + if (!addr_sect_sp || + range_sect_sp->GetModule() != addr_sect_sp->GetModule()) + return false; // Modules do not match. + } else if (addr_sect_sp) { + return false; // Range has no module but "addr" does because addr has a + // section + } + // Either the modules match, or both have no module, so it is ok to compare + // the file addresses in this case only. + return ContainsFileAddress(addr); +} + // // bool // AddressRange::Contains (const Address *addr) const