Skip to content

Commit

Permalink
[ValueObject::GetPointeeData] Get addr from value for eValueHostAddre…
Browse files Browse the repository at this point in the history
…ss values.

Summary:
After r236447, ValueObject::GetAddressOf returns LLDB_INVALID_ADDRESS
when the value type is eValueHostAddress. For such a case, clients of
GetAddressOf should get the address from the scalar part of the value
instead of using the value returned by GetAddressOf directly.

This change also makes ValueObject::GetAddressOf set the address type to
eAddressTypeHost for values of eValueHostAddress so that clients can
recognize that they need to fetch the address from the scalar part
of the value.

Test Plan: ninja check-lldb on linux

Reviewers: clayborg, ovyalov

Reviewed By: ovyalov

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9490

llvm-svn: 236473
  • Loading branch information
Siva Chandra committed May 5, 2015
1 parent ac31a1f commit e32f2b5
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lldb/source/Core/ValueObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1053,6 +1053,9 @@ ValueObject::GetPointeeData (DataExtractor& data,
if (max_bytes > offset)
{
size_t bytes_read = std::min<uint64_t>(max_bytes - offset, bytes);
addr = m_value.GetScalar().ULongLong(LLDB_INVALID_ADDRESS);
if (addr == LLDB_INVALID_ADDRESS)
break;
heap_buf_ptr->CopyData((uint8_t*)(addr + offset), bytes_read);
data.SetData(data_sp);
return bytes_read;
Expand Down Expand Up @@ -1828,6 +1831,11 @@ ValueObject::GetAddressOf (bool scalar_is_load_address, AddressType *address_typ
}
break;
case Value::eValueTypeHostAddress:
{
if(address_type)
*address_type = m_value.GetValueAddressType ();
return LLDB_INVALID_ADDRESS;
}
break;
}
if (address_type)
Expand Down

0 comments on commit e32f2b5

Please sign in to comment.