diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp index 6f2cb455ec00e..c71c2dd47344a 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp @@ -527,7 +527,7 @@ void DebugNamesDWARFIndex::GetTypesWithQuery( ConstString name = query.GetTypeBasename(); std::vector query_context = query.GetContextRef(); - if (query_context.size() <= 1) + if (query_context.size() <= 1 && !query.GetExactMatch()) return GetTypes(name, callback); llvm::SmallVector parent_contexts = diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-type.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-type.cpp index 2ed7b219d8da3..af49206608723 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-type.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-type.cpp @@ -4,6 +4,8 @@ // RUN: ld.lld %t.o -o %t // RUN: lldb-test symbols --name=foo --find=type %t | \ // RUN: FileCheck --check-prefix=NAME %s +// RUN: lldb-test symbols --name=::foo --find=type %t | \ +// RUN: FileCheck --check-prefix=EXACT %s // RUN: lldb-test symbols --name=foo --context=context --find=type %t | \ // RUN: FileCheck --check-prefix=CONTEXT %s // RUN: lldb-test symbols --name=not_there --find=type %t | \ @@ -12,6 +14,8 @@ // RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx // RUN: lldb-test symbols --name=foo --find=type %t | \ // RUN: FileCheck --check-prefix=NAME %s +// RUN: lldb-test symbols --name=::foo --find=type %t | \ +// RUN: FileCheck --check-prefix=EXACT %s // RUN: lldb-test symbols --name=foo --context=context --find=type %t | \ // RUN: FileCheck --check-prefix=CONTEXT %s // RUN: lldb-test symbols --name=not_there --find=type %t | \ @@ -22,6 +26,8 @@ // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES // RUN: lldb-test symbols --name=foo --find=type %t | \ // RUN: FileCheck --check-prefix=NAME %s +// RUN: lldb-test symbols --name=::foo --find=type %t | \ +// RUN: FileCheck --check-prefix=EXACT %s // RUN: lldb-test symbols --name=foo --context=context --find=type %t | \ // RUN: FileCheck --check-prefix=CONTEXT %s // RUN: lldb-test symbols --name=not_there --find=type %t | \ @@ -31,9 +37,11 @@ // EMPTY: Found 0 types: // NAME: Found 4 types: +// EXACT: Found 1 types: // CONTEXT: Found 1 types: struct foo { }; // NAME-DAG: name = "foo", {{.*}} decl = find-basic-type.cpp:[[@LINE-1]] +// EXACT-DAG: name = "foo", {{.*}} decl = find-basic-type.cpp:[[@LINE-2]] namespace bar { int context;