Fix a crasher in

DynamicLoaderDarwinKernel::OSKextLoadedKextSummary::LoadImageUsingMemoryModule
where it assumed that a kernel had been found in memory, when that may not be
the case when we're attaching to a device early in the boot process.
<rdar://problem/12638140> 

llvm-svn: 167564
This commit is contained in:
Jason Molenda 2012-11-08 00:19:28 +00:00
parent 1cb5951a2f
commit c56bd08373
2 changed files with 4 additions and 3 deletions

View File

@ -264,7 +264,8 @@ DynamicLoaderDarwinKernel::OSKextLoadedKextSummary::LoadImageUsingMemoryModule (
uuid = memory_module_sp->GetUUID();
uuid_is_valid = uuid.IsValid();
}
if (memory_module_sp->GetObjectFile()
if (memory_module_sp
&& memory_module_sp->GetObjectFile()
&& memory_module_sp->GetObjectFile()->GetType() == ObjectFile::eTypeExecutable
&& memory_module_sp->GetObjectFile()->GetStrata() == ObjectFile::eStrataKernel)
{

View File

@ -804,8 +804,8 @@ DWARFDebugLine::ParseStatementTable
// field in the header, plus the value of the line_range field,
// minus 1 (line base + line range - 1). If the desired line
// increment is greater than the maximum line increment, a standard
// opcode must be used instead of a special opcode. The address
// advance is calculated by dividing the desired address increment
// opcode must be used instead of a special opcode. The "address
// advance" is calculated by dividing the desired address increment
// by the minimum_instruction_length field from the header. The
// special opcode is then calculated using the following formula:
//