| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Re-land [lldb][NFC] Mark ValueObject library with NO_PLUGIN_DEPENDENCIES (#167933) This is a fixed version of #167886. The build previously failed with BUILD_SHARED_LIBS=ON. After trying that locally, I uncovered a few other instances of lldb non-plugin libraries depending on clang transitively through lldbValueObject, so I added the correct clang libraries to their dependencies. | 8 个月前 | |
[lldb] Introduce internal stop hooks (#164506) Introduce the concept of internal stop hooks. These are similar to LLDB's internal breakpoints: LLDB itself will add them and users of LLDB will not be able to add or remove them. This change adds the following 3 independently-useful concepts: * Maintain a list of internal stop hooks that will be populated by LLDB and cannot be added to or removed from by users. They are managed in a separate list in Target::m_internal_stop_hooks. * StopHookKind:CodeBased and StopHookCoded represent a stop hook defined by a C++ code callback (instead of command line expressions or a Python class). * Stop hooks that do not print any output can now also suppress the printing of their header and description when they are hit via StopHook::GetSuppressOutput. Combining these 3 concepts we can model "internal stop hooks" which serve the same function as LLDB's internal breakpoints: executing built-in, LLDB-defined behavior, leveraging the existing mechanism of stop hooks. This change also simplifies Target::RunStopHooks. We already have to materialize a new list for combining internal and user stop hooks. Filter and only add active hooks to this list to avoid the need for "isActive?" checks later on. | 9 个月前 | |
Start to clean up the process of defining command arguments. (#83097) Partly, there's just a lot of unnecessary boiler plate. It's also possible to define combinations of arguments that make no sense (e.g. eArgRepeatPlus followed by eArgRepeatPlain...) but these are never checked since we just push_back directly into the argument definitions. This commit is step 1 of this cleanup - do the obvious stuff. In it, all the simple homogenous argument lists and the breakpoint/watchpoint ID/Range types, are set with common functions. This is an NFC change, it just centralizes boiler plate. There's no checking yet because you can't get a single argument wrong. The end goal is that all argument definition goes through functions and m_arguments is hidden so that you can't define inconsistent argument sets. | 2 年前 | |
[lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) return void (not bool) (#69991) [lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) to return void instead of ~~bool~~ Justifications: - The code doesn't ultimately apply the true/false return values. - The methods already pass around a CommandReturnObject, typically with a result parameter. - Each command return object already contains: - A more precise status - The error code(s) that apply to that status Part 1 refactors the CommandObject::Execute(...) method. - See [https://github.com/llvm/llvm-project/pull/69989](https://github.com/llvm/llvm-project/pull/69989) rdar://117378957 | 2 年前 | |
[lldb] Eliminate SupportFileSP nullptr derefs (#168624) This patch fixes and eliminates the possibility of SupportFileSP ever being nullptr. The support file was originally treated like a value type, but became a polymorphic type and therefore has to be stored and passed around as a pointer. To avoid having all the callers check the validity of the pointer, I introduced the invariant that SupportFileSP is never null and always default constructed. However, without enforcement at the type level, that's fragile and indeed, we already identified two crashes where someone accidentally broke that invariant. This PR introduces a NonNullSharedPtr to prevent that. NonNullSharedPtr is a smart pointer wrapper around std::shared_ptr that guarantees the pointer is never null. If default-constructed, it creates a default-constructed instance of the contained type. Note that I'm using private inheritance because you shouldn't inherit from standard library classes due to the lack of virtual destructor. So while the new abstraction looks like a std::shared_ptr, it is in fact **not** a shared pointer. Given that our destructor is trivial, we could use public inheritance, but currently there's no need for it. rdar://164989579 | 8 个月前 | |
[lldb] Eliminate more Targer* in favor of Target& in CommandObjects (NFC) The majority of the replaced Target pointers were already used unconditionally and the few that were shouldn't even be NULL. | 1 年前 | |
[lldb] Synchronize the debuggers output & error streams This patch improves the synchronization of the debugger's output and error streams using two new abstractions: LockableStreamFile and LockedStreamFile. - LockableStreamFile is a wrapper around a StreamFile and a mutex. Client cannot use the StreamFile without calling Lock, which returns a LockedStreamFile. - LockedStreamFile is an RAII object that locks the stream for the duration of its existence. As long as you hold on to the returned object you are permitted to write to the stream. The destruction of the object automatically flush the output stream. | 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] 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 个月前 | |
[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] Mark single-argument SourceLanguage constructors explicit (#166527) This avoids unintentional comparisons between SourceLanguage and LanguageType. Also marks operator bool explicit so we don't implicitly convert to bool. | 8 个月前 | |
Add the RegisterCompleter to eArgTypeRegisterName in g_argument_table (#82428) This is a follow-on to: https://github.com/llvm/llvm-project/pull/82085 The completer for register names was missing from the argument table. I somehow missed that the only register completer test was x86_64, so that test broke. I added the completer in to the right slot in the argument table, and added a small completions test that just uses the alias register names. If we end up having a platform that doesn't define register names, we'll have to skip this test there, but it should add a sniff test for register completion that will run most everywhere. | 2 年前 | |
[lldb] Remove redundant control flow statements (NFC) (#141183) | 1 年前 | |
[lldb] Add a "diagnostics dump" command Add a "diagnostics dump" command to, as the name implies, dump the diagnostics to disk. The goal of this command is to let the user generate the diagnostics in case of an issue that doesn't cause the debugger to crash. This command is also critical for testing, where we don't want to cause a crash to emit the diagnostics. Differential revision: https://reviews.llvm.org/D135622 | 3 年前 | |
Stateful variable-location annotations in Disassembler::PrintInstructions() (follow-up to #147460) (#152887) **Context** Follow-up to [#147460](https://github.com/llvm/llvm-project/pull/147460), which added the ability to surface register-resident variable locations. This PR moves the annotation logic out of Instruction::Dump() and into Disassembler::PrintInstructions(), and adds lightweight state tracking so we only print changes at range starts and when variables go out of scope. --- ## What this does While iterating the instructions for a function, we maintain a “live variable map” keyed by lldb::user_id_t (the Variable’s ID) to remember each variable’s last emitted location string. For each instruction: - **New (or newly visible) variable** → print name = <location> once at the start of its DWARF location range, cache it. - **Location changed** (e.g., DWARF range switched to a different register/const) → print the updated mapping. - **Out of scope** (was tracked previously but not found for the current PC) → print name = <undef> and drop it. This produces **concise, stateful annotations** that highlight variable lifetime transitions without spamming every line. --- ## Why in PrintInstructions()? - Keeps Instruction stateless and avoids changing the Instruction::Dump() virtual API. - Makes it straightforward to diff state across instructions (prev → current) inside the single driver loop. --- ## How it works (high-level) 1. For the current PC, get in-scope variables via StackFrame::GetInScopeVariableList(/*get_parent=*/true). 2. For each Variable, query DWARFExpressionList::GetExpressionEntryAtAddress(func_load_addr, current_pc) (added in #144238). 3. If the entry exists, call DumpLocation(..., eDescriptionLevelBrief, abi) to get a short, ABI-aware location string (e.g., DW_OP_reg3 RBX → RBX). 4. Compare against the last emitted location in the live map: - If not present → emit name = <location> and record it. - If different → emit updated mapping and record it. 5. After processing current in-scope variables, compute the set difference vs. the previous map and emit name = <undef> for any that disappeared. Internally: - We respect file↔load address translation already provided by DWARFExpressionList. - We reuse the ABI to map LLVM register numbers to arch register names. --- ## Example output (x86_64, simplified) -> 0x55c6f5f6a140 <+0>: cmpl $0x2, %edi ; argc = RDI, argv = RSI 0x55c6f5f6a143 <+3>: jl 0x55c6f5f6a176 ; <+54> at d_original_example.c:6:3 0x55c6f5f6a145 <+5>: pushq %r15 0x55c6f5f6a147 <+7>: pushq %r14 0x55c6f5f6a149 <+9>: pushq %rbx 0x55c6f5f6a14a <+10>: movq %rsi, %rbx 0x55c6f5f6a14d <+13>: movl %edi, %r14d 0x55c6f5f6a150 <+16>: movl $0x1, %r15d ; argc = R14 0x55c6f5f6a156 <+22>: nopw %cs:(%rax,%rax) ; i = R15, argv = RBX 0x55c6f5f6a160 <+32>: movq (%rbx,%r15,8), %rdi 0x55c6f5f6a164 <+36>: callq 0x55c6f5f6a030 ; symbol stub for: puts 0x55c6f5f6a169 <+41>: incq %r15 0x55c6f5f6a16c <+44>: cmpq %r15, %r14 0x55c6f5f6a16f <+47>: jne 0x55c6f5f6a160 ; <+32> at d_original_example.c:5:10 0x55c6f5f6a171 <+49>: popq %rbx ; i = <undef> 0x55c6f5f6a172 <+50>: popq %r14 ; argv = RSI 0x55c6f5f6a174 <+52>: popq %r15 ; argc = RDI 0x55c6f5f6a176 <+54>: xorl %eax, %eax 0x55c6f5f6a178 <+56>: retq Only transitions are shown: the start of a location, changes, and end-of-lifetime. --- ## Scope & limitations (by design) - Handles **simple locations** first (registers, const-in-register cases surfaced by DumpLocation). - **Memory/composite locations** are out of scope for this PR. - Annotations appear **only at range boundaries** (start/change/end) to minimize noise. - Output is **target-independent**; register names come from the target ABI. ## Implementation notes - All annotation printing now happens in Disassembler::PrintInstructions(). - Uses std::unordered_map<lldb::user_id_t, std::string> as the live map. - No persistent state across calls; the map is rebuilt while walking instruction by instruction. - **No changes** to the Instruction interface. --- ## Requested feedback - Placement and wording of the <undef> marker. - Whether we should optionally gate this behind a setting (currently always on when disassembling with an ExecutionContext). - Preference for immediate inclusion of tests vs. follow-up patch. --- Thanks for reviewing! Happy to adjust behavior/format based on feedback. --------- Co-authored-by: Jonas Devlieghere <jonas@devlieghere.com> Co-authored-by: Adrian Prantl <adrian.prantl@gmail.com> | 11 个月前 | |
Stateful variable-location annotations in Disassembler::PrintInstructions() (follow-up to #147460) (#152887) **Context** Follow-up to [#147460](https://github.com/llvm/llvm-project/pull/147460), which added the ability to surface register-resident variable locations. This PR moves the annotation logic out of Instruction::Dump() and into Disassembler::PrintInstructions(), and adds lightweight state tracking so we only print changes at range starts and when variables go out of scope. --- ## What this does While iterating the instructions for a function, we maintain a “live variable map” keyed by lldb::user_id_t (the Variable’s ID) to remember each variable’s last emitted location string. For each instruction: - **New (or newly visible) variable** → print name = <location> once at the start of its DWARF location range, cache it. - **Location changed** (e.g., DWARF range switched to a different register/const) → print the updated mapping. - **Out of scope** (was tracked previously but not found for the current PC) → print name = <undef> and drop it. This produces **concise, stateful annotations** that highlight variable lifetime transitions without spamming every line. --- ## Why in PrintInstructions()? - Keeps Instruction stateless and avoids changing the Instruction::Dump() virtual API. - Makes it straightforward to diff state across instructions (prev → current) inside the single driver loop. --- ## How it works (high-level) 1. For the current PC, get in-scope variables via StackFrame::GetInScopeVariableList(/*get_parent=*/true). 2. For each Variable, query DWARFExpressionList::GetExpressionEntryAtAddress(func_load_addr, current_pc) (added in #144238). 3. If the entry exists, call DumpLocation(..., eDescriptionLevelBrief, abi) to get a short, ABI-aware location string (e.g., DW_OP_reg3 RBX → RBX). 4. Compare against the last emitted location in the live map: - If not present → emit name = <location> and record it. - If different → emit updated mapping and record it. 5. After processing current in-scope variables, compute the set difference vs. the previous map and emit name = <undef> for any that disappeared. Internally: - We respect file↔load address translation already provided by DWARFExpressionList. - We reuse the ABI to map LLVM register numbers to arch register names. --- ## Example output (x86_64, simplified) -> 0x55c6f5f6a140 <+0>: cmpl $0x2, %edi ; argc = RDI, argv = RSI 0x55c6f5f6a143 <+3>: jl 0x55c6f5f6a176 ; <+54> at d_original_example.c:6:3 0x55c6f5f6a145 <+5>: pushq %r15 0x55c6f5f6a147 <+7>: pushq %r14 0x55c6f5f6a149 <+9>: pushq %rbx 0x55c6f5f6a14a <+10>: movq %rsi, %rbx 0x55c6f5f6a14d <+13>: movl %edi, %r14d 0x55c6f5f6a150 <+16>: movl $0x1, %r15d ; argc = R14 0x55c6f5f6a156 <+22>: nopw %cs:(%rax,%rax) ; i = R15, argv = RBX 0x55c6f5f6a160 <+32>: movq (%rbx,%r15,8), %rdi 0x55c6f5f6a164 <+36>: callq 0x55c6f5f6a030 ; symbol stub for: puts 0x55c6f5f6a169 <+41>: incq %r15 0x55c6f5f6a16c <+44>: cmpq %r15, %r14 0x55c6f5f6a16f <+47>: jne 0x55c6f5f6a160 ; <+32> at d_original_example.c:5:10 0x55c6f5f6a171 <+49>: popq %rbx ; i = <undef> 0x55c6f5f6a172 <+50>: popq %r14 ; argv = RSI 0x55c6f5f6a174 <+52>: popq %r15 ; argc = RDI 0x55c6f5f6a176 <+54>: xorl %eax, %eax 0x55c6f5f6a178 <+56>: retq Only transitions are shown: the start of a location, changes, and end-of-lifetime. --- ## Scope & limitations (by design) - Handles **simple locations** first (registers, const-in-register cases surfaced by DumpLocation). - **Memory/composite locations** are out of scope for this PR. - Annotations appear **only at range boundaries** (start/change/end) to minimize noise. - Output is **target-independent**; register names come from the target ABI. ## Implementation notes - All annotation printing now happens in Disassembler::PrintInstructions(). - Uses std::unordered_map<lldb::user_id_t, std::string> as the live map. - No persistent state across calls; the map is rebuilt while walking instruction by instruction. - **No changes** to the Instruction interface. --- ## Requested feedback - Placement and wording of the <undef> marker. - Whether we should optionally gate this behind a setting (currently always on when disassembling with an ExecutionContext). - Preference for immediate inclusion of tests vs. follow-up patch. --- Thanks for reviewing! Happy to adjust behavior/format based on feedback. --------- Co-authored-by: Jonas Devlieghere <jonas@devlieghere.com> Co-authored-by: Adrian Prantl <adrian.prantl@gmail.com> | 11 个月前 | |
[NFC][lldb] move DiagnosticsRendering to Host (#168696) NFC patch which moves DiagnosticsRendering from Utility to Host. This refactoring is needed for https://github.com/llvm/llvm-project/pull/168603. It adds a method to check whether the current terminal supports Unicode or not. This will be OS dependent and a better fit for Host. Since Utility cannot depend on Host, DiagnosticsRendering must live in Host instead. | 8 个月前 | |
[lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) return void (not bool) (#69991) [lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) to return void instead of ~~bool~~ Justifications: - The code doesn't ultimately apply the true/false return values. - The methods already pass around a CommandReturnObject, typically with a result parameter. - Each command return object already contains: - A more precise status - The error code(s) that apply to that status Part 1 refactors the CommandObject::Execute(...) method. - See [https://github.com/llvm/llvm-project/pull/69989](https://github.com/llvm/llvm-project/pull/69989) rdar://117378957 | 2 年前 | |
[lldb] When starting in a hidden frame, don't skip over hidden frames when navigating up/down (#166394) When stopped in a hidden frame (either because we selected the hidden frame or hit a breakpoint inside it), a user most likely is intersted in exploring the immediate frames around it. But currently issuing up/down commands will unconditionally skip over all hidden frames. This patch makes it so up/down commands don't skip hidden frames if the frame we started it was a hidden frame. | 8 个月前 | |
[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] Make GetOutputStreamSP and GetErrorStreamSP protected (#127682) This makes GetOutputStreamSP and GetErrorStreamSP protected members of Debugger. Users who want to print to the debugger's stream should use GetAsyncOutputStreamSP and GetAsyncErrorStreamSP instead and the few remaining stragglers have been migrated. | 1 年前 | |
[lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) return void (not bool) (#69991) [lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) to return void instead of ~~bool~~ Justifications: - The code doesn't ultimately apply the true/false return values. - The methods already pass around a CommandReturnObject, typically with a result parameter. - Each command return object already contains: - A more precise status - The error code(s) that apply to that status Part 1 refactors the CommandObject::Execute(...) method. - See [https://github.com/llvm/llvm-project/pull/69989](https://github.com/llvm/llvm-project/pull/69989) rdar://117378957 | 2 年前 | |
Start to clean up the process of defining command arguments. (#83097) Partly, there's just a lot of unnecessary boiler plate. It's also possible to define combinations of arguments that make no sense (e.g. eArgRepeatPlus followed by eArgRepeatPlain...) but these are never checked since we just push_back directly into the argument definitions. This commit is step 1 of this cleanup - do the obvious stuff. In it, all the simple homogenous argument lists and the breakpoint/watchpoint ID/Range types, are set with common functions. This is an NFC change, it just centralizes boiler plate. There's no checking yet because you can't get a single argument wrong. The end goal is that all argument definition goes through functions and m_arguments is hidden so that you can't define inconsistent argument sets. | 2 年前 | |
[lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) return void (not bool) (#69991) [lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) to return void instead of ~~bool~~ Justifications: - The code doesn't ultimately apply the true/false return values. - The methods already pass around a CommandReturnObject, typically with a result parameter. - Each command return object already contains: - A more precise status - The error code(s) that apply to that status Part 1 refactors the CommandObject::Execute(...) method. - See [https://github.com/llvm/llvm-project/pull/69989](https://github.com/llvm/llvm-project/pull/69989) rdar://117378957 | 2 年前 | |
[lldb] Expose language plugin commands based based on language of current frame (#136766) Use the current frame's language to lookup commands provided by language plugins. This means commands like language {objc,cplusplus} <command> can be used directly, without using the language <lang> prefix. For example, when stopped on a C++ frame, demangle _Z1fv will run language cplusplus demangle _Z1fv. rdar://149882520 | 1 年前 | |
[lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) return void (not bool) (#69991) [lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) to return void instead of ~~bool~~ Justifications: - The code doesn't ultimately apply the true/false return values. - The methods already pass around a CommandReturnObject, typically with a result parameter. - Each command return object already contains: - A more precise status - The error code(s) that apply to that status Part 1 refactors the CommandObject::Execute(...) method. - See [https://github.com/llvm/llvm-project/pull/69989](https://github.com/llvm/llvm-project/pull/69989) rdar://117378957 | 2 年前 | |
[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 个月前 | |
[lldb] NFC remove DISALLOW_COPY_AND_ASSIGN Summary: This is how I applied my clang-tidy check (see https://reviews.llvm.org/D80531) in order to remove DISALLOW_COPY_AND_ASSIGN and have deleted copy ctors and deleted assignment operators instead. lang=bash grep DISALLOW_COPY_AND_ASSIGN /opt/notnfs/kkleine/llvm/lldb -r -l | sort | uniq > files for i in $(cat files); do clang-tidy \ --checks="-*,modernize-replace-disallow-copy-and-assign-macro" \ --format-style=LLVM \ --header-filter=.* \ --fix \ -fix-errors \ $i; done Reviewers: espindola, labath, aprantl, teemperor Reviewed By: labath, aprantl, teemperor Subscribers: teemperor, aprantl, labath, emaste, sbc100, aheejin, MaskRay, arphaman, usaxena95, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D80543 | 6 年前 | |
[lldb] Pass execution context to CompilerType::GetByteSize - in CommandObjectMemoryRead (NFC) (#157750) Some type systems require an execution context be available when working with types (ex: Swift). This fixes memory read --type to support such type systems, by passing in an execution context to GetByteSize(), instead of passing null. rdar://158968545 | 10 个月前 | |
[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] Unify implementation of CommandReturnObject::SetError(NFC) (#110707) This is a cleanup that moves the API towards value semantics. | 1 年前 | |
[lldb][AArch64] Add "memory tag read" command This new command looks much like "memory read" and mirrors its basic behaviour. (lldb) memory tag read new_buf_ptr new_buf_ptr+32 Logical tag: 0x9 Allocation tags: [0x900fffff7ffa000, 0x900fffff7ffa010): 0x9 [0x900fffff7ffa010, 0x900fffff7ffa020): 0x0 Important proprties: * The end address is optional and defaults to reading 1 tag if ommitted * It is an error to try to read tags if the architecture or process doesn't support it, or if the range asked for is not tagged. * It is an error to read an inverted range (end < begin) (logical tags are removed for this check so you can pass tagged addresses here) * The range will be expanded to fit the tagging granule, so you can get more tags than simply (end-begin)/granule size. Whatever you get back will always cover the original range. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D97285 | 5 年前 | |
[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 个月前 | |
[LLDB][NFC] Remove unneeded conditional (#138321) we already check for platform_sp not null in one line below. existing code if (platform_sp) { Status error; if (platform_sp) { ... ... } } platform_sp null check is redundant and error variable is unused. ### TEST PLAN manual test satyajanga@devvm21837:toolchain $ ./bin/lldb LLDB logging initialized. Logs stored in: /tmp (lldb) platform select host Platform: host Triple: x86_64-*-linux-gnu OS Version: 6.9.0 (6.9.0-0_fbk5_hardened_1_gf368ae920c1a) Hostname: 127.0.0.1 WorkingDir: /home/satyajanga/llvm-sand/build/Debug/fbcode-x86_64/toolchain Kernel: #1 SMP Tue Feb 11 07:24:41 PST 2025 Kernel: Linux Release: 6.9.0-0_fbk5_hardened_1_gf368ae920c1a Version: #1 SMP Tue Feb 11 07:24:41 PST 2025 (lldb) platform process list 144 matching processes were found on "host" PID PARENT USER TRIPLE NAME ====== ====== ========== ============================== ============================ 130461 874915 satyajanga x86_64-*-linux-gnu sushd 135505 874915 satyajanga x86_64-*-linux-gnu hg.real 817146 874915 satyajanga x86_64-*-linux-gnu vscode-thrift 874915 1 satyajanga 874947 874915 satyajanga and running the existing tests satyajanga@devvm21837:toolchain $ ./bin/llvm-lit -v ~/llvm-sand/external/llvm-project/lldb/test/API/commands/platform/ -- Testing: 9 tests, 9 workers -- PASS: lldb-api :: commands/platform/file/read/TestPlatformFileRead.py (1 of 9) PASS: lldb-api :: commands/platform/file/close/TestPlatformFileClose.py (2 of 9) UNSUPPORTED: lldb-api :: commands/platform/sdk/TestPlatformSDK.py (3 of 9) PASS: lldb-api :: commands/platform/basic/TestPlatformPython.py (4 of 9) PASS: lldb-api :: commands/platform/basic/TestPlatformCommand.py (5 of 9) PASS: lldb-api :: commands/platform/connect/TestPlatformConnect.py (6 of 9) PASS: lldb-api :: commands/platform/process/launch/TestPlatformProcessLaunch.py (7 of 9) PASS: lldb-api :: commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py (8 of 9) PASS: lldb-api :: commands/platform/process/list/TestProcessList.py (9 of 9) Testing Time: 13.48s Total Discovered Tests: 9 Unsupported: 1 (11.11%) Passed : 8 (88.89%) satyajanga@devvm21837:toolchain $ | 1 年前 | |
Revert "[lldb] Add Debugger & ScriptedMetadata reference to Platform::CreateInstance" This reverts commit 2d53527e9c64c70c24e1abba74fa0a8c8b3392b1. | 3 年前 | |
[lldb] Add completions for plugin list/enable/disable (#147775) This commit adds completion support for the plugin commands. It will try to complete partial namespaces to the full namespace string. If the completion input is already a full namespace string then it will add all the matching plugins in that namespace as completions. This lets the user complete to the namespace first and then tab-complete to the next level if desired. (lldb) plugin list a<tab> Available completions: abi architecture (lldb) plugin list ab<tab> (lldb) plugin list abi<tab> (lldb) plugin list abi.<tab> Available completions: abi.SysV-arm64 abi.ABIMacOSX_arm64 abi.SysV-arm ... | 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] Show signal number description (#164176) show information about the signal when the user presses process handle <unix-signal> i.e sh (lldb) process handle SIGWINCH NAME PASS STOP NOTIFY DESCRIPTION =========== ===== ===== ====== =================== SIGWINCH true false false window size changes Wanted to use the existing GetSignalDescription but it is expected behaviour to return the signal name if no signal code is passed. It is used in stop info. https://github.com/llvm/llvm-project/blob/65c895dfe084860847e9e220ff9f1b283ebcb289/lldb/source/Target/StopInfo.cpp#L1192-L1195 | 8 个月前 | |
[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][mcp] Get the running MCP server connection information (#162752) Currently AFAICT we don't have a way to get the MCP server socket after it started. So this change introduces a new protocol-server subcommand that allows us to query the location of a running server: (lldb) protocol-server start MCP listen://localhost:0 MCP server started with connection listeners: connection://[::1]:36051, connection://[127.0.0.1]:36051 (lldb) protocol-server get MCP MCP server connection listeners: connection://[::1]:36051, connection://[127.0.0.1]:36051 (lldb) protocol-server stop MCP (lldb) protocol-server get MCP error: MCP server is not running | 9 个月前 | |
[lldb] Fix ASCII art in CommandObjectProtocolServer (NFC) | 1 年前 | |
Start to clean up the process of defining command arguments. (#83097) Partly, there's just a lot of unnecessary boiler plate. It's also possible to define combinations of arguments that make no sense (e.g. eArgRepeatPlus followed by eArgRepeatPlain...) but these are never checked since we just push_back directly into the argument definitions. This commit is step 1 of this cleanup - do the obvious stuff. In it, all the simple homogenous argument lists and the breakpoint/watchpoint ID/Range types, are set with common functions. This is an NFC change, it just centralizes boiler plate. There's no checking yet because you can't get a single argument wrong. The end goal is that all argument definition goes through functions and m_arguments is hidden so that you can't define inconsistent argument sets. | 2 年前 | |
[lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) return void (not bool) (#69991) [lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) to return void instead of ~~bool~~ Justifications: - The code doesn't ultimately apply the true/false return values. - The methods already pass around a CommandReturnObject, typically with a result parameter. - Each command return object already contains: - A more precise status - The error code(s) that apply to that status Part 1 refactors the CommandObject::Execute(...) method. - See [https://github.com/llvm/llvm-project/pull/69989](https://github.com/llvm/llvm-project/pull/69989) rdar://117378957 | 2 年前 | |
[lldb] Nits on uses of llvm::raw_string_ostream (NFC) (#108745) As specified in the docs, 1) raw_string_ostream is always unbuffered and 2) the underlying buffer may be used directly ( 65b13610a5226b84889b923bae884ba395ad084d for further reference ) * Don't call raw_string_ostream::flush(), which is essentially a no-op. * Avoid unneeded calls to raw_string_ostream::str(), to avoid excess indirection. | 1 年前 | |
[lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) return void (not bool) (#69991) [lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) to return void instead of ~~bool~~ Justifications: - The code doesn't ultimately apply the true/false return values. - The methods already pass around a CommandReturnObject, typically with a result parameter. - Each command return object already contains: - A more precise status - The error code(s) that apply to that status Part 1 refactors the CommandObject::Execute(...) method. - See [https://github.com/llvm/llvm-project/pull/69989](https://github.com/llvm/llvm-project/pull/69989) rdar://117378957 | 2 年前 | |
[lldb][NFC] Make the target's SectionLoadList private. (#113278) Lots of code around LLDB was directly accessing the target's section load list. This NFC patch makes the section load list private so the Target class can access it, but everyone else now uses accessor functions. This allows us to control the resolving of addresses and will allow for functionality in LLDB which can lazily resolve addresses in JIT plug-ins with a future patch. | 1 年前 | |
[lldb] NFC remove DISALLOW_COPY_AND_ASSIGN Summary: This is how I applied my clang-tidy check (see https://reviews.llvm.org/D80531) in order to remove DISALLOW_COPY_AND_ASSIGN and have deleted copy ctors and deleted assignment operators instead. lang=bash grep DISALLOW_COPY_AND_ASSIGN /opt/notnfs/kkleine/llvm/lldb -r -l | sort | uniq > files for i in $(cat files); do clang-tidy \ --checks="-*,modernize-replace-disallow-copy-and-assign-macro" \ --format-style=LLVM \ --header-filter=.* \ --fix \ -fix-errors \ $i; done Reviewers: espindola, labath, aprantl, teemperor Reviewed By: labath, aprantl, teemperor Subscribers: teemperor, aprantl, labath, emaste, sbc100, aheejin, MaskRay, arphaman, usaxena95, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D80543 | 6 年前 | |
[lldb] Fix typos in various help messages. (#109851) | 1 年前 | |
[lldb/Commands] Alias script command to scripting run (#97263) This patch introduces a new top-level scripting command with an run sub-command, that basically replaces the script raw command. To avoid breaking the script command usages, this patch also adds an script alias to the scripting run sub-command. The reason behind this change is to have a top-level command that will cover scripting related subcommands. Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
Add warning message to session save when transcript isn't saved. (#109020) Somewhat recently, we made the change to hide the behavior to save LLDB session history to the transcript buffer behind the flag interpreter.save-transcript. By default, interpreter.save-transcript is false. See #90703 for context. I'm making a small update here to our session save messaging and some help docs to clarify for users that aren't aware of this change. Maybe interpreter.save-transcript could be true by default as well. Any feedback welcome. # Tests bin/lldb-dotest -p TestSessionSave --------- Co-authored-by: Tom Yang <toyang@fb.com> | 1 年前 | |
[lldb/interpreter] Add ability to save lldb session to a file This patch introduce a new feature that allows the users to save their debugging session's transcript (commands + outputs) to a file. It differs from the reproducers since it doesn't require to capture a session preemptively and replay the reproducer file in lldb. The user can choose the save its session manually using the session save command or automatically by setting the interpreter.save-session-on-quit on their init file. To do so, the patch adds a Stream object to the CommandInterpreter that will hold the input command from the IOHandler and the CommandReturnObject output and error. This way, that stream object accumulates passively all the interactions throughout the session and will save them to disk on demand. The user can specify a file path where the session's transcript will be saved. However, it is optional, and when it is not provided, lldb will create a temporary file name according to the session date and time. rdar://63347792 Differential Revision: https://reviews.llvm.org/D82155 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com> | 5 年前 | |
[lldb] Add flag to "settings show" to include default values (#153233) Adds a --defaults/-d flag to settings show. This mode will _optionally_ show a setting's default value. In other words, this does not always print a default value for every setting. A default value is not shown when the current value _is_ the default. Note: some setting types do not print empty or invalid values. For these setting types, if the default value is empty or invalid, the same elision logic is applied to printing the default value. | 11 个月前 | |
[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] Eliminate SupportFileSP nullptr derefs (#168624) This patch fixes and eliminates the possibility of SupportFileSP ever being nullptr. The support file was originally treated like a value type, but became a polymorphic type and therefore has to be stored and passed around as a pointer. To avoid having all the callers check the validity of the pointer, I introduced the invariant that SupportFileSP is never null and always default constructed. However, without enforcement at the type level, that's fragile and indeed, we already identified two crashes where someone accidentally broke that invariant. This PR introduces a NonNullSharedPtr to prevent that. NonNullSharedPtr is a smart pointer wrapper around std::shared_ptr that guarantees the pointer is never null. If default-constructed, it creates a default-constructed instance of the contained type. Note that I'm using private inheritance because you shouldn't inherit from standard library classes due to the lack of virtual destructor. So while the new abstraction looks like a std::shared_ptr, it is in fact **not** a shared pointer. Given that our destructor is trivial, we could use public inheritance, but currently there's no need for it. rdar://164989579 | 8 个月前 | |
[lldb] Fix ASCII art in CommandObjectSource.h (NFC) | 2 年前 | |
Default transcript dumping in "statistics dump" to false (#145436) ### Summary Currently, if the setting interpreter.save-transcript is enabled, whenever we call "statistics dump", it'll default to reporting a huge list of transcripts which can be a bit noisy. This is because the current check GetIncludeTranscript returns !GetSummaryOnly() by default if no specific transcript-setting option is given in the statistics dump command (ie. statistics dump --transcripts=false or statistics dump --transcripts=true). Then when interpreter.save-transcript is enabled, this saves a list of transcripts, and the transcript list ends up getting logged by default. These changes default the option to log transcripts in the statistics dump command to "false". This can still be enabled via the --transcripts option if users want to see a transcript. Since interpreter.save-transcript is false by default, the main delta is that if interpreter.save-transcript is true and summary mode is false, we now disable saving the transcript. This also adds a warning to 'statistics dump --transcript=true' when interpreter.save-transcript is disabled, which should help users understand why transcript data is empty. ### Testing #### Manual testing Tested with settings set interpreter.save-transcript true enabled at startup on a toy hello-world program: (lldb) settings set interpreter.save-transcript true (lldb) target create "/home/qxy11/hello-world/a.out" Current executable set to '/home/qxy11/hello-world/a.out' (x86_64). (lldb) statistics dump { /* no transcript */ } (lldb) statistics dump --transcript=true { "transcript": [ { "command": "statistics dump", "commandArguments": "", "commandName": "statistics dump", "durationInSeconds": 0.0019650000000000002, "error": "", "output": "{... }, { "command": "statistics dump --transcript=true", "commandArguments": "--transcript=true", "commandName": "statistics dump", "timestampInEpochSeconds": 1750720021 } ] } Without settings set interpreter.save-transcript true: (lldb) target create "/home/qxy11/hello-world/a.out" Current executable set to '/home/qxy11/hello-world/a.out' (x86_64). (lldb) statistics dump { /* no transcript */ } (lldb) statistics dump --transcript=true { /* no transcript */ } warning: transcript requested but none was saved. Enable with 'settings set interpreter.save-transcript true' #### Unit tests Changed unit tests to account for new expected default behavior to false, and added a couple new tests around expected behavior with --transcript=true. lldb-dotest -p TestStats ~/llvm-sand/external/llvm-project/lldb/test/API/commands/statistics/basic/ | 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 年前 | |
Revert " [clang] Refactor to remove clangDriver dependency from clangFrontend and flangFrontend (#165277)" (#169397) This reverts commit 3773bbe and relands the last revert attempt 40334b8. 3773bbe broke the build for the build configuration described in here: https://github.com/llvm/llvm-project/pull/165277#issuecomment-3572432250 | 8 个月前 | |
[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] 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 个月前 | |
[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 年前 | |
Fix a bug where using "thread backtrace unique" would switch you to (#140993) always using the "frame-format-unique" even when you weren't doing the unique backtrace mode. | 1 年前 | |
[lldb] Add missing <stack> includes (NFC) | 2 年前 | |
[lldb] Make conversions from llvm::Error explicit with Status::FromEr… (#107163) …ror() [NFC] | 1 年前 | |
[trace][intel-pt] Implement trace start and trace stop This implements the interactive trace start and stop methods. This diff ended up being much larger than I anticipated because, by doing it, I found that I had implemented in the beginning many things in a non optimal way. In any case, the code is much better now. There's a lot of boilerplate code due to the gdb-remote protocol, but the main changes are: - New tracing packets: jLLDBTraceStop, jLLDBTraceStart, jLLDBTraceGetBinaryData. The gdb-remote packet definitions are quite comprehensive. - Implementation of the "process trace start|stop" and "thread trace start|stop" commands. - Implementaiton of an API in Trace.h to interact with live traces. - Created an IntelPTDecoder for live threads, that use the debugger's stop id as checkpoint for its internal cache. - Added a functionality to stop the process in case "process tracing" is enabled and a new thread can't traced. - Added tests I have some ideas to unify the code paths for post mortem and live threads, but I'll do that in another diff. Differential Revision: https://reviews.llvm.org/D91679 | 5 年前 | |
[lldb][Lanugage][NFC] Adapt Language::ForEach to IterationAction (#161830) | 9 个月前 | |
[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] Part 2 of 2 - Refactor CommandObject::DoExecute(...) return void (not bool) (#69991) [lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) to return void instead of ~~bool~~ Justifications: - The code doesn't ultimately apply the true/false return values. - The methods already pass around a CommandReturnObject, typically with a result parameter. - Each command return object already contains: - A more precise status - The error code(s) that apply to that status Part 1 refactors the CommandObject::Execute(...) method. - See [https://github.com/llvm/llvm-project/pull/69989](https://github.com/llvm/llvm-project/pull/69989) rdar://117378957 | 2 年前 | |
[lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) return void (not bool) (#69991) [lldb] Part 2 of 2 - Refactor CommandObject::DoExecute(...) to return void instead of ~~bool~~ Justifications: - The code doesn't ultimately apply the true/false return values. - The methods already pass around a CommandReturnObject, typically with a result parameter. - Each command return object already contains: - A more precise status - The error code(s) that apply to that status Part 1 refactors the CommandObject::Execute(...) method. - See [https://github.com/llvm/llvm-project/pull/69989](https://github.com/llvm/llvm-project/pull/69989) rdar://117378957 | 2 年前 | |
[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 个月前 | |
[lldb] Use Target references instead of pointers in CommandObject (NFC) The GetTarget helper returns a Target reference so there's reason to convert it to a pointer and check its validity. | 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 个月前 | |
[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] Refactor command option enum values (NFC) Refactor the command option enum values and the command argument table to connect the two. This has two benefits: - We guarantee that two options that use the same argument type have the same accepted values. - We can print the enum values and their description in the help output. (D129707) Differential revision: https://reviews.llvm.org/D129703 | 3 年前 | |
[lldb] Turn lldb_private::Status into a value type. (#106163) This patch removes all of the Set.* methods from Status. This cleanup is part of a series of patches that make it harder use the anti-pattern of keeping a long-lives Status object around and updating it while dropping any errors it contains on the floor. This patch is largely NFC, the more interesting next steps this enables is to: 1. remove Status.Clear() 2. assert that Status::operator=() never overwrites an error 3. remove Status::operator=() Note that step (2) will bring 90% of the benefits for users, and step (3) will dramatically clean up the error handling code in various places. In the end my goal is to convert all APIs that are of the form ResultTy DoFoo(Status& error) to llvm::Expected<ResultTy> DoFoo() How to read this patch? The interesting changes are in Status.h and Status.cpp, all other changes are mostly perl -pi -e 's/\.SetErrorString/ = Status::FromErrorString/g' $(git grep -l SetErrorString lldb/source) plus the occasional manual cleanup. | 1 年前 | |
[lldb] Add scripted process launch/attach option to {,platform }process commands This patch does several things: First, it refactors the CommandObject{,Platform}ProcessObject command option class into a separate CommandOptionsProcessAttach option group. This will make sure both the platform process attach and process attach command options will always stay in sync without having with duplicate them each time. But more importantly, making this class an OptionGroup allows us to combine with a OptionGroupPythonClassWithDict to add support for the scripted process managing class name and user-provided dictionary options. This patch also improves feature parity between ProcessLaunchInfo and ProcessAttachInfo with regard to ScriptedProcesses, by exposing the various getters and setters necessary to use them through the SBAPI. This is foundation work for adding support to "attach" to a process from the scripted platform. Differential Revision: https://reviews.llvm.org/D139945 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com> | 3 年前 | |
[lldb][Darwin] Add process launch --memory-tagging option (#162944) For debugging and bug-finding workflows on Darwin, support launching processes with memory tagging for binaries that are not entitled. This will cause the process to behave as if the binary was entitled with: <key>com.apple.security.hardened-process.checked-allocations</key> <true/> This has no effect on hardware without MTE support. --------- Co-authored-by: Jonas Devlieghere <jonas@devlieghere.com> | 9 个月前 | |
[Commands] Remove redundant member initialization (NFC) Identified with readability-redundant-member-init. | 4 年前 | |
[lldb] Introduce internal stop hooks (#164506) Introduce the concept of internal stop hooks. These are similar to LLDB's internal breakpoints: LLDB itself will add them and users of LLDB will not be able to add or remove them. This change adds the following 3 independently-useful concepts: * Maintain a list of internal stop hooks that will be populated by LLDB and cannot be added to or removed from by users. They are managed in a separate list in Target::m_internal_stop_hooks. * StopHookKind:CodeBased and StopHookCoded represent a stop hook defined by a C++ code callback (instead of command line expressions or a Python class). * Stop hooks that do not print any output can now also suppress the printing of their header and description when they are hit via StopHook::GetSuppressOutput. Combining these 3 concepts we can model "internal stop hooks" which serve the same function as LLDB's internal breakpoints: executing built-in, LLDB-defined behavior, leveraging the existing mechanism of stop hooks. This change also simplifies Target::RunStopHooks. We already have to materialize a new list for combining internal and user stop hooks. Filter and only add active hooks to this list to avoid the need for "isActive?" checks later on. | 9 个月前 | |
[lldb] Refactor command option enum values (NFC) Refactor the command option enum values and the command argument table to connect the two. This has two benefits: - We guarantee that two options that use the same argument type have the same accepted values. - We can print the enum values and their description in the help output. (D129707) Differential revision: https://reviews.llvm.org/D129703 | 3 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 8 个月前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 6 年前 | ||
| 10 个月前 | ||
| 6 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 6 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 6 年前 | ||
| 10 个月前 | ||
| 6 年前 | ||
| 1 年前 | ||
| 5 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 6 年前 | ||
| 8 个月前 | ||
| 6 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 6 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 5 年前 | ||
| 11 个月前 | ||
| 6 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 6 年前 | ||
| 8 个月前 | ||
| 6 年前 | ||
| 10 个月前 | ||
| 6 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 5 年前 | ||
| 9 个月前 | ||
| 6 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 6 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 9 个月前 | ||
| 4 年前 | ||
| 9 个月前 | ||
| 3 年前 |