summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2015-09-23 19:32:56 +0000
committerEnrico Granata <egranata@apple.com>2015-09-23 19:32:56 +0000
commite5ffa089cc88fc730b005d1dba9cb57857a9ba66 (patch)
treef83c4537137c47e012b056e6f255f4cbf4302407 /lldb
parentcac0b89289c370a24101c657b1345cc0ed57ee9d (diff)
downloadbcm5719-llvm-e5ffa089cc88fc730b005d1dba9cb57857a9ba66.tar.gz
bcm5719-llvm-e5ffa089cc88fc730b005d1dba9cb57857a9ba66.zip
Revert 248366 "Testcase and fix for bug 24074"
This commit introduced regressions in several test cases on FreeBSD and Mac OS X llvm-svn: 248421
Diffstat (limited to 'lldb')
-rw-r--r--lldb/include/lldb/Core/Module.h2
-rw-r--r--lldb/include/lldb/Symbol/SymbolContext.h21
-rw-r--r--lldb/include/lldb/Symbol/SymbolFile.h2
-rw-r--r--lldb/include/lldb/Symbol/SymbolVendor.h3
-rw-r--r--lldb/include/lldb/Symbol/TypeList.h13
-rw-r--r--lldb/include/lldb/Symbol/TypeMap.h98
-rw-r--r--lldb/include/lldb/lldb-forward.h1
-rw-r--r--lldb/lldb.xcodeproj/project.pbxproj6
-rw-r--r--lldb/source/Commands/CommandObjectTarget.cpp1
-rw-r--r--lldb/source/Core/Module.cpp28
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp14
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h2
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp3
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h2
-rw-r--r--lldb/source/Symbol/CMakeLists.txt1
-rw-r--r--lldb/source/Symbol/SymbolContext.cpp165
-rw-r--r--lldb/source/Symbol/SymbolFile.cpp4
-rw-r--r--lldb/source/Symbol/SymbolVendor.cpp2
-rw-r--r--lldb/source/Symbol/TypeList.cpp52
-rw-r--r--lldb/source/Symbol/TypeMap.cpp313
-rw-r--r--lldb/test/lang/c/typedef/Makefile5
-rw-r--r--lldb/test/lang/c/typedef/Testtypedef.py51
-rw-r--r--lldb/test/lang/c/typedef/main.c40
23 files changed, 74 insertions, 755 deletions
diff --git a/lldb/include/lldb/Core/Module.h b/lldb/include/lldb/Core/Module.h
index 0d3ff60a092..cc44cfcca2b 100644
--- a/lldb/include/lldb/Core/Module.h
+++ b/lldb/include/lldb/Core/Module.h
@@ -1193,7 +1193,7 @@ private:
const CompilerDeclContext *parent_decl_ctx,
bool append,
size_t max_matches,
- TypeMap& types);
+ TypeList& types);
DISALLOW_COPY_AND_ASSIGN (Module);
diff --git a/lldb/include/lldb/Symbol/SymbolContext.h b/lldb/include/lldb/Symbol/SymbolContext.h
index 7ce95f2f2c9..c48505e1064 100644
--- a/lldb/include/lldb/Symbol/SymbolContext.h
+++ b/lldb/include/lldb/Symbol/SymbolContext.h
@@ -299,27 +299,6 @@ public:
ConstString &language_object_name);
//------------------------------------------------------------------
- /// If this symbol context represents a function that is a method,
- /// return true and provide information about the method.
- ///
- /// @param[out] language
- /// If \b true is returned, the language for the method.
- ///
- /// @param[out] is_instance_method
- /// If \b true is returned, \b true if this is a instance method,
- /// \b false if this is a static/class function.
- ///
- /// @param[out] language_object_name
- /// If \b true is returned, the name of the artificial variable
- /// for the language ("this" for C++, "self" for ObjC).
- ///
- /// @return
- /// \b True if this symbol context represents a function that
- /// is a method of a class, \b false otherwise.
- //------------------------------------------------------------------
- void
- SortTypeList(TypeMap &type_map, TypeList &type_list) const;
- //------------------------------------------------------------------
/// Find a name of the innermost function for the symbol context.
///
/// For instance, if the symbol context contains an inlined block,
diff --git a/lldb/include/lldb/Symbol/SymbolFile.h b/lldb/include/lldb/Symbol/SymbolFile.h
index d37a2e49ede..94cf403d33f 100644
--- a/lldb/include/lldb/Symbol/SymbolFile.h
+++ b/lldb/include/lldb/Symbol/SymbolFile.h
@@ -141,7 +141,7 @@ public:
virtual uint32_t FindGlobalVariables (const RegularExpression& regex, bool append, uint32_t max_matches, VariableList& variables);
virtual uint32_t FindFunctions (const ConstString &name, const CompilerDeclContext *parent_decl_ctx, uint32_t name_type_mask, bool include_inlines, bool append, SymbolContextList& sc_list);
virtual uint32_t FindFunctions (const RegularExpression& regex, bool include_inlines, bool append, SymbolContextList& sc_list);
- virtual uint32_t FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, TypeMap& types);
+ virtual uint32_t FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, TypeList& types);
// virtual uint32_t FindTypes (const SymbolContext& sc, const RegularExpression& regex, bool append, uint32_t max_matches, TypeList& types) = 0;
virtual TypeList * GetTypeList ();
virtual size_t GetTypes (lldb_private::SymbolContextScope *sc_scope,
diff --git a/lldb/include/lldb/Symbol/SymbolVendor.h b/lldb/include/lldb/Symbol/SymbolVendor.h
index e57e8e3d050..4d5157378d7 100644
--- a/lldb/include/lldb/Symbol/SymbolVendor.h
+++ b/lldb/include/lldb/Symbol/SymbolVendor.h
@@ -16,7 +16,6 @@
#include "lldb/Core/ModuleChild.h"
#include "lldb/Core/PluginInterface.h"
#include "lldb/Symbol/TypeList.h"
-#include "lldb/Symbol/TypeMap.h"
namespace lldb_private {
@@ -126,7 +125,7 @@ public:
const CompilerDeclContext *parent_decl_ctx,
bool append,
size_t max_matches,
- TypeMap& types);
+ TypeList& types);
virtual CompilerDeclContext
FindNamespace (const SymbolContext& sc,
diff --git a/lldb/include/lldb/Symbol/TypeList.h b/lldb/include/lldb/Symbol/TypeList.h
index f3642576ddc..4f3f2c9bdbe 100644
--- a/lldb/include/lldb/Symbol/TypeList.h
+++ b/lldb/include/lldb/Symbol/TypeList.h
@@ -13,7 +13,7 @@
#include "lldb/lldb-private.h"
#include "lldb/Symbol/Type.h"
#include "lldb/Utility/Iterable.h"
-#include <vector>
+#include <map>
#include <functional>
namespace lldb_private {
@@ -24,7 +24,7 @@ public:
//------------------------------------------------------------------
// Constructors and Destructors
//------------------------------------------------------------------
- TypeList();
+ TypeList();
virtual
~TypeList();
@@ -44,14 +44,17 @@ public:
void
Insert (const lldb::TypeSP& type);
+ bool
+ InsertUnique (const lldb::TypeSP& type);
+
uint32_t
GetSize() const;
lldb::TypeSP
GetTypeAtIndex(uint32_t idx);
- typedef std::vector<lldb::TypeSP> collection;
- typedef AdaptedIterable<collection, lldb::TypeSP, vector_adapter> TypeIterable;
+ typedef std::multimap<lldb::user_id_t, lldb::TypeSP> collection;
+ typedef AdaptedIterable<collection, lldb::TypeSP, map_adapter> TypeIterable;
TypeIterable
Types ()
@@ -65,6 +68,8 @@ public:
void
ForEach (std::function <bool(lldb::TypeSP &type_sp)> const &callback);
+ bool
+ RemoveTypeWithUID (lldb::user_id_t uid);
void
RemoveMismatchedTypes (const char *qualified_typename,
diff --git a/lldb/include/lldb/Symbol/TypeMap.h b/lldb/include/lldb/Symbol/TypeMap.h
deleted file mode 100644
index f7141249001..00000000000
--- a/lldb/include/lldb/Symbol/TypeMap.h
+++ /dev/null
@@ -1,98 +0,0 @@
-//===-- TypeMap.h ----------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef liblldb_TypeMap_h_
-#define liblldb_TypeMap_h_
-
-#include "lldb/lldb-private.h"
-#include "lldb/Symbol/Type.h"
-#include "lldb/Utility/Iterable.h"
-#include <map>
-#include <functional>
-
-namespace lldb_private {
-
-class TypeMap
-{
-public:
- //------------------------------------------------------------------
- // Constructors and Destructors
- //------------------------------------------------------------------
- TypeMap();
-
- virtual
- ~TypeMap();
-
- void
- Clear();
-
- void
- Dump(Stream *s, bool show_context);
-
-// lldb::TypeSP
-// FindType(lldb::user_id_t uid);
-
- TypeMap
- FindTypes(const ConstString &name);
-
- void
- Insert (const lldb::TypeSP& type);
-
- bool
- InsertUnique (const lldb::TypeSP& type);
-
- uint32_t
- GetSize() const;
-
- lldb::TypeSP
- GetTypeAtIndex(uint32_t idx);
-
- typedef std::multimap<lldb::user_id_t, lldb::TypeSP> collection;
- typedef AdaptedIterable<collection, lldb::TypeSP, map_adapter> TypeIterable;
-
- TypeIterable
- Types ()
- {
- return TypeIterable(m_types);
- }
-
- void
- ForEach (std::function <bool(const lldb::TypeSP &type_sp)> const &callback) const;
-
- void
- ForEach (std::function <bool(lldb::TypeSP &type_sp)> const &callback);
-
- bool
- RemoveTypeWithUID (lldb::user_id_t uid);
-
- void
- RemoveMismatchedTypes (const char *qualified_typename,
- bool exact_match);
-
- void
- RemoveMismatchedTypes (const std::string &type_scope,
- const std::string &type_basename,
- lldb::TypeClass type_class,
- bool exact_match);
-
- void
- RemoveMismatchedTypes (lldb::TypeClass type_class);
-
-private:
- typedef collection::iterator iterator;
- typedef collection::const_iterator const_iterator;
-
- collection m_types;
-
- DISALLOW_COPY_AND_ASSIGN (TypeMap);
-};
-
-} // namespace lldb_private
-
-#endif // liblldb_TypeMap_h_
diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h
index 1ee617b821a..5dbdccb18dd 100644
--- a/lldb/include/lldb/lldb-forward.h
+++ b/lldb/include/lldb/lldb-forward.h
@@ -254,7 +254,6 @@ class TypeAndOrName;
class TypeCategoryMap;
class TypeImpl;
class TypeList;
-class TypeMap;
class TypeListImpl;
class TypeMemberImpl;
class TypeMemberFunctionImpl;
diff --git a/lldb/lldb.xcodeproj/project.pbxproj b/lldb/lldb.xcodeproj/project.pbxproj
index 871de96db53..09b8b4553c1 100644
--- a/lldb/lldb.xcodeproj/project.pbxproj
+++ b/lldb/lldb.xcodeproj/project.pbxproj
@@ -713,7 +713,6 @@
6D95DC001B9DC057000E318A /* DIERef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D95DBFD1B9DC057000E318A /* DIERef.cpp */; };
6D95DC011B9DC057000E318A /* HashedNameToDIE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D95DBFE1B9DC057000E318A /* HashedNameToDIE.cpp */; };
6D95DC021B9DC057000E318A /* SymbolFileDWARFDwo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D95DBFF1B9DC057000E318A /* SymbolFileDWARFDwo.cpp */; };
- 6D9AB3DD1BB2B74E003F2289 /* TypeMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D9AB3DC1BB2B74E003F2289 /* TypeMap.cpp */; };
8C2D6A53197A1EAF006989C9 /* MemoryHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C2D6A52197A1EAF006989C9 /* MemoryHistory.cpp */; };
8C2D6A5E197A250F006989C9 /* MemoryHistoryASan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C2D6A5A197A1FDC006989C9 /* MemoryHistoryASan.cpp */; };
8CCB017E19BA28A80009FD44 /* ThreadCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CCB017A19BA283D0009FD44 /* ThreadCollection.cpp */; };
@@ -2404,8 +2403,6 @@
6D95DBFF1B9DC057000E318A /* SymbolFileDWARFDwo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolFileDWARFDwo.cpp; sourceTree = "<group>"; };
6D95DC031B9DC06F000E318A /* DIERef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DIERef.h; sourceTree = "<group>"; };
6D95DC041B9DC06F000E318A /* SymbolFileDWARFDwo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolFileDWARFDwo.h; sourceTree = "<group>"; };
- 6D9AB3DC1BB2B74E003F2289 /* TypeMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeMap.cpp; path = source/Symbol/TypeMap.cpp; sourceTree = "<group>"; };
- 6D9AB3DE1BB2B76B003F2289 /* TypeMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeMap.h; path = include/lldb/Symbol/TypeMap.h; sourceTree = "<group>"; };
8C2D6A52197A1EAF006989C9 /* MemoryHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MemoryHistory.cpp; path = source/Target/MemoryHistory.cpp; sourceTree = "<group>"; };
8C2D6A54197A1EBE006989C9 /* MemoryHistory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MemoryHistory.h; path = include/lldb/Target/MemoryHistory.h; sourceTree = "<group>"; };
8C2D6A5A197A1FDC006989C9 /* MemoryHistoryASan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryHistoryASan.cpp; sourceTree = "<group>"; };
@@ -4210,8 +4207,6 @@
26BC7C4B10F1B6C100F91463 /* Symbol */ = {
isa = PBXGroup;
children = (
- 6D9AB3DE1BB2B76B003F2289 /* TypeMap.h */,
- 6D9AB3DC1BB2B74E003F2289 /* TypeMap.cpp */,
26BC7C5510F1B6E900F91463 /* Block.h */,
26BC7F1310F1B8EC00F91463 /* Block.cpp */,
26BC7C5610F1B6E900F91463 /* ClangASTContext.h */,
@@ -6643,7 +6638,6 @@
3FBA69E11B6067120008F44A /* ScriptInterpreterNone.cpp in Sources */,
266DFE9713FD656E00D0C574 /* OperatingSystem.cpp in Sources */,
26954EBE1401EE8B00294D09 /* DynamicRegisterInfo.cpp in Sources */,
- 6D9AB3DD1BB2B74E003F2289 /* TypeMap.cpp in Sources */,
255EFF761AFABA950069F277 /* LockFilePosix.cpp in Sources */,
3FBA69EC1B6067430008F44A /* PythonDataObjects.cpp in Sources */,
26274FA714030F79006BA130 /* DynamicLoaderDarwinKernel.cpp in Sources */,
diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp
index d433f673b33..715a713de3d 100644
--- a/lldb/source/Commands/CommandObjectTarget.cpp
+++ b/lldb/source/Commands/CommandObjectTarget.cpp
@@ -1918,6 +1918,7 @@ LookupTypeHere (CommandInterpreter &interpreter,
strm.PutCString("Best match found in ");
DumpFullpath (strm, &sym_ctx.module_sp->GetFileSpec(), 0);
strm.PutCString(":\n");
+
TypeSP type_sp (type_list.GetTypeAtIndex(0));
if (type_sp)
{
diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp
index 63bbba9afdb..8f6a4a10ac2 100644
--- a/lldb/source/Core/Module.cpp
+++ b/lldb/source/Core/Module.cpp
@@ -36,7 +36,6 @@
#include "lldb/Target/Target.h"
#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
#include "Plugins/Language/ObjC/ObjCLanguage.h"
-#include "lldb/Symbol/TypeMap.h"
#include "Plugins/ObjectFile/JIT/ObjectFileJIT.h"
@@ -941,7 +940,7 @@ Module::FindTypes_Impl (const SymbolContext& sc,
const CompilerDeclContext *parent_decl_ctx,
bool append,
size_t max_matches,
- TypeMap& types)
+ TypeList& types)
{
Timer scoped_timer(__PRETTY_FUNCTION__, __PRETTY_FUNCTION__);
if (sc.module_sp.get() == NULL || sc.module_sp.get() == this)
@@ -961,11 +960,7 @@ Module::FindTypesInNamespace (const SymbolContext& sc,
TypeList& type_list)
{
const bool append = true;
- TypeMap types_map;
- size_t num_types = FindTypes_Impl(sc, type_name, parent_decl_ctx, append, max_matches, types_map);
- if (num_types > 0)
- sc.SortTypeList(types_map, type_list);
- return num_types;
+ return FindTypes_Impl(sc, type_name, parent_decl_ctx, append, max_matches, type_list);
}
lldb::TypeSP
@@ -994,7 +989,6 @@ Module::FindTypes (const SymbolContext& sc,
std::string type_basename;
const bool append = true;
TypeClass type_class = eTypeClassAny;
- TypeMap typesmap;
if (Type::GetTypeScopeAndBasename (type_name_cstr, type_scope, type_basename, type_class))
{
// Check if "name" starts with "::" which means the qualified type starts
@@ -1008,10 +1002,10 @@ Module::FindTypes (const SymbolContext& sc,
exact_match = true;
}
ConstString type_basename_const_str (type_basename.c_str());
- if (FindTypes_Impl(sc, type_basename_const_str, NULL, append, max_matches, typesmap))
+ if (FindTypes_Impl(sc, type_basename_const_str, NULL, append, max_matches, types))
{
- typesmap.RemoveMismatchedTypes (type_scope, type_basename, type_class, exact_match);
- num_matches = typesmap.GetSize();
+ types.RemoveMismatchedTypes (type_scope, type_basename, type_class, exact_match);
+ num_matches = types.GetSize();
}
}
else
@@ -1021,18 +1015,18 @@ Module::FindTypes (const SymbolContext& sc,
{
// The "type_name_cstr" will have been modified if we have a valid type class
// prefix (like "struct", "class", "union", "typedef" etc).
- FindTypes_Impl(sc, ConstString(type_name_cstr), NULL, append, max_matches, typesmap);
- typesmap.RemoveMismatchedTypes (type_class);
- num_matches = typesmap.GetSize();
+ FindTypes_Impl(sc, ConstString(type_name_cstr), NULL, append, max_matches, types);
+ types.RemoveMismatchedTypes (type_class);
+ num_matches = types.GetSize();
}
else
{
- num_matches = FindTypes_Impl(sc, name, NULL, append, max_matches, typesmap);
+ num_matches = FindTypes_Impl(sc, name, NULL, append, max_matches, types);
}
}
- if (num_matches > 0)
- sc.SortTypeList(typesmap, types);
+
return num_matches;
+
}
SymbolVendor*
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index cff808bd70a..43c3d7676ec 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -43,7 +43,6 @@
#include "lldb/Symbol/SymbolVendor.h"
#include "lldb/Symbol/TypeSystem.h"
#include "lldb/Symbol/VariableList.h"
-#include "lldb/Symbol/TypeMap.h"
#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
#include "Plugins/Language/ObjC/ObjCLanguage.h"
@@ -2841,7 +2840,7 @@ SymbolFileDWARF::FindTypes (const SymbolContext& sc,
const CompilerDeclContext *parent_decl_ctx,
bool append,
uint32_t max_matches,
- TypeMap& types)
+ TypeList& types)
{
DWARFDebugInfo* info = DebugInfo();
if (info == NULL)
@@ -3055,17 +3054,6 @@ SymbolFileDWARF::GetTypeForDIE (const DWARFDIE &die)
CompileUnit* lldb_cu = GetCompUnitForDWARFCompUnit(die.GetCU());
assert (lldb_cu);
SymbolContext sc(lldb_cu);
- const DWARFDebugInfoEntry* parent_die = die.GetParent().GetDIE();
- while (parent_die != nullptr)
- {
- if (parent_die->Tag() == DW_TAG_subprogram)
- break;
- parent_die = parent_die->GetParent();
- }
- SymbolContext sc_backup = sc;
- if (parent_die != nullptr && !GetFunction(DWARFDIE(die.GetCU(),parent_die), sc))
- sc = sc_backup;
-
type_sp = ParseType(sc, die, NULL);
}
else if (type_ptr != DIE_IS_BEING_PARSED)
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
index 9dfdb3b8fcf..49b0e1de523 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
@@ -207,7 +207,7 @@ public:
const lldb_private::CompilerDeclContext *parent_decl_ctx,
bool append,
uint32_t max_matches,
- lldb_private::TypeMap& types) override;
+ lldb_private::TypeList& types) override;
lldb_private::TypeList *
GetTypeList () override;
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
index 9aaaa1da8fd..6d33d6cb4f5 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
@@ -28,7 +28,6 @@
#include "lldb/Symbol/LineTable.h"
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Symbol/SymbolVendor.h"
-#include "lldb/Symbol/TypeMap.h"
#include "lldb/Symbol/VariableList.h"
#include "LogChannelDWARF.h"
@@ -1296,7 +1295,7 @@ SymbolFileDWARFDebugMap::FindTypes
const CompilerDeclContext *parent_decl_ctx,
bool append,
uint32_t max_matches,
- TypeMap& types
+ TypeList& types
)
{
if (!append)
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
index cc79f4e5cd7..fde63ab8095 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
@@ -79,7 +79,7 @@ public:
uint32_t FindGlobalVariables (const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::VariableList& variables) override;
uint32_t FindFunctions (const lldb_private::ConstString &name, const lldb_private::CompilerDeclContext *parent_decl_ctx, uint32_t name_type_mask, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list) override;
uint32_t FindFunctions (const lldb_private::RegularExpression& regex, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list) override;
- uint32_t FindTypes (const lldb_private::SymbolContext& sc, const lldb_private::ConstString &name, const lldb_private::CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, lldb_private::TypeMap& types) override;
+ uint32_t FindTypes (const lldb_private::SymbolContext& sc, const lldb_private::ConstString &name, const lldb_private::CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, lldb_private::TypeList& types) override;
lldb_private::CompilerDeclContext
FindNamespace (const lldb_private::SymbolContext& sc,
const lldb_private::ConstString &name,
diff --git a/lldb/source/Symbol/CMakeLists.txt b/lldb/source/Symbol/CMakeLists.txt
index 97f1e0ffb17..b1da6de638c 100644
--- a/lldb/source/Symbol/CMakeLists.txt
+++ b/lldb/source/Symbol/CMakeLists.txt
@@ -24,7 +24,6 @@ add_lldb_library(lldbSymbol
Symtab.cpp
Type.cpp
TypeList.cpp
- TypeMap.cpp
TypeSystem.cpp
UnwindPlan.cpp
UnwindTable.cpp
diff --git a/lldb/source/Symbol/SymbolContext.cpp b/lldb/source/Symbol/SymbolContext.cpp
index b9f69bd67db..d66cc700d4c 100644
--- a/lldb/source/Symbol/SymbolContext.cpp
+++ b/lldb/source/Symbol/SymbolContext.cpp
@@ -659,171 +659,6 @@ SymbolContext::GetFunctionMethodInfo (lldb::LanguageType &language,
return false;
}
-class TypeMoveMatchingBlock
-{
-public:
- TypeMoveMatchingBlock(Block * block, TypeMap &typem, TypeList &typel) :
- curr_block(block),type_map(typem),type_list(typel)
- {
- }
-
- bool
- operator() (const lldb::TypeSP& type)
- {
- if (type && type->GetSymbolContextScope() != nullptr && curr_block == type->GetSymbolContextScope()->CalculateSymbolContextBlock())
- {
- type_list.Insert(type);
- type_map.RemoveTypeWithUID(type->GetID());
- return false;
- }
- return true;
- }
-
-private:
- const Block * const curr_block;
- TypeMap &type_map;
- TypeList &type_list;
-};
-
-class TypeMoveMatchingFunction
-{
-public:
- TypeMoveMatchingFunction(Function * block, TypeMap &typem, TypeList &typel) :
- func(block),type_map(typem),type_list(typel)
- {
- }
-
- bool
- operator() (const lldb::TypeSP& type)
- {
- if (type && type->GetSymbolContextScope() != nullptr && func == type->GetSymbolContextScope()->CalculateSymbolContextFunction())
- {
- type_list.Insert(type);
- type_map.RemoveTypeWithUID(type->GetID());
- return false;
- }
- return true;
- }
-
-private:
- const Function * const func;
- TypeMap &type_map;
- TypeList &type_list;
-};
-
-class TypeMoveMatchingCompileUnit
-{
-public:
- TypeMoveMatchingCompileUnit(CompileUnit * cunit, TypeMap &typem, TypeList &typel) :
- comp_unit(cunit),type_map(typem),type_list(typel)
- {
- }
-
- bool
- operator() (const lldb::TypeSP& type)
- {
- if (type && type->GetSymbolContextScope() != nullptr && comp_unit == type->GetSymbolContextScope()->CalculateSymbolContextCompileUnit())
- {
- type_list.Insert(type);
- type_map.RemoveTypeWithUID(type->GetID());
- return false;
- }
- return true;
- }
-
-private:
- const CompileUnit * const comp_unit;
- TypeMap &type_map;
- TypeList &type_list;
-};
-
-class TypeMoveMatchingModule
-{
-public:
- TypeMoveMatchingModule(lldb::ModuleSP modsp, TypeMap &typem, TypeList &typel) :
- modulesp(modsp),type_map(typem),type_list(typel)
- {
- }
-
- bool
- operator() (const lldb::TypeSP& type)
- {
- if (type && type->GetSymbolContextScope() != nullptr && modulesp.get() == type->GetSymbolContextScope()->CalculateSymbolContextModule().get())
- {
- type_list.Insert(type);
- type_map.RemoveTypeWithUID(type->GetID());
- return false;
- }
- return true;
- }
-
-private:
- lldb::ModuleSP modulesp;
- TypeMap &type_map;
- TypeList &type_list;
-};
-
-class TypeMaptoList
-{
-public:
- TypeMaptoList(TypeMap &typem, TypeList &typel) :
- type_map(typem),type_list(typel)
- {
- }
-
- bool
- operator() (const lldb::TypeSP& type)
- {
- if(type)
- {
- type_list.Insert(type);
- type_map.RemoveTypeWithUID(type->GetID());
- }
- return true;
- }
-
-private:
- TypeMap &type_map;
- TypeList &type_list;
-};
-
-void
-SymbolContext::SortTypeList(TypeMap &type_map, TypeList &type_list ) const
-{
- Block * curr_block = block;
- bool isInlinedblock = false;
- if(curr_block != nullptr && curr_block->GetContainingInlinedBlock() != nullptr)
- isInlinedblock = true;
-
- while (curr_block != nullptr && !isInlinedblock)
- {
- TypeMoveMatchingBlock callbackBlock (curr_block, type_map, type_list);
- type_map.ForEach(callbackBlock);
- curr_block = curr_block->GetParent();
- }
- if(function != nullptr && type_map.GetSize() > 0)
- {
- TypeMoveMatchingFunction callbackFunction (function, type_map, type_list);
- type_map.ForEach(callbackFunction);
- }
- if(comp_unit != nullptr && type_map.GetSize() > 0)
- {
- TypeMoveMatchingCompileUnit callbackCompileUnit (comp_unit, type_map, type_list);
- type_map.ForEach(callbackCompileUnit);
- }
- if(module_sp && type_map.GetSize() > 0)
- {
- TypeMoveMatchingModule callbackModule (module_sp, type_map, type_list);
- type_map.ForEach(callbackModule);
- }
- if(type_map.GetSize() > 0)
- {
- TypeMaptoList callbackM2L (type_map, type_list);
- type_map.ForEach(callbackM2L);
- }
- return ;
-}
-
ConstString
SymbolContext::GetFunctionName (Mangled::NamePreference preference) const
{
diff --git a/lldb/source/Symbol/SymbolFile.cpp b/lldb/source/Symbol/SymbolFile.cpp
index 5486468181f..3cb686578d9 100644
--- a/lldb/source/Symbol/SymbolFile.cpp
+++ b/lldb/source/Symbol/SymbolFile.cpp
@@ -15,7 +15,7 @@
#include "lldb/Core/PluginManager.h"
#include "lldb/Core/StreamString.h"
#include "lldb/Symbol/ObjectFile.h"
-#include "lldb/Symbol/TypeMap.h"
+#include "lldb/Symbol/TypeList.h"
#include "lldb/Symbol/TypeSystem.h"
#include "lldb/Symbol/VariableList.h"
@@ -135,7 +135,7 @@ SymbolFile::FindFunctions (const RegularExpression& regex, bool include_inlines,
}
uint32_t
-SymbolFile::FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, TypeMap& types)
+SymbolFile::FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, TypeList& types)
{
if (!append)
types.Clear();
diff --git a/lldb/source/Symbol/SymbolVendor.cpp b/lldb/source/Symbol/SymbolVendor.cpp
index 97e2575aaa0..f0b03cf5401 100644
--- a/lldb/source/Symbol/SymbolVendor.cpp
+++ b/lldb/source/Symbol/SymbolVendor.cpp
@@ -346,7 +346,7 @@ SymbolVendor::FindFunctions(const RegularExpression& regex, bool include_inlines
size_t
-SymbolVendor::FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, size_t max_matches, TypeMap& types)
+SymbolVendor::FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, size_t max_matches, TypeList& types)
{
ModuleSP module_sp(GetModule());
if (module_sp)
diff --git a/lldb/source/Symbol/TypeList.cpp b/lldb/source/Symbol/TypeList.cpp
index f181dd66463..2a8ea521286 100644
--- a/lldb/source/Symbol/TypeList.cpp
+++ b/lldb/source/Symbol/TypeList.cpp
@@ -42,7 +42,26 @@ TypeList::Insert (const TypeSP& type_sp)
{
// Just push each type on the back for now. We will worry about uniquing later
if (type_sp)
- m_types.push_back(type_sp);
+ m_types.insert(std::make_pair(type_sp->GetID(), type_sp));
+}
+
+
+bool
+TypeList::InsertUnique (const TypeSP& type_sp)
+{
+ if (type_sp)
+ {
+ user_id_t type_uid = type_sp->GetID();
+ iterator pos, end = m_types.end();
+
+ for (pos = m_types.find(type_uid); pos != end && pos->second->GetID() == type_uid; ++pos)
+ {
+ if (pos->second.get() == type_sp.get())
+ return false;
+ }
+ }
+ Insert (type_sp);
+ return true;
}
//----------------------------------------------------------------------
@@ -97,7 +116,7 @@ TypeList::GetTypeAtIndex(uint32_t idx)
for (pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
{
if (i == 0)
- return *pos;
+ return pos->second;
--i;
}
return TypeSP();
@@ -108,7 +127,7 @@ TypeList::ForEach (std::function <bool(const lldb::TypeSP &type_sp)> const &call
{
for (auto pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
{
- if (!callback(*pos))
+ if (!callback(pos->second))
break;
}
}
@@ -118,17 +137,32 @@ TypeList::ForEach (std::function <bool(lldb::TypeSP &type_sp)> const &callback)
{
for (auto pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
{
- if (!callback(*pos))
+ if (!callback(pos->second))
break;
}
}
+
+bool
+TypeList::RemoveTypeWithUID (user_id_t uid)
+{
+ iterator pos = m_types.find(uid);
+
+ if (pos != m_types.end())
+ {
+ m_types.erase(pos);
+ return true;
+ }
+ return false;
+}
+
+
void
TypeList::Dump(Stream *s, bool show_context)
{
for (iterator pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
{
- pos->get()->Dump(s, show_context);
+ pos->second->Dump(s, show_context);
}
}
@@ -163,7 +197,7 @@ TypeList::RemoveMismatchedTypes (const std::string &type_scope,
for (pos = m_types.begin(); pos != end; ++pos)
{
- Type* the_type = pos->get();
+ Type* the_type = pos->second.get();
bool keep_match = false;
TypeClass match_type_class = eTypeClassAny;
@@ -235,7 +269,7 @@ TypeList::RemoveMismatchedTypes (const std::string &type_scope,
if (keep_match)
{
- matching_types.push_back(*pos);
+ matching_types.insert (*pos);
}
}
m_types.swap(matching_types);
@@ -257,10 +291,10 @@ TypeList::RemoveMismatchedTypes (TypeClass type_class)
for (pos = m_types.begin(); pos != end; ++pos)
{
- Type* the_type = pos->get();
+ Type* the_type = pos->second.get();
TypeClass match_type_class = the_type->GetForwardCompilerType ().GetTypeClass ();
if (match_type_class & type_class)
- matching_types.push_back (*pos);
+ matching_types.insert (*pos);
}
m_types.swap(matching_types);
}
diff --git a/lldb/source/Symbol/TypeMap.cpp b/lldb/source/Symbol/TypeMap.cpp
deleted file mode 100644
index ce450310b1e..00000000000
--- a/lldb/source/Symbol/TypeMap.cpp
+++ /dev/null
@@ -1,313 +0,0 @@
-//===-- TypeMap.cpp --------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-
-// C Includes
-// C++ Includes
-#include <vector>
-
-// Other libraries and framework includes
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/DeclGroup.h"
-
-#include "clang/Basic/Builtins.h"
-#include "clang/Basic/IdentifierTable.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Basic/TargetInfo.h"
-
-#include "llvm/Support/FormattedStream.h"
-#include "llvm/Support/raw_ostream.h"
-
-// Project includes
-#include "lldb/Symbol/SymbolFile.h"
-#include "lldb/Symbol/SymbolVendor.h"
-#include "lldb/Symbol/Type.h"
-#include "lldb/Symbol/TypeMap.h"
-
-using namespace lldb;
-using namespace lldb_private;
-using namespace clang;
-
-TypeMap::TypeMap() :
- m_types ()
-{
-}
-
-//----------------------------------------------------------------------
-// Destructor
-//----------------------------------------------------------------------
-TypeMap::~TypeMap()
-{
-}
-
-void
-TypeMap::Insert (const TypeSP& type_sp)
-{
- // Just push each type on the back for now. We will worry about uniquing later
- if (type_sp)
- m_types.insert(std::make_pair(type_sp->GetID(), type_sp));
-}
-
-
-bool
-TypeMap::InsertUnique (const TypeSP& type_sp)
-{
- if (type_sp)
- {
- user_id_t type_uid = type_sp->GetID();
- iterator pos, end = m_types.end();
-
- for (pos = m_types.find(type_uid); pos != end && pos->second->GetID() == type_uid; ++pos)
- {
- if (pos->second.get() == type_sp.get())
- return false;
- }
- }
- Insert (type_sp);
- return true;
-}
-
-//----------------------------------------------------------------------
-// Find a base type by its unique ID.
-//----------------------------------------------------------------------
-//TypeSP
-//TypeMap::FindType(lldb::user_id_t uid)
-//{
-// iterator pos = m_types.find(uid);
-// if (pos != m_types.end())
-// return pos->second;
-// return TypeSP();
-//}
-
-//----------------------------------------------------------------------
-// Find a type by name.
-//----------------------------------------------------------------------
-//TypeMap
-//TypeMap::FindTypes (const ConstString &name)
-//{
-// // Do we ever need to make a lookup by name map? Here we are doing
-// // a linear search which isn't going to be fast.
-// TypeMap types(m_ast.getTargetInfo()->getTriple().getTriple().c_str());
-// iterator pos, end;
-// for (pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
-// if (pos->second->GetName() == name)
-// types.Insert (pos->second);
-// return types;
-//}
-
-void
-TypeMap::Clear()
-{
- m_types.clear();
-}
-
-uint32_t
-TypeMap::GetSize() const
-{
- return m_types.size();
-}
-
-// GetTypeAtIndex isn't used a lot for large type lists, currently only for
-// type lists that are returned for "image dump -t TYPENAME" commands and other
-// simple symbol queries that grab the first result...
-
-TypeSP
-TypeMap::GetTypeAtIndex(uint32_t idx)
-{
- iterator pos, end;
- uint32_t i = idx;
- for (pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
- {
- if (i == 0)
- return pos->second;
- --i;
- }
- return TypeSP();
-}
-
-void
-TypeMap::ForEach (std::function <bool(const lldb::TypeSP &type_sp)> const &callback) const
-{
- for (auto pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
- {
- if (!callback(pos->second))
- break;
- }
-}
-
-void
-TypeMap::ForEach (std::function <bool(lldb::TypeSP &type_sp)> const &callback)
-{
- for (auto pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
- {
- if (!callback(pos->second))
- break;
- }
-}
-
-
-bool
-TypeMap::RemoveTypeWithUID (user_id_t uid)
-{
- iterator pos = m_types.find(uid);
-
- if (pos != m_types.end())
- {
- m_types.erase(pos);
- return true;
- }
- return false;
-}
-
-
-void
-TypeMap::Dump(Stream *s, bool show_context)
-{
- for (iterator pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
- {
- pos->second->Dump(s, show_context);
- }
-}
-
-void
-TypeMap::RemoveMismatchedTypes (const char *qualified_typename,
- bool exact_match)
-{
- std::string type_scope;
- std::string type_basename;
- TypeClass type_class = eTypeClassAny;
- if (!Type::GetTypeScopeAndBasename (qualified_typename, type_scope, type_basename, type_class))
- {
- type_basename = qualified_typename;
- type_scope.clear();
- }
- return RemoveMismatchedTypes (type_scope, type_basename, type_class, exact_match);
-}
-
-void
-TypeMap::RemoveMismatchedTypes (const std::string &type_scope,
- const std::string &type_basename,
- TypeClass type_class,
- bool exact_match)
-{
- // Our "collection" type currently is a std::map which doesn't
- // have any good way to iterate and remove items from the map
- // so we currently just make a new list and add all of the matching
- // types to it, and then swap it into m_types at the end
- collection matching_types;
-
- iterator pos, end = m_types.end();
-
- for (pos = m_types.begin(); pos != end; ++pos)
- {
- Type* the_type = pos->second.get();
- bool keep_match = false;
- TypeClass match_type_class = eTypeClassAny;
-
- if (type_class != eTypeClassAny)
- {
- match_type_class = the_type->GetForwardCompilerType ().GetTypeClass ();
- if ((match_type_class & type_class) == 0)
- continue;
- }
-
- ConstString match_type_name_const_str (the_type->GetQualifiedName());
- if (match_type_name_const_str)
- {
- const char *match_type_name = match_type_name_const_str.GetCString();
- std::string match_type_scope;
- std::string match_type_basename;
- if (Type::GetTypeScopeAndBasename (match_type_name,
- match_type_scope,
- match_type_basename,
- match_type_class))
- {
- if (match_type_basename == type_basename)
- {
- const size_t type_scope_size = type_scope.size();
- const size_t match_type_scope_size = match_type_scope.size();
- if (exact_match || (type_scope_size == match_type_scope_size))
- {
- keep_match = match_type_scope == type_scope;
- }
- else
- {
- if (match_type_scope_size > type_scope_size)
- {
- const size_t type_scope_pos = match_type_scope.rfind(type_scope);
- if (type_scope_pos == match_type_scope_size - type_scope_size)
- {
- if (type_scope_pos >= 2)
- {
- // Our match scope ends with the type scope we were looking for,
- // but we need to make sure what comes before the matching
- // type scope is a namespace boundary in case we are trying to match:
- // type_basename = "d"
- // type_scope = "b::c::"
- // We want to match:
- // match_type_scope "a::b::c::"
- // But not:
- // match_type_scope "a::bb::c::"
- // So below we make sure what comes before "b::c::" in match_type_scope
- // is "::", or the namespace boundary
- if (match_type_scope[type_scope_pos - 1] == ':' &&
- match_type_scope[type_scope_pos - 2] == ':')
- {
- keep_match = true;
- }
- }
- }
- }
- }
- }
- }
- else
- {
- // The type we are currently looking at doesn't exists
- // in a namespace or class, so it only matches if there
- // is no type scope...
- keep_match = type_scope.empty() && type_basename.compare(match_type_name) == 0;
- }
- }
-
- if (keep_match)
- {
- matching_types.insert (*pos);
- }
- }
- m_types.swap(matching_types);
-}
-
-void
-TypeMap::RemoveMismatchedTypes (TypeClass type_class)
-{
- if (type_class == eTypeClassAny)
- return;
-
- // Our "collection" type currently is a std::map which doesn't
- // have any good way to iterate and remove items from the map
- // so we currently just make a new list and add all of the matching
- // types to it, and then swap it into m_types at the end
- collection matching_types;
-
- iterator pos, end = m_types.end();
-
- for (pos = m_types.begin(); pos != end; ++pos)
- {
- Type* the_type = pos->second.get();
- TypeClass match_type_class = the_type->GetForwardCompilerType ().GetTypeClass ();
- if (match_type_class & type_class)
- matching_types.insert (*pos);
- }
- m_types.swap(matching_types);
-}
diff --git a/lldb/test/lang/c/typedef/Makefile b/lldb/test/lang/c/typedef/Makefile
deleted file mode 100644
index b09a579159d..00000000000
--- a/lldb/test/lang/c/typedef/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-LEVEL = ../../../make
-
-C_SOURCES := main.c
-
-include $(LEVEL)/Makefile.rules
diff --git a/lldb/test/lang/c/typedef/Testtypedef.py b/lldb/test/lang/c/typedef/Testtypedef.py
deleted file mode 100644
index c00bcd4e3c5..00000000000
--- a/lldb/test/lang/c/typedef/Testtypedef.py
+++ /dev/null
@@ -1,51 +0,0 @@
-"""Look up type information for typedefs of same name at different lexical scope and check for correct display."""
-
-import os, time
-import unittest2
-import lldb
-from lldbtest import *
-import lldbutil
-
-class TypedefTestCase(TestBase):
-
- mydir = TestBase.compute_mydir(__file__)
-
- @skipUnlessDarwin
- @dsym_test
- @expectedFailureClang("llvm.org/pr19238")
- def test_with_dsym(self):
- """Test 'image lookup -t a' and check for correct display at different scopes."""
- self.buildDsym()
- self.image_lookup_for_multiple_typedefs()
-
- @dwarf_test
- @expectedFailureClang("llvm.org/pr19238")
- def test_with_dwarf(self):
- """Test 'image lookup -t a' and check for correct display at different scopes."""
- self.buildDwarf()
- self.image_lookup_for_multiple_typedefs()
-
- def image_lookup_for_multiple_typedefs(self):
- """Test 'image lookup -t a' at different scopes and check for correct display."""
- exe = os.path.join(os.getcwd(), "a.out")
- self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
- typearray = ("float", "float", "char", "float", "int", "double", "float", "float")
- arraylen = len(typearray)+1
- for i in range(1,arraylen):
- loc_line = line_number('main.c', '// Set break point ' + str(i) + '.')
- lldbutil.run_break_set_by_file_and_line (self, "main.c",loc_line, num_expected_locations=1, loc_exact=True)
-
- self.runCmd("run", RUN_SUCCEEDED)
-
- for t in typearray:
- self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
- substrs = ['stopped', 'stop reason = breakpoint'])
- self.expect("image lookup -t a", DATA_TYPES_DISPLAYED_CORRECTLY,
- substrs = ['name = "' + t + '"'])
- self.runCmd("continue")
-
-if __name__ == '__main__':
- import atexit
- lldb.SBDebugger.Initialize()
- atexit.register(lambda: lldb.SBDebugger.Terminate())
- unittest2.main()
diff --git a/lldb/test/lang/c/typedef/main.c b/lldb/test/lang/c/typedef/main.c
deleted file mode 100644
index 6c13affbbc1..00000000000
--- a/lldb/test/lang/c/typedef/main.c
+++ /dev/null
@@ -1,40 +0,0 @@
-//===-- main.c --------------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-int main (int argc, char const *argv[])
-{
- typedef float a;
- int i = 0; // Set break point 1.
- i++;
- a floatvariable = 2.7; // Set break point 2.
- {
- typedef char a;
- i++;
- a charvariable = 'a'; // Set break point 3.
- }
- {
- int c = 0;
- c++; // Set break point 4.
- for(i = 0 ; i < 1 ; i++)
- {
- typedef int a;
- a b;
- b = 7; // Set break point 5.
- }
- for(i = 0 ; i < 1 ; i++)
- {
- typedef double a;
- a b;
- b = 3.14; // Set break point 6.
- }
- c = 1; // Set break point 7.
- }
- floatvariable = 2.5;
- floatvariable = 2.8; // Set break point 8.
- return 0;
-}
OpenPOWER on IntegriCloud