[all-commits] [llvm/llvm-project] 333900: We don't require users to type out the full contex...

jimingham via All-commits all-commits at lists.llvm.org
Thu May 12 12:39:44 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3339000e0bda696c2e29173d15958c0a4978a143
      https://github.com/llvm/llvm-project/commit/3339000e0bda696c2e29173d15958c0a4978a143
  Author: Jim Ingham <jingham at apple.com>
  Date:   2022-05-12 (Thu, 12 May 2022)

  Changed paths:
    M lldb/include/lldb/Target/Language.h
    M lldb/source/Core/Module.cpp
    M lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
    M lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
    M lldb/source/Target/Language.cpp
    M lldb/test/API/functionalities/breakpoint/cpp/TestCPPBreakpointLocations.py
    M lldb/test/API/functionalities/breakpoint/cpp/main.cpp
    M lldb/test/API/functionalities/return-value/TestReturnValue.py
    M lldb/test/API/macosx/indirect_symbol/TestIndirectSymbols.py
    M lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp

  Log Message:
  -----------
  We don't require users to type out the full context of a function, for
symbol name matches. Instead, we extract the incoming path's base
name, look up all the symbols with that base name, and then compare
the rest of the context that the user provided to make sure it
matches. However, we do this comparison using just a strstr. So for
instance:

break set -n foo::bar

will match not only "a::foo::bar" but "notherfoo::bar". The former is
pretty clearly the user's intent, but I don't think the latter is, and
results in breakpoints picking up too many matches.

This change adds a Language::DemangledNameContainsPath API which can
do a language aware match against the path provided. If the language
doesn't provide this we fall back to the strstr (though that's changed
to StringRef::contains in the patch).

Differential Revision: https://reviews.llvm.org/D124579




More information about the All-commits mailing list