diff options
author | Greg Clayton <gclayton@apple.com> | 2013-04-24 22:29:28 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2013-04-24 22:29:28 +0000 |
commit | f4d6de6a5385e18e0b7746d3037f2029069c6ef3 (patch) | |
tree | e9e6c4d2b765b926e5ec4dc75e006059730d8aef /lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp | |
parent | 8d1d25222ec4b1c0d590cd888499d2061eaa67e3 (diff) | |
download | bcm5719-llvm-f4d6de6a5385e18e0b7746d3037f2029069c6ef3.tar.gz bcm5719-llvm-f4d6de6a5385e18e0b7746d3037f2029069c6ef3.zip |
Added the ability to extract a ModuleSpecList (a new class) from an ObjectFile. This is designed to be used when you have an object file that contains one or more architectures (MacOSX universal (fat) files) and/or one or more objects (BSD archive (.a files)).
There is a new static ObjectFile function you can call:
size_t
ObjectFile::GetModuleSpecifications (const FileSpec &file,
lldb::offset_t file_offset,
ModuleSpecList &specs)
This will fill in "specs" which the details of all the module specs (file + arch + UUID (if there is one) + object name (for BSD archive objects eventually) + file offset to the object in question).
This helps us when a user specifies a file that contains a single architecture, and also helps us when we are given a debug symbol file (like a dSYM file on MacOSX) that contains one or more architectures and we need to be able to match it up to an existing Module that has no debug info.
llvm-svn: 180224
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp')
-rw-r--r-- | lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp index 0ce96b972d8..4ba081a7b7c 100644 --- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp +++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp @@ -17,6 +17,7 @@ #include "lldb/Core/Error.h" #include "lldb/Core/FileSpecList.h" #include "lldb/Core/Module.h" +#include "lldb/Core/ModuleSpec.h" #include "lldb/Core/PluginManager.h" #include "lldb/Core/Section.h" #include "lldb/Core/Stream.h" @@ -149,7 +150,8 @@ ObjectFileELF::Initialize() PluginManager::RegisterPlugin(GetPluginNameStatic(), GetPluginDescriptionStatic(), CreateInstance, - CreateMemoryInstance); + CreateMemoryInstance, + GetModuleSpecifications); } void @@ -220,6 +222,17 @@ ObjectFileELF::CreateMemoryInstance (const lldb::ModuleSP &module_sp, } +size_t +ObjectFileELF::GetModuleSpecifications (const lldb_private::FileSpec& file, + lldb::DataBufferSP& data_sp, + lldb::offset_t data_offset, + lldb::offset_t file_offset, + lldb::offset_t length, + lldb_private::ModuleSpecList &specs) +{ + return 0; +} + //------------------------------------------------------------------ // PluginInterface protocol //------------------------------------------------------------------ |