diff options
author | Greg Clayton <gclayton@apple.com> | 2011-05-22 22:46:53 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2011-05-22 22:46:53 +0000 |
commit | c0fa53324d62a48257c092a3347d6e7236aa3152 (patch) | |
tree | 1e9c0eca4cafc447d4db229b8b2b011af8f4c114 /source/Breakpoint | |
parent | 6cf4d2b31bf208cd6e48d4e37af671ab9b451446 (diff) | |
download | lldb-c0fa53324d62a48257c092a3347d6e7236aa3152.tar.gz |
Added new lldb_private::Process memory read/write functions to stop a bunch
of duplicated code from appearing all over LLDB:
lldb::addr_t
Process::ReadPointerFromMemory (lldb::addr_t vm_addr, Error &error);
bool
Process::WritePointerToMemory (lldb::addr_t vm_addr, lldb::addr_t ptr_value, Error &error);
size_t
Process::ReadScalarIntegerFromMemory (lldb::addr_t addr, uint32_t byte_size, bool is_signed, Scalar &scalar, Error &error);
size_t
Process::WriteScalarToMemory (lldb::addr_t vm_addr, const Scalar &scalar, uint32_t size, Error &error);
in lldb_private::Process the following functions were renamed:
From:
uint64_t
Process::ReadUnsignedInteger (lldb::addr_t load_addr,
size_t byte_size,
Error &error);
To:
uint64_t
Process::ReadUnsignedIntegerFromMemory (lldb::addr_t load_addr,
size_t byte_size,
uint64_t fail_value,
Error &error);
Cleaned up a lot of code that was manually doing what the above functions do
to use the functions listed above.
Added the ability to get a scalar value as a buffer that can be written down
to a process (byte swapping the Scalar value if needed):
uint32_t
Scalar::GetAsMemoryData (void *dst,
uint32_t dst_len,
lldb::ByteOrder dst_byte_order,
Error &error) const;
The "dst_len" can be smaller that the size of the scalar and the least
significant bytes will be written. "dst_len" can also be larger and the
most significant bytes will be padded with zeroes.
Centralized the code that adds or removes address bits for callable and opcode
addresses into lldb_private::Target:
lldb::addr_t
Target::GetCallableLoadAddress (lldb::addr_t load_addr, AddressClass addr_class) const;
lldb::addr_t
Target::GetOpcodeLoadAddress (lldb::addr_t load_addr, AddressClass addr_class) const;
All necessary lldb_private::Address functions now use the target versions so
changes should only need to happen in one place if anything needs updating.
Fixed up a lot of places that were calling :
addr_t
Address::GetLoadAddress(Target*);
to call the Address::GetCallableLoadAddress() or Address::GetOpcodeLoadAddress()
as needed. There were many places in the breakpoint code where things could
go wrong for ARM if these weren't used.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@131878 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'source/Breakpoint')
-rw-r--r-- | source/Breakpoint/BreakpointLocation.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/source/Breakpoint/BreakpointLocation.cpp b/source/Breakpoint/BreakpointLocation.cpp index 388da6bdf..5f5a8fab4 100644 --- a/source/Breakpoint/BreakpointLocation.cpp +++ b/source/Breakpoint/BreakpointLocation.cpp @@ -36,7 +36,7 @@ BreakpointLocation::BreakpointLocation lldb::tid_t tid, bool hardware ) : - StoppointLocation (loc_id, addr.GetLoadAddress(&owner.GetTarget()), hardware), + StoppointLocation (loc_id, addr.GetOpcodeLoadAddress(&owner.GetTarget()), hardware), m_address (addr), m_owner (owner), m_options_ap (), @@ -53,7 +53,7 @@ BreakpointLocation::~BreakpointLocation() lldb::addr_t BreakpointLocation::GetLoadAddress () const { - return m_address.GetLoadAddress(&m_owner.GetTarget()); + return m_address.GetOpcodeLoadAddress (&m_owner.GetTarget()); } Address & @@ -290,7 +290,7 @@ BreakpointLocation::ResolveBreakpointSite () LogSP log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_BREAKPOINTS); if (log) log->Warning ("Tried to add breakpoint site at 0x%llx but it was already present.\n", - m_address.GetLoadAddress(&m_owner.GetTarget())); + m_address.GetOpcodeLoadAddress (&m_owner.GetTarget())); return false; } @@ -438,7 +438,7 @@ BreakpointLocation::Dump(Stream *s) const "hw_index = %i hit_count = %-4u ignore_count = %-4u", GetID(), GetOptionsNoCreate()->GetThreadSpecNoCreate()->GetTID(), - (uint64_t) m_address.GetLoadAddress (&m_owner.GetTarget()), + (uint64_t) m_address.GetOpcodeLoadAddress (&m_owner.GetTarget()), (m_options_ap.get() ? m_options_ap->IsEnabled() : m_owner.IsEnabled()) ? "enabled " : "disabled", IsHardware() ? "hardware" : "software", GetHardwareIndex(), |