| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[lldb] Add templated CompilerType::GetTypeSystem (NFC) (#140424) Add an overloaded GetTypeSystem to specify the expected type system subclass. Changes code from GetTypeSystem().dyn_cast_or_null<TypeSystemClang>() to GetTypeSystem<TypeSystemClang>(). | 1 年前 | |
[lldb] Update header guards to be consistent and compliant with LLVM (NFC) LLDB has a few different styles of header guards and they're not very consistent because things get moved around or copy/pasted. This patch unifies the header guards across LLDB and converts everything to match LLVM's style. Differential revision: https://reviews.llvm.org/D74743 | 6 年前 | |
[lldb] Add libstdcpp initializer_list formatter (#167515) Make the existing libc++ formatter generic Add initializer_list summary provider. Add test for libstdcpp | 8 个月前 | |
[lldb] Add libstdcpp initializer_list formatter (#167515) Make the existing libc++ formatter generic Add initializer_list summary provider. Add test for libstdcpp | 8 个月前 | |
[lldb][Language] Pass SymbolNameFitsToLanguage parameter by const-ref (#167684) We've been seeing (rare) crashes from both CPlusPlusLanguage::SymbolNameFitsToLanguage and ObjCLanguage::SymbolNameFitsToLanguage when we try to read contents of the ConstStrings of the Mangled parameter. I'm not entirely sure how that can happen (current theory is corrupted stack somehow which overwrites ConstString::m_string to an invalid pointer) but I'm not able to confirm that. One thing these crashes had in common is that they operate on the Mangled object we copied into SymbolNameFitsToLanguage by value. While I can't see off the top why that would cause it to contain unintiailized/corrupt ConstStrings, the class is sufficiently large enough to probably pass it by const & anyway. This is what this patch does. rdar://164519648 | 8 个月前 | |
[lldb] Allow evaluating expressions in C++20 mode This patch allows users to evaluate expressions using expr -l c++20. Currently DWARF keeps the CU's at DW_AT_language at DW_LANG_C_plus_plus_14 even when compiling with -std=c++20. So even in "C++20 programs" expression evaluation will by default be performed in C++11 mode for now. Enabling C++14 has been previously attempted at https://reviews.llvm.org/D80308 There are some remaining issues around evaluating C++20 expressions. Mainly, lack of support for C++20 AST nodes in clang::ASTImporter. But these can be addressed in follow-up patches. | 3 年前 | |
[lldb] Remove remaining uses of llvm::Optional (NFC) This patch removes the unused "using" declarations, updates comments, and removes #include "llvm/ADT/Optional.h". This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716 | 3 年前 | |
[lldb] Show coro_frame in std::coroutine_handle pretty printer (#141516) This commit adjusts the pretty printer for std::coroutine_handle based on recent personal experiences with debugging C++20 coroutines: 1. It adds the coro_frame member. This member exposes the complete coroutine frame contents, including the suspension point id and all internal variables which the compiler decided to persist into the coroutine frame. While this data is highly compiler-specific, inspecting it can help identify the internal state of suspended coroutines. 2. It includes the promise and coro_frame members, even if devirtualization failed and we could not infer the promise type / the coro_frame type. Having them available as void* pointers can still be useful to identify, e.g., which two coroutine handles have the same frame / promise pointers. | 1 年前 | |
[lldb] Show coro_frame in std::coroutine_handle pretty printer (#141516) This commit adjusts the pretty printer for std::coroutine_handle based on recent personal experiences with debugging C++20 coroutines: 1. It adds the coro_frame member. This member exposes the complete coroutine frame contents, including the suspension point id and all internal variables which the compiler decided to persist into the coroutine frame. While this data is highly compiler-specific, inspecting it can help identify the internal state of suspended coroutines. 2. It includes the promise and coro_frame members, even if devirtualization failed and we could not infer the promise type / the coro_frame type. Having them available as void* pointers can still be useful to identify, e.g., which two coroutine handles have the same frame / promise pointers. | 1 年前 | |
[LLDB] Consolidate C++ string buffer summaries (#144258) As part of https://github.com/llvm/llvm-project/pull/143177, I moved the non-libc++ specific formatting of std::strings out to CxxStringTypes as MSVC's STL std::string can also be thought of a pointer+size pair. I named this kind of string "string buffer". This PR picks that change, so the MSVC PR can be smaller. Unfortunately, libstdc++'s std::string does not fit this (it also uses a different string printer function). This resolves two FIXMEs in the libc++ tests, where empty u16 and u32 strings didn't have any prefix (u/U). | 1 年前 | |
[LLDB] Consolidate C++ string buffer summaries (#144258) As part of https://github.com/llvm/llvm-project/pull/143177, I moved the non-libc++ specific formatting of std::strings out to CxxStringTypes as MSVC's STL std::string can also be thought of a pointer+size pair. I named this kind of string "string buffer". This PR picks that change, so the MSVC PR can be smaller. Unfortunately, libstdc++'s std::string does not fit this (it also uses a different string printer function). This resolves two FIXMEs in the libc++ tests, where empty u16 and u32 strings didn't have any prefix (u/U). | 1 年前 | |
[LLDB] Add formatters for MSVC STL std::shared_ptr (#147575) This PR adds formatters for std::shared_ptr and std::weak_ptr. They are similar to the ones from libc++ and libstdc++. [Section from MSVC STL NatVis](https://github.com/microsoft/STL/blob/313964b78a8fd5a52e7965e13781f735bcce13c5/stl/debugger/STL.natvis#L512-L578). To support debugging with PDB debug info, I had to add an early exit in GetDesugaredSmartPointerValue, because with PDB, LLDB doesn't know about template types. This isn't an issue here, since the typedef type is already resolved there, so no casting is needed. The tests don't check for PDB - maybe this should be changed? I don't know a good way to do this. PDB has the downside that it resolves typedefs. Here in particular, the test for element_type would need to be replaced with User and std::string with std::basic_string<char,std::char_traits<char>,std::allocator<char> >. Towards #24834. | 1 年前 | |
[lldb] Add libstdcpp initializer_list formatter (#167515) Make the existing libc++ formatter generic Add initializer_list summary provider. Add test for libstdcpp | 8 个月前 | |
[lldb][DataFormatters] Change ExtractIndexFromString to return std::optional (#138297) This PR is in continuation of https://github.com/llvm/llvm-project/pull/136693. | 1 年前 | |
[lldb] Add libstdcpp initializer_list formatter (#167515) Make the existing libc++ formatter generic Add initializer_list summary provider. Add test for libstdcpp | 8 个月前 | |
[lldb][DataFormatters] Support newer _LIBCPP_COMPRESSED_PAIR layout (#155153) Starting with https://github.com/llvm/llvm-project/pull/154686 the compressed_pair children are now wrapped in an anonymous structure. This patch adjusts the LLDB data-formatters to support that. Outstanding questions: 1. Should GetChildMemberWithName look through anonymous structures? That will break users most likely. But maybe introducing a new API is worth it? Then we wouldnt have to do this awkward passing around of anon_struct_index 2. Do we support the layout without the anonymous structure? It's not too much added complexity. And we did release that version of libc++, so there is code out there compiled against it. But there is no great way of testing it (some of our macOS matrix bots do test it i suppose, but not in a targeted way). We have the layout "simulator" tests for some of the STL types which I will adjust. | 11 个月前 | |
| 1 年前 | ||
[lldb][Format] Add function.suffix frame-format variable (#137763) This patch adds another frame-format variable (currently only implemented in the CPlusPlus language plugin) that represents the "suffix" of a function. The name is derived from the DotSuffix node of LLVM's Itanium demangler. For a function name such as int foo() (.cold), the suffix would be (.cold). | 1 年前 | |
[lldb] Fixed UB in CPlusPlusLanguage plug-in (#158304) C++11 allows the use of Universal Character Names (UCNs) in identifiers, including function names. According to the spec the behavior of std::isalpha(ch) and std::isalnum(ch) is undefined if the argument's value is neither representable as unsigned char nor equal to EOF. To use these functions safely with plain chars (or signed chars), the argument should first be converted to unsigned char. | 10 个月前 | |
[lldb] Add libstdcpp initializer_list formatter (#167515) Make the existing libc++ formatter generic Add initializer_list summary provider. Add test for libstdcpp | 8 个月前 | |
[LLDB] Check type before creating std::atomic synthetic children (#163176) From https://github.com/llvm/llvm-project/pull/163077#issuecomment-3396435083: Currently, std::atomic<T> will always use the MSVC STL synthetic children and summary. When inspecting types from other STLs, the output would not show any children. This PR adds a check that std::atomic contains _Storage to be classified as coming from MSVC's STL. | 9 个月前 | |
[LLDB] Check type before creating std::atomic synthetic children (#163176) From https://github.com/llvm/llvm-project/pull/163077#issuecomment-3396435083: Currently, std::atomic<T> will always use the MSVC STL synthetic children and summary. When inspecting types from other STLs, the output would not show any children. This PR adds a check that std::atomic contains _Storage to be classified as coming from MSVC's STL. | 9 个月前 | |
[lldb][DataFormatters] Support newer _LIBCPP_COMPRESSED_PAIR layout (#155153) Starting with https://github.com/llvm/llvm-project/pull/154686 the compressed_pair children are now wrapped in an anonymous structure. This patch adjusts the LLDB data-formatters to support that. Outstanding questions: 1. Should GetChildMemberWithName look through anonymous structures? That will break users most likely. But maybe introducing a new API is worth it? Then we wouldnt have to do this awkward passing around of anon_struct_index 2. Do we support the layout without the anonymous structure? It's not too much added complexity. And we did release that version of libc++, so there is code out there compiled against it. But there is no great way of testing it (some of our macOS matrix bots do test it i suppose, but not in a targeted way). We have the layout "simulator" tests for some of the STL types which I will adjust. | 11 个月前 | |
[lldb][DataFormatters] Change ExtractIndexFromString to return std::optional (#138297) This PR is in continuation of https://github.com/llvm/llvm-project/pull/136693. | 1 年前 | |
[lldb] Upgrade GetIndexOfChildWithName to use llvm::Expected (#136693) This patch replaces the use of UINT32_MAX as the error return value of GetIndexOfChildWithName with llvm::Expected. # Tasks to do in another PR 1. Replace CalculateNumChildrenIgnoringErrors with CalculateNumChildren. See [this comment](https://github.com/llvm/llvm-project/pull/136693#discussion_r2056319358). 2. Update lldb_private::formatters::ExtractIndexFromString to use llvm::Expected. See [this comment](https://github.com/llvm/llvm-project/pull/136693#discussion_r2054217536). 3. Create a new class which carries both user and internal errors. See [this comment](https://github.com/llvm/llvm-project/pull/136693#discussion_r2056439608). | 1 年前 | |
[lldb] Upgrade GetIndexOfChildWithName to use llvm::Expected (#136693) This patch replaces the use of UINT32_MAX as the error return value of GetIndexOfChildWithName with llvm::Expected. # Tasks to do in another PR 1. Replace CalculateNumChildrenIgnoringErrors with CalculateNumChildren. See [this comment](https://github.com/llvm/llvm-project/pull/136693#discussion_r2056319358). 2. Update lldb_private::formatters::ExtractIndexFromString to use llvm::Expected. See [this comment](https://github.com/llvm/llvm-project/pull/136693#discussion_r2054217536). 3. Create a new class which carries both user and internal errors. See [this comment](https://github.com/llvm/llvm-project/pull/136693#discussion_r2056439608). | 1 年前 | |
[lldb][DataFormatters] Change ExtractIndexFromString to return std::optional (#138297) This PR is in continuation of https://github.com/llvm/llvm-project/pull/136693. | 1 年前 | |
[lldb][DataFormatters] Change ExtractIndexFromString to return std::optional (#138297) This PR is in continuation of https://github.com/llvm/llvm-project/pull/136693. | 1 年前 | |
[lldb][DataFormatters] Change ExtractIndexFromString to return std::optional (#138297) This PR is in continuation of https://github.com/llvm/llvm-project/pull/136693. | 1 年前 | |
[lldb][DataFormatter][NFC] LibCxxUnorderedMap: remove unused variable (#163226) Unused since its introduction in e2e220a805b143d9bc8544abedff30204dcf6629. | 9 个月前 | |
[lldb][DataFormatters] Change ExtractIndexFromString to return std::optional (#138297) This PR is in continuation of https://github.com/llvm/llvm-project/pull/136693. | 1 年前 | |
[lldb][DataFormatters] Change ExtractIndexFromString to return std::optional (#138297) This PR is in continuation of https://github.com/llvm/llvm-project/pull/136693. | 1 年前 | |
[lldb] Move ValueObject into its own library (NFC) (#113393) ValueObject is part of lldbCore for historical reasons, but conceptually it deserves to be its own library. This does introduce a (link-time) circular dependency between lldbCore and lldbValueObject, which is unfortunate but probably unavoidable because so many things in LLDB rely on ValueObject. We already have cycles and these libraries are never built as dylibs so while this doesn't improve the situation, it also doesn't make things worse. The header includes were updated with the following command: find . -type f -exec sed -i.bak "s%include \"lldb/Core/ValueObject%include \"lldb/ValueObject/ValueObject%" '{}' \; | 1 年前 | |
[lldb] Correct style of error messages (#156774) The LLVM Style Guide says the following about error and warning messages [1]: > [T]o match error message styles commonly produced by other tools, > start the first sentence with a lowercase letter, and finish the last > sentence without a period, if it would end in one otherwise. I often provide this feedback during code review, but we still have a bunch of places where we have inconsistent error message, which bothers me as a user. This PR identifies a handful of those places and updates the messages to be consistent. [1] https://llvm.org/docs/CodingStandards.html#error-and-warning-messages | 10 个月前 | |
[NFC][lldb] Remove duplicated checks (#169093) Removed duplicated checks reported by cppcheck | 8 个月前 | |
[LLDB] Add formatters for MSVC STL std::variant (#148554) Adds a summary and synthetic children for MSVC STL's std::variant. This one is a bit complicated because of DWARF vs PDB differences. I put the representations in comments. Being able to GetChildMemberWithName a member in an anonymous union would make this a lot simpler (std::optional will have something similar iirc). Towards #24834. | 1 年前 | |
[lldb][DataFormatters] Change ExtractIndexFromString to return std::optional (#138297) This PR is in continuation of https://github.com/llvm/llvm-project/pull/136693. | 1 年前 | |
[lldb][Formatter] Consolidate libstdc++ and libc++ unique_ptr formatter tests into generic test (#147031) The libc++ test was a subset of the tests in libstdc++. This test moves the libc++ test into generic and somne additional test-cases from libstdc++ (specifically the recursive unique_ptr case). It turns out the libstdc++ formatter supports dereferencing using the "object" or "obj" names. We could either drop those from the tests or support the same for libc++. I took the latter approach but don't have strong opinions on this. Split out from https://github.com/llvm/llvm-project/pull/146740 | 1 年前 | |
[LLDB][NativePDB] Global ctor and dtor should be global decls. This fixes a crash that mistaken global ctor/dtor as funciton methods. Differential Revision: https://reviews.llvm.org/D133446 | 3 年前 | |
[lldb] Update header guards to be consistent and compliant with LLVM (NFC) LLDB has a few different styles of header guards and they're not very consistent because things get moved around or copy/pasted. This patch unifies the header guards across LLDB and converts everything to match LLVM's style. Differential revision: https://reviews.llvm.org/D74743 | 6 年前 | |
| 1 年前 | ||
[LLDB] Check type before creating std::atomic synthetic children (#163176) From https://github.com/llvm/llvm-project/pull/163077#issuecomment-3396435083: Currently, std::atomic<T> will always use the MSVC STL synthetic children and summary. When inspecting types from other STLs, the output would not show any children. This PR adds a check that std::atomic contains _Storage to be classified as coming from MSVC's STL. | 9 个月前 | |
[lldb] Only get child if m_storage and m_element_type is valid (#163077) This causes a crash because lldb-dap will check the first child to see if it is array like to lazy load the children. | 9 个月前 | |
[LLDB] Add formatters for MSVC STL std::deque (#150097) This PR adds synthetic children for std::deque from MSVC's STL. Similar to libstdc++ and libc++, the elements are in a T**, so we need to "subscript" twice. The [NatVis for deque](https://github.com/microsoft/STL/blob/313964b78a8fd5a52e7965e13781f735bcce13c5/stl/debugger/STL.natvis#L1103-L1112) uses _EEN_DS which contains the block size. We can't access this, but we can access the [constexpr _Block_size](https://github.com/microsoft/STL/blob/313964b78a8fd5a52e7965e13781f735bcce13c5/stl/inc/deque#L641). Towards #24834. | 1 年前 | |
[LLDB] Add formatters for MSVC STL std::unique_ptr (#148248) This PR adds a summary and synthetic children for std::unique_ptr from MSVC's STL ([NatVis](https://github.com/microsoft/STL/blob/313964b78a8fd5a52e7965e13781f735bcce13c5/stl/debugger/STL.natvis#L285-L303)). As with libc++, the deleter is only shown if it's non-empty. Tested both the shared_ptr and unique_ptr tests on Windows. Towards #24834. | 1 年前 | |
[LLDB] Add formatters for MSVC STL map-like types (#148385) This PR adds formatters for std::map, std::set, std::multimap, std::multiset as well as their iterators. It's done in one PR because the types are essentially the same (a tree) except for their value type. The iterators are required because of the tests. MsvcStlTreeIterSyntheticFrontEnd is based on the libc++ equivalent. As opposed to std::list, there aren't that many duplicates, so I didn't create a generic type. For reference, the tree is implemented in https://github.com/microsoft/STL/blob/313964b78a8fd5a52e7965e13781f735bcce13c5/stl/inc/xtree. Towards #24834. | 1 年前 | |
[LLDB] Add formatters for MSVC STL std::tuple (#148548) Adds synthetic children for MSVC STL's [ std::tuple](https://github.com/microsoft/STL/blob/313964b78a8fd5a52e7965e13781f735bcce13c5/stl/inc/tuple). A tuple is a chain of base classes: cpp template <> class tuple<> {}; template <class _This, class... _Rest> class tuple<_This, _Rest...> : private tuple<_Rest...> { _Tuple_val<_This> _Myfirst; }; So the provider walks the base classes to the desired one. The implementation makes it hard to detect if the empty tuple is from this STL. Fortunately, libstdc++'s synthetic children provider works for empty MSVC STL tuples as well. Towards #24834. | 1 年前 | |
[LLDB] Add formatters for MSVC STL unordered containers (#149519) Adds formatters for MSVC STL's unordered containers. This one is relatively simple, because it can reuse the std::list synthetic children. The unordered containers (aka [_Hash](https://github.com/microsoft/STL/blob/313964b78a8fd5a52e7965e13781f735bcce13c5/stl/inc/xhash#L327)) contain a [_List](https://github.com/microsoft/STL/blob/313964b78a8fd5a52e7965e13781f735bcce13c5/stl/inc/xhash#L2012) which contains all elements (and is used for iterating through the container). Towards https://github.com/llvm/llvm-project/issues/24834. | 1 年前 | |
[LLDB] Add formatters for MSVC STL std::variant (#148554) Adds a summary and synthetic children for MSVC STL's std::variant. This one is a bit complicated because of DWARF vs PDB differences. I put the representations in comments. Being able to GetChildMemberWithName a member in an anonymous union would make this a lot simpler (std::optional will have something similar iirc). Towards #24834. | 1 年前 | |
[lldb] Correct style of error messages (#156774) The LLVM Style Guide says the following about error and warning messages [1]: > [T]o match error message styles commonly produced by other tools, > start the first sentence with a lowercase letter, and finish the last > sentence without a period, if it would end in one otherwise. I often provide this feedback during code review, but we still have a bunch of places where we have inconsistent error message, which bothers me as a user. This PR identifies a handful of those places and updates the messages to be consistent. [1] https://llvm.org/docs/CodingStandards.html#error-and-warning-messages | 10 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 6 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 6 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 |