124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- AddressRange.h ------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_AddressRange_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_AddressRange_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Address.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @class AddressRange AddressRange.h "lldb/Core/AddressRange.h" 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @brief A section + offset based address range class. 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass AddressRange 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Default constructor. 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Initialize with a invalid section (NULL), an invalid 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// offset (LLDB_INVALID_ADDRESS), and zero byte size. 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner AddressRange (); 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Construct with a section pointer, offset, and byte_size. 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Initialize the address with the supplied \a section, \a 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// offset and \a byte_size. 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] section 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A section pointer to a valid lldb::Section, or NULL if the 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// address doesn't have a section or will get resolved later. 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] offset 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The offset in bytes into \a section. 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] byte_size 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The size in bytes of the address range. 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 483508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton AddressRange (const lldb::SectionSP §ion, lldb::addr_t offset, lldb::addr_t byte_size); 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Construct with a virtual address, section list and byte size. 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Initialize and resolve the address with the supplied virtual 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// address \a file_addr, and byte size \a byte_size. 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] file_addr 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A virtual address. 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] byte_size 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The size in bytes of the address range. 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] section_list 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A list of sections, one of which may contain the \a vaddr. 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner AddressRange (lldb::addr_t file_addr, lldb::addr_t byte_size, const SectionList *section_list = NULL); 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Construct with a Address object address and byte size. 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Initialize by copying the section offset address in \a so_addr, 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// and setting the byte size to \a byte_size. 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] so_addr 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A section offset address object. 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] byte_size 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The size in bytes of the address range. 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner AddressRange (const Address& so_addr, lldb::addr_t byte_size); 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Destructor. 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The destructor is virtual in case this class is subclassed. 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~AddressRange (); 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Clear the object's state. 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Sets the section to an invalid value (NULL), an invalid offset 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// (LLDB_INVALID_ADDRESS) and a zero byte size. 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Clear (); 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Check if a section offset address is contained in this range. 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] so_addr 10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A section offset address object reference. 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Returns \b true if \a so_addr is contained in this range, 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// \b false otherwise. 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// bool 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Contains (const Address &so_addr) const; 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Check if a section offset address is contained in this range. 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] so_addr_ptr 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A section offset address object pointer. 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Returns \b true if \a so_addr is contained in this range, 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// \b false otherwise. 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// bool 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Contains (const Address *so_addr_ptr) const; 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Check if a section offset \a so_addr when represented as a file 12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// address is contained within this object's file address range. 12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] so_addr 12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A section offset address object reference. 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Returns \b true if both \a this and \a so_addr have 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// resolvable file address values and \a so_addr is contained 13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// in the address range, \b false otherwise. 13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 13624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ContainsFileAddress (const Address &so_addr) const; 13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Check if the resolved file address \a file_addr is contained 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// within this object's file address range. 14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] so_addr 14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A section offset address object reference. 14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 14524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 14624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Returns \b true if both \a this has a resolvable file 14724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// address value and \a so_addr is contained in the address 14824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// range, \b false otherwise. 14924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ContainsFileAddress (lldb::addr_t file_addr) const; 15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 15424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Check if a section offset \a so_addr when represented as a load 15524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// address is contained within this object's load address range. 15624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 15724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] so_addr 15824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A section offset address object reference. 15924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 16124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Returns \b true if both \a this and \a so_addr have 16224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// resolvable load address values and \a so_addr is contained 16324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// in the address range, \b false otherwise. 16424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 16524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 166eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg Clayton ContainsLoadAddress (const Address &so_addr, Target *target) const; 16724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 16824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 16924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Check if the resolved load address \a load_addr is contained 17024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// within this object's load address range. 17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] so_addr 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A section offset address object reference. 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 17524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 17624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Returns \b true if both \a this has a resolvable load 17724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// address value and \a so_addr is contained in the address 17824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// range, \b false otherwise. 17924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 18024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 181eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg Clayton ContainsLoadAddress (lldb::addr_t load_addr, Target *target) const; 18224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 18424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Dump a description of this object to a Stream. 18524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 18624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Dump a description of the contents of this object to the 18724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// supplied stream \a s. There are many ways to display a section 18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// offset based address range, and \a style lets the user choose 18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// how the base address gets displayed. 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 19124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] s 19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The stream to which to dump the object descripton. 19324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] style 19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The display style for the address. 19624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Returns \b true if the address was able to be displayed. 19924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// File and load addresses may be unresolved and it may not be 20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// possible to display a valid value, \b false will be returned 20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// in such cases. 20224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @see Address::DumpStyle 20424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 20524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 206eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg Clayton Dump (Stream *s, Target *target, Address::DumpStyle style, Address::DumpStyle fallback_style = Address::DumpStyleInvalid) const; 20724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 20824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 20924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Dump a debug description of this object to a Stream. 21024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 21124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Dump a debug description of the contents of this object to the 21224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// supplied stream \a s. 21324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 21424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The debug description contains verbose internal state such 21524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// and pointer values, reference counts, etc. 21624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 21724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] s 21824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The stream to which to dump the object descripton. 21924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 22124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DumpDebug (Stream *s) const; 22224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 22424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Get accessor for the base address of the range. 22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A reference to the base address object. 22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Address & 230f9a232b8befaf0e1584906ed7b862d64b6fedb6dBenjamin Kramer GetBaseAddress() { return m_base_addr; } 23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Get const accessor for the base address of the range. 23424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 23524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 23624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A const reference to the base address object. 23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const Address & 239f9a232b8befaf0e1584906ed7b862d64b6fedb6dBenjamin Kramer GetBaseAddress() const { return m_base_addr; } 24024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Get accessor for the byte size of this range. 24324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 24424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 24524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The size in bytes of this address range. 24624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 24724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::addr_t 248f9a232b8befaf0e1584906ed7b862d64b6fedb6dBenjamin Kramer GetByteSize () const { return m_byte_size; } 24924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 25124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Get the memory cost of this object. 25224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 25324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 25424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The number of bytes that this object occupies in memory. 25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 257f9a232b8befaf0e1584906ed7b862d64b6fedb6dBenjamin Kramer MemorySize () const { 258f9a232b8befaf0e1584906ed7b862d64b6fedb6dBenjamin Kramer // Noting special for the memory size of a single AddressRange object, 259f9a232b8befaf0e1584906ed7b862d64b6fedb6dBenjamin Kramer // it is just the size of itself. 260f9a232b8befaf0e1584906ed7b862d64b6fedb6dBenjamin Kramer return sizeof(AddressRange); 261f9a232b8befaf0e1584906ed7b862d64b6fedb6dBenjamin Kramer } 26224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 26424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Set accessor for the byte size of this range. 26524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] byte_size 26724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The new size in bytes of this address range. 26824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 26924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 270f9a232b8befaf0e1584906ed7b862d64b6fedb6dBenjamin Kramer SetByteSize (lldb::addr_t byte_size) { m_byte_size = byte_size; } 27124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 27324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 27424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Member variables 27524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 27624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Address m_base_addr; ///< The section offset base address of this range. 27724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::addr_t m_byte_size; ///< The size in bytes of this address range. 27824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 27924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//bool operator== (const AddressRange& lhs, const AddressRange& rhs); 28124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 28324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_AddressRange_h_ 285