Changes from Git (git http://labmaster3.local/git/llvm-project.git)


  1. [lldb/IOHandler] Improve synchronization between IO handlers. (details)
  2. [clangd] Fix DocumentOutline for concepts (details)
Commit 04de24e690d3ff23bf63bc3901765cd8f07723f3 by Jonas Devlieghere
[lldb/IOHandler] Improve synchronization between IO handlers.
The way the IO handlers are currently managed by the debugger is wrong.
The implementation lacks proper synchronization between RunIOHandlerSync
and RunIOHandlers. The latter is meant to be run by the "main thread",
while the former is meant to be run synchronously, potentially from a
different thread.
Imagine a scenario where RunIOHandlerSync is called from a different
thread than RunIOHandlers. Both functions manipulate the debugger's
IOHandlerStack. Although the push and pop operations are synchronized,
the logic to activate, deactivate and run IO handlers is not.
While investigating PR44352, I noticed some weird behavior in the
Editline implementation. One of its members (m_editor_status) was
modified from another thread. This happened because the main thread,
while running RunIOHandlers ended up execution the IOHandlerEditline
created by the breakpoint callback thread. Even worse, due to the lack
of synchronization within the IO handler implementation, both threads
ended up executing the same IO handler.
Most of the time, the IO handlers don't need to run synchronously. The
exception is sourcing commands from external files, like the .lldbinit
I've added a (recursive) mutex to prevent another thread from messing
with the IO handlers wile another thread is running one synchronously.
It has to be recursive, because we might have to source another file
when encountering a command source in the original file.
Differential revision:
The file was addedlldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_callback_command_source/Makefile
The file was addedlldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_callback_command_source/
The file was addedlldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_callback_command_source/source.lldb
The file was modifiedlldb/source/Core/Debugger.cpp
The file was modifiedlldb/include/lldb/Core/Debugger.h
The file was addedlldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_callback_command_source/main.c
Commit fb3d9153c01b9a560680465190d6ecd804e4c486 by kadircet
[clangd] Fix DocumentOutline for concepts
Summary: Fixes
Reviewers: kbobyrev
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95,
Tags: #clang
Differential Revision:
The file was modifiedclang-tools-extra/clangd/unittests/FindSymbolsTests.cpp
The file was modifiedclang-tools-extra/clangd/FindSymbols.cpp