Fixed GetModuleSpecifications() to work better overall:

- MachO files now correctly extract the UUID all the time
- More file size and offset verification done for universal mach-o files to watch for truncated files
- ObjectContainerBSDArchive now supports enumerating all objects in BSD archives (.a files)
- lldb_private::Module() can not be properly constructed using a ModuleSpec for a .o file in a .a file
- The BSD archive plug-in shares its cache for GetModuleSpecifications() and the create callback
- Improved printing for ModuleSpec objects

llvm-svn: 186211
This commit is contained in:
Greg Clayton
2013-07-12 22:07:46 +00:00
parent c6036aa831
commit 2540a8a7bc
12 changed files with 194 additions and 49 deletions

View File

@@ -513,7 +513,8 @@ ObjectFileMachO::GetModuleSpecifications (const lldb_private::FileSpec& file,
if (header.sizeofcmds >= data_sp->GetByteSize())
{
data_sp = file.ReadFileContents(file_offset, header.sizeofcmds);
data_offset = MachHeaderSizeFromMagic(header.magic) + file_offset;
data.SetData(data_sp);
data_offset = MachHeaderSizeFromMagic(header.magic);
}
if (data_sp)
{