ReExported symbols can point to a library that doesn't actually
contain the symbol, but just reexports wholesale from another
library. Handle this case.
<rdar://problem/16977589>
llvm-svn: 209270
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
index 4f491ce..6866a06 100644
--- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -1838,6 +1838,11 @@
// Strip the path if there is @rpath, @executanble, etc so we just use the basename
if (path[0] == '@')
file_spec.GetDirectory().Clear();
+
+ if (lc.cmd == LC_REEXPORT_DYLIB)
+ {
+ m_reexported_dylibs.AppendIfUnique(file_spec);
+ }
dylib_files.Append(file_spec);
}
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
index c565ac6..dff0b21 100644
--- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
+++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
@@ -13,6 +13,7 @@
#include "lldb/Utility/SafeMachO.h"
#include "lldb/Core/Address.h"
+#include "lldb/Core/FileSpecList.h"
#include "lldb/Core/RangeMap.h"
#include "lldb/Host/FileSpec.h"
#include "lldb/Host/Mutex.h"
@@ -127,6 +128,11 @@
virtual uint32_t
GetDependentModules (lldb_private::FileSpecList& files);
+ virtual lldb_private::FileSpecList
+ GetReExportedLibraries ()
+ {
+ return m_reexported_dylibs;
+ }
//------------------------------------------------------------------
// PluginInterface protocol
//------------------------------------------------------------------
@@ -208,6 +214,7 @@
lldb_private::Address m_entry_point_address;
FileRangeArray m_thread_context_offsets;
bool m_thread_context_offsets_valid;
+ lldb_private::FileSpecList m_reexported_dylibs;
size_t
ParseSymtab ();