Dump JIT memory requirements when "log enable lldb expr" logging is enabled.

Correctly handle invalid 32-bit mmap fail return value in ProcessGDBRemote.

llvm-svn: 131394
This commit is contained in:
Greg Clayton 2011-05-15 23:56:52 +00:00
parent 17a0cb68c9
commit 1cfca1dc09
2 changed files with 14 additions and 3 deletions

View File

@ -620,9 +620,14 @@ ClangExpressionParser::MakeJIT (lldb::addr_t &func_allocation_addr,
std::map<uint8_t *, uint8_t *>::iterator fun_pos = jit_memory_manager->m_functions.begin();
std::map<uint8_t *, uint8_t *>::iterator fun_end = jit_memory_manager->m_functions.end();
for (; fun_pos != fun_end; ++fun_pos)
alloc_size += (*fun_pos).second - (*fun_pos).first;
{
size_t mem_size = fun_pos->second - fun_pos->first;
if (log)
log->Printf ("JIT memory: [%p - %p) size = %zu", fun_pos->first, fun_pos->second, mem_size);
alloc_size += mem_size;
}
Error alloc_error;
func_allocation_addr = exc_context.process->AllocateMemory (alloc_size,

View File

@ -1637,7 +1637,13 @@ ProcessGDBRemote::DoAllocateMemory (size_t size, uint32_t permissions, Error &er
if (result == eExecutionCompleted)
{
allocated_addr = return_value_sp->GetScalar().ULongLong();
m_addr_to_mmap_size[allocated_addr] = size;
if (GetAddressByteSize() == 4)
{
if (allocated_addr == UINT32_MAX)
allocated_addr = LLDB_INVALID_ADDRESS;
}
if (allocated_addr != LLDB_INVALID_ADDRESS)
m_addr_to_mmap_size[allocated_addr] = size;
}
}
}