| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
[lldb] fix(lldb/**.py): fix comparison to None (#94017) from PEP8 (https://peps.python.org/pep-0008/#programming-recommendations): > Comparisons to singletons like None should always be done with is or is not, never the equality operators. Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com> | 2 年前 | |
[lldb] Add Python properties to SBBreakpoint and similar (#142215) Update SBBreakpoint, SBBreakpointLocation, and SBBreakpointName to add Python properties for many of their getters/setters. | 1 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Add Python properties to SBBreakpoint and similar (#142215) Update SBBreakpoint, SBBreakpointLocation, and SBBreakpointName to add Python properties for many of their getters/setters. | 1 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Add Python properties to SBBreakpoint and similar (#142215) Update SBBreakpoint, SBBreakpointLocation, and SBBreakpointName to add Python properties for many of their getters/setters. | 1 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Add AllowRepeats to SBCommandInterpreterRunOptions. (#94786) This is useful if you have a transcript of a user session and want to rerun those commands with RunCommandInterpreter. The same functionality is also useful in testing. I'm adding it primarily for the second reason. In a subsequent patch, I'm adding the ability to Python based commands to provide their "auto-repeat" command. Among other things, that will allow potentially state destroying user commands to prevent auto-repeat. Testing this with Shell or pexpect tests is not nearly as accurate or convenient as using RunCommandInterpreter, but to use that I need to allow auto-repeat. I think for consistency's sake, having interactive sessions always do auto-repeats is the right choice, though that's a lightly held opinion... | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] fix(lldb/**.py): fix comparison to None (#94017) from PEP8 (https://peps.python.org/pep-0008/#programming-recommendations): > Comparisons to singletons like None should always be done with is or is not, never the equality operators. Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Add class property for the version string (#145974) Add a class property for the version string. This allows you to use access the version string through lldb.SBDebugger.version instead of having to call lldb.SBDebugger.GetVersionString(). | 1 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[NFC] Prefer subprocess.DEVNULL over os.devnull (#106500) There is no need to support Python 2.7 anymore, Python 3.3+ has subprocess.DEVNULL. This is good practice and also prevents file handles from staying open unnecessarily. Also remove a couple unused or unneeded __future__ imports. | 1 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb-dap] Add an option to provide a format for stack frames (#71843) When this option gets enabled, descriptions of stack frames will be generated using the format provided in the launch configuration instead of simply calling SBFrame::GetDisplayFunctionName. This allows lldb-dap to show an output similar to the one in the CLI. | 2 年前 | |
[lldb][NFC] whitespace reflow | 1 年前 | |
[LLDB] Add a child property to compliment the existing parent property (#168619) I've been working on some scripts that evaluate the parent and child frame. It's been very annoying that the parent frame has a property but not the child. So I've added this to the extensions, I would've preferred to return None, but because the existing impl returns an invalid SBFrame, so I'm conforming to that API. `` (lldb) script Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D. >>> lldb.frame frame #0: 0x0000555555555200 fib.outmain >>> lldb.frame.parent frame #1: 0x00007ffff782a610 libc.so.6__libc_start_call_main + 128 >>> lldb.frame.parent.child frame #0: 0x0000555555555200 fib.outmain ``` | 8 个月前 | |
[lldb] Introduce SBFrameList for lazy frame iteration (#166651) This patch introduces SBFrameList, a new SBAPI class that allows iterating over stack frames lazily without calling SBThread::GetFrameAtIndex in a loop. The new SBThread::GetFrames() method returns an SBFrameList that supports Python iteration (for frame in frame_list:), indexing (frame_list[0], frame_list[-1]), and length queries (len()). The implementation uses StackFrameListSP as the opaque pointer, sharing the thread's underlying frame list to ensure frames are materialized on-demand. This is particularly useful for ScriptedFrameProviders, where user scripts will be to iterate, filter, and replace frames lazily without materializing the entire stack upfront. Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 8 个月前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[LLDB] Update SBMemoryRegionInfo doc strings to document len and str (#149903) Updated SBMemoryRegionInfo doc strings: - Added detailed documentation for the GetDescription() method. - Included information about the overwritten len() and str() functions for the SBMemoryRegionInfo type, explaining their behavior and usage. --------- Co-authored-by: Bar Soloveychik <barsolo@fb.com> | 11 个月前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Fix SBMemoryRegionInfoListExtensions iter to yield unique refe… (#144815) | 1 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Expose the Target API mutex through the SB API (#133295) Expose u target API mutex through the SB API. This is motivated by lldb-dap, which is built on top of the SB API and needs a way to execute a series of SB API calls in an atomic manner (see #131242). We can solve this problem by either introducing an additional layer of locking at the DAP level or by exposing the existing locking at the SB API level. This patch implements the second approach. This was discussed in an RFC on Discourse [0]. The original implementation exposed a move-only lock rather than a mutex [1] which doesn't work well with SWIG 4.0 [2]. This implement the alternative solution of exposing the mutex rather than the lock. The SBMutex conforms to the BasicLockable requirement [3] (which is why the methods are called lock and unlock rather than Lock and Unlock) so it can be used as std::lock_guard<lldb::SBMutex> and std::unique_lock<lldb::SBMutex>. [0]: https://discourse.llvm.org/t/rfc-exposing-the-target-api-lock-through-the-sb-api/85215/6 [1]: https://github.com/llvm/llvm-project/pull/131404 [2]: https://discourse.llvm.org/t/rfc-bumping-the-minimum-swig-version-to-4-1-0/85377/9 [3]: https://en.cppreference.com/w/cpp/named_req/BasicLockable | 1 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb-dap] Send a 'process' event on restart. (#163833) When we restart a process, send an updated 'process' event describing the newly launched process. I also updated the isLocalProcess value based on if we're on the 'host' platform or not. | 9 个月前 | |
[LLDB][Docstrings] Fix some poorly formatted Docstrings (#129605) I was looking earlier on the public doc website, and noticed the markdown was very badly mangled for this recent docstring that I added. So I'm dropping the backticks and just leaving the snippet.  | 1 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Expose SBPlatform::GetAllProcesses to the SB API (#68378) Add the ability to list all processes through the SB API. rdar://116188959 | 2 年前 | |
[LLDB][SBProgress] Quick fix to the progress formatting (#157561) Earlier today I was looking at the SBProgress documentation with a colleague and found another instance where the swig block wasn't formatting correctly. I've adjusted the docs slightly to fix this. I don't actually know how to see a preview of our docstrings but I believe this will fix it. <img width="829" height="234" alt="image" src="https://github.com/user-attachments/assets/8ef3a2df-92b9-4157-a452-f5e1ec51aa9a" /> | 10 个月前 | |
[SBProgress] Add swig support for with statement in Python (#133527) We recently added an explicit finalize to SBProgress, #128966. I realized while adding some additional implementations of SBProgress that we should to add with support for ease of use. This patch addresses adding and __enter()__ method (which a no-op) and an __exit()__ to swig. I also refactor the emitter for the test to leverage with instead of explicitly calling finalize, and I've updated the docstrings. | 1 年前 | |
[lldb] [NFC] Fix swig docstring annotations (#88073) Some of the SB API method description docstrings for swing are annotated as %feature("autodoc") - but "autodoc" annotations are only to substitute a string showing the arguments and return variables - either in a single line, or in multiple lines. SBMemoryRegionInfo used "autodoc" correctly describing the parameters and return type, but then it added a description too which is not correct either. Change all of these that are adding a method description to use %feature("docstring") instead. There were a half dozen instances where "autodoc" was correctly being used and we have overriden the parameter and return types with a more readable version. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[LLDB] Fix Memory64 BaseRVA, move all non-stack memory to Mem64. (#146777) ### Context Over a year ago, I landed support for 64b Memory ranges in Minidump (#95312). In this patch we added the Memory64 list stream, which is effectively a Linked List on disk. The layout is a sixteen byte header and then however many Memory descriptors. ### The Bug This is a classic off-by one error, where I added 8 bytes instead of 16 for the header. This caused the first region to start 8 bytes before the correct RVA, thus shifting all memory reads by 8 bytes. We are correctly writing all the regions to disk correctly, with no physical corruption but the RVA is defined wrong, meaning we were incorrectly reading memory  ### Why wasn't this caught? One problem we've had is forcing Minidump to actually use the 64b mode, it would be a massive waste of resources to have a test that actually wrote >4.2gb of IO to validate the 64b regions, and so almost all validation has been manual. As a weakness of manual testing, this issue is psuedo non-deterministic, as what regions end up in 64b or 32b is handled greedily and iterated in the order it's laid out in /proc/pid/maps. We often validated 64b was written correctly by hexdumping the Minidump itself, which was not corrupted (other than the BaseRVA)  ### Why is this showing up now? During internal usage, we had a bug report that the Minidump wasn't displaying values. I was unable to repro the issue, but during my investigation I saw the variables were in the 64b regions which resulted in me identifying the bug. ### How do we prevent future regressions? To prevent regressions, and honestly to save my sanity for figuring out where 8 bytes magically came from, I've added a new API to SBSaveCoreOptions. SBSaveCoreOptions::GetMemoryRegionsToSave() The ability to get the memory regions that we intend to include in the Coredump. I added this so we can compare what we intended to include versus what was actually included. Traditionally we've always had issues comparing regions because Minidump includes /proc/pid/maps and it can be difficult to know what memoryregion read failure was a genuine error or just a page that wasn't meant to be included. We are also leveraging this API to choose the memory regions to be generated, as well as for testing what regions should be bytewise 1:1. After much debate with @clayborg, I've moved all non-stack memory to the Memory64 List. This list doesn't incur us any meaningful overhead and Greg originally suggested doing this in the original 64b PR. This also means we're exercising the 64b path every single time we save a Minidump, preventing regressions on this feature from slipping through testing in the future. Snippet produced by [minidump.py](https://github.com/clayborg/scripts) MINIDUMP_MEMORY_LIST: NumberOfMemoryRanges = 0x00000002 MemoryRanges[0] = [0x00007f61085ff9f0 - 0x00007f6108601000) @ 0x0003f655 MemoryRanges[1] = [0x00007ffe47e50910 - 0x00007ffe47e52000) @ 0x00040c65 MINIDUMP_MEMORY64_LIST: NumberOfMemoryRanges = 0x000000000000002e BaseRva = 0x0000000000042669 MemoryRanges[0] = [0x00005584162d8000 - 0x00005584162d9000) MemoryRanges[1] = [0x00005584162d9000 - 0x00005584162db000) MemoryRanges[2] = [0x00005584162db000 - 0x00005584162dd000) MemoryRanges[3] = [0x00005584162dd000 - 0x00005584162ff000) MemoryRanges[4] = [0x00007f6100000000 - 0x00007f6100021000) MemoryRanges[5] = [0x00007f6108800000 - 0x00007f6108828000) MemoryRanges[6] = [0x00007f6108828000 - 0x00007f610899d000) MemoryRanges[7] = [0x00007f610899d000 - 0x00007f61089f9000) MemoryRanges[8] = [0x00007f61089f9000 - 0x00007f6108a08000) MemoryRanges[9] = [0x00007f6108bf5000 - 0x00007f6108bf7000) ### Misc As a part of this fix I had to look at LLDB logs a lot, you'll notice I added 0x to many of the PRIx64 LLDB_LOGF. This is so the user (or I) can directly copy paste the address in the logs instead of adding the hex prefix themselves. Added some SBSaveCore tests for the new GetMemoryAPI, and Docstrings. CC: @DavidSpickett, @da-viper @labath because we've been working together on save-core plugins, review it optional and I didn't tag you but figured you'd want to know | 1 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb][docs] Use section_iter() to iterate over sections (#167012) | 8 个月前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[Reland] Report only loaded debug info in statistics dump (#81706) (#82207) Updates: - The previous patch changed the default behavior to not load dwos in DWARFUnit ~~SymbolFileDWARFDwo *GetDwoSymbolFile(bool load_all_debug_info = false);~~ SymbolFileDWARFDwo *GetDwoSymbolFile(bool load_all_debug_info = true); - This broke some lldb-shell tests (see https://green.lab.llvm.org/green/view/LLDB/job/as-lldb-cmake/16273/) - TestDebugInfoSize.py - with symbol on-demand, by default statistics dump only reports skeleton debug info size - statistics dump -f will load all dwos. debug info = skeleton debug info + all dwo debug info Currently running statistics dump will trigger lldb to load debug info that's not yet loaded (eg. dwo files). Resulted in a delay in the command return, which, can be interrupting. This patch also added a new option --load-all-debug-info asking statistics to dump all possible debug info, which will force loading all debug info available if not yet loaded. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Reland: Add Pythonic API to SBStructuredData extension (#156771) * Adds dynamic property to automatically convert SBStructuredData instances to the associated Python type (str, int, float, bool, NoneType, etc) * Implements __getitem__ for Pythonic array and dictionary subscripting * Subscripting return the result of the dynamic property * Updates __iter__ to support dictionary instances (supporting for loops) * Adds __str__, __int__, and __float__ With these changes, these two expressions are equal: py data["name"] == data.GetValueForKey("name").GetStringValue(1024) **Note**: Unlike the original commit (#155061), this re-commit removes the __bool__ implementation, which broke crashlog. Somewhere in the crashlog execution, it depends on __bool__ meaning only IsValid(). Additionally did some cleanup in TestStructuredDataAPI.py. | 10 个月前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
Remove hardware index from watchpoints and breakpoints (#72012) The Watchpoint and Breakpoint objects try to track the hardware index that was used for them, if they are hardware wp/bp's. The majority of our debugging goes over the gdb remote serial protocol, and when we set the watchpoint/breakpoint, there is no (standard) way for the remote stub to communicate to lldb which hardware index was used. We have an lldb-extension packet to query the total number of watchpoint registers. When a watchpoint is hit, there is an lldb extension to the stop reply packet (documented in lldb-gdb-remote.txt) to describe the watchpoint including its actual hardware index, <addr within wp range> <wp hw index> <actual accessed address> (the third field is specifically needed for MIPS). At this point, if the stub reported these three fields (the stub is only required to provide the first), we can know the actual hardware index for this watchpoint. Breakpoints are worse; there's never any way for us to be notified about which hardware index was used. Breakpoints got this as a side effect of inherting from StoppointSite with Watchpoints. We expose the watchpoint hardware index through "watchpoint list -v" and through SBWatchpoint::GetHardwareIndex. With my large watchpoint support, there is no *single* hardware index that may be used for a watchpoint, it may need multiple resources. Also I don't see what a user is supposed to do with this information, or an IDE. Knowing the total number of watchpoint registers on the target, and knowing how many Watchpoint Resources are currently in use, is helpful. Knowing how many Watchpoint Resources a single user-specified watchpoint needed to be implemented is useful. But knowing which registers were used is an implementation detail and not available until we hit the watchpoint when using gdb remote serial protocol. So given all that, I'm removing watchpoint hardware index numbers. I'm changing the SB API to always return -1. | 2 年前 | |
[lldb] Fix regex support in SBTarget.modules_access (#116452) First, SRE_Pattern does not exist on newer Python's, use type(re.compile('')) like other Python extensions do. The dynamic type is because some earlier versions of Python 3 do not have re.Pattern. Second, SBModule has a file property, not a path property. | 1 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] [NFC] Fix swig docstring annotations (#88073) Some of the SB API method description docstrings for swing are annotated as %feature("autodoc") - but "autodoc" annotations are only to substitute a string showing the arguments and return variables - either in a single line, or in multiple lines. SBMemoryRegionInfo used "autodoc" correctly describing the parameters and return type, but then it added a description too which is not correct either. Change all of these that are adding a method description to use %feature("docstring") instead. There were a half dozen instances where "autodoc" was correctly being used and we have overriden the parameter and return types with a more readable version. | 2 年前 | |
[lldb] Introduce SBFrameList for lazy frame iteration (#166651) This patch introduces SBFrameList, a new SBAPI class that allows iterating over stack frames lazily without calling SBThread::GetFrameAtIndex in a loop. The new SBThread::GetFrames() method returns an SBFrameList that supports Python iteration (for frame in frame_list:), indexing (frame_list[0], frame_list[-1]), and length queries (len()). The implementation uses StackFrameListSP as the opaque pointer, sharing the thread's underlying frame list to ensure frames are materialized on-demand. This is particularly useful for ScriptedFrameProviders, where user scripts will be to iterate, filter, and replace frames lazily without materializing the entire stack upfront. Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 8 个月前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
Add the ability to get a C++ vtable ValueObject from another ValueObj… (#67599) Add the ability to get a C++ vtable ValueObject from another ValueObject. This patch adds the ability to ask a ValueObject for a ValueObject that represents the virtual function table for a C++ class. If the ValueObject is not a C++ class with a vtable, a valid ValueObject value will be returned that contains an appropriate error. If it is successful a valid ValueObject that represents vtable will be returned. The ValueObject that is returned will have a name that matches the demangled value for a C++ vtable mangled name like "vtable for <class-name>". It will have N children, one for each virtual function pointer. Each child's value is the function pointer itself, the summary is the symbolication of this function pointer, and the type will be a valid function pointer from the debug info if there is debug information corresponding to the virtual function pointer. The vtable SBValue will have the following: - SBValue::GetName() returns "vtable for <class>" - SBValue::GetValue() returns a string representation of the vtable address - SBValue::GetSummary() returns NULL - SBValue::GetType() returns a type appropriate for a uintptr_t type for the current process - SBValue::GetLoadAddress() returns the address of the vtable adderess - SBValue::GetValueAsUnsigned(...) returns the vtable address - SBValue::GetNumChildren() returns the number of virtual function pointers in the vtable - SBValue::GetChildAtIndex(...) returns a SBValue that represents a virtual function pointer The child SBValue objects that represent a virtual function pointer has the following values: - SBValue::GetName() returns "[%u]" where %u is the vtable function pointer index - SBValue::GetValue() returns a string representation of the virtual function pointer - SBValue::GetSummary() returns a symbolicated respresentation of the virtual function pointer - SBValue::GetType() returns the function prototype type if there is debug info, or a generic funtion prototype if there is no debug info - SBValue::GetLoadAddress() returns the address of the virtual function pointer - SBValue::GetValueAsUnsigned(...) returns the virtual function pointer - SBValue::GetNumChildren() returns 0 - SBValue::GetChildAtIndex(...) returns invalid SBValue for any index Examples of using this API via python: `` (lldb) script vtable = lldb.frame.FindVariable("shape_ptr").GetVTable() (lldb) script vtable vtable for Shape = 0x0000000100004088 { [0] = 0x0000000100003d20 a.outShape::~Shape() at main.cpp:3 [1] = 0x0000000100003e4c a.outShape::~Shape() at main.cpp:3 [2] = 0x0000000100003e7c a.outShape::area() at main.cpp:4 [3] = 0x0000000100003e3c a.outShape::optional() at main.cpp:7 } (lldb) script c = vtable.GetChildAtIndex(0) (lldb) script c (void ()) [0] = 0x0000000100003d20 a.outShape::~Shape() at main.cpp:3 ``` | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
[lldb] Add SBValue::GetValueAsAddress API (#90144) I previously added this API via https://reviews.llvm.org/D142792 in 2023, along with changes to the ValueObject class to treat pointer types as addresses, and to annotate those ValueObjects with the original uint64_t byte sequence AND the name of the symbol once stripped, if that points to a symbol. I did this unconditionally for all pointer type ValueObjects, and it caused several regressions in the Objective-C data formatters which have a ValueObject of an object, it has the address of its class -- but with ObjC, sometimes it is a "tagged pointer" which is metadata, not an actual pointer. (e.g. a small NSInteger value is stored entirely in the tagged pointer, instead of a separate object) Treating these not-addresses as addresses -- clearing the non-addressable-bits -- is invalid. The original version of this patch we're using downstream only does this bits clearing for pointer types that are specifically decorated with the pointerauth typequal, but not all of those clang changes are upstreamed to github main yet, so I tried this simpler approach and hit the tagged pointer issue and bailed on the whole patch. This patch, however, is simply adding SBValue::GetValueAsAddress so script writers who know that an SBValue has an address in memory, can strip off any metadata. It's an important API to have for script writers when AArch64 ptrauth is in use, so I'm going to put this part of the patch back on github main now until we can get the rest of that original patch upstreamed. | 2 年前 | |
[lldb] Add lookup by name to SBValue through new member property (#118814) Introduces a member property to SBValue. This property provides pythonic access to a value's members, by name. The expression value.member["name"] will be an alternate form form of writing value.GetChildMemberWithName("name"). | 1 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Revert "Re-land "[lldb/docs] Silence warnings when generating website"" This reverts 3 commit: - f0731d5b61ba798e6d5a63a92d9228010e5a3b50. - 8e0a087571a31057bb98939e3ada73227bed83c7. - f2f5d6fb8d53bc4bd93a3d4e110134ed017b636f. This changes were introduced to silence the warnings that are printed when generating the lldb module documentation for the website but it changed the python bindings and causes test failures on the macos bot: https://green.lab.llvm.org/green/job/lldb-cmake/59438/ We will have to consider other options to silence these warnings. | 2 年前 | |
[lldb] Replace SB swig interfaces with API headers Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926 | 3 年前 | |
Remove hardware index from watchpoints and breakpoints (#72012) The Watchpoint and Breakpoint objects try to track the hardware index that was used for them, if they are hardware wp/bp's. The majority of our debugging goes over the gdb remote serial protocol, and when we set the watchpoint/breakpoint, there is no (standard) way for the remote stub to communicate to lldb which hardware index was used. We have an lldb-extension packet to query the total number of watchpoint registers. When a watchpoint is hit, there is an lldb extension to the stop reply packet (documented in lldb-gdb-remote.txt) to describe the watchpoint including its actual hardware index, <addr within wp range> <wp hw index> <actual accessed address> (the third field is specifically needed for MIPS). At this point, if the stub reported these three fields (the stub is only required to provide the first), we can know the actual hardware index for this watchpoint. Breakpoints are worse; there's never any way for us to be notified about which hardware index was used. Breakpoints got this as a side effect of inherting from StoppointSite with Watchpoints. We expose the watchpoint hardware index through "watchpoint list -v" and through SBWatchpoint::GetHardwareIndex. With my large watchpoint support, there is no *single* hardware index that may be used for a watchpoint, it may need multiple resources. Also I don't see what a user is supposed to do with this information, or an IDE. Knowing the total number of watchpoint registers on the target, and knowing how many Watchpoint Resources are currently in use, is helpful. Knowing how many Watchpoint Resources a single user-specified watchpoint needed to be implemented is useful. But knowing which registers were used is an implementation detail and not available until we hit the watchpoint when using gdb remote serial protocol. So given all that, I'm removing watchpoint hardware index numbers. I'm changing the SB API to always return -1. | 2 年前 | |
Re-land "[lldb/docs] Silence warnings when generating website" This patch re-lands f0731d5b61ba with more fixes and improvements. First, this patch removes __eq__ implementations from classes that didn't implemented operator!= on the C++ implementation. This patch removes sphinx document generation for special members such as __len__, since there is no straightforward way to skip class that don't implement them. We also don't want to introduce a change in behavior by implementing artifical special members for classes that are missing them. Finally, this patch improve the ergonomics of some classes by implementing special members where it makes sense, i.e. hex(SBFrame) is equivalent to SBFrame.GetPC(). Differential Revision: https://reviews.llvm.org/D159017 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> | 2 年前 | |
Reland "[lldb] Add 'modify' type watchpoints, make it default (#66308)" This reverts commit a7b78cac9a77e3ef6bbbd8ab1a559891dc693401. With updates to the tests. TestWatchTaggedAddress.py: Updated the expected watchpoint types, though I'm not sure there should be a differnt default for the two ways of setting them, that needs to be confirmed. TestStepOverWatchpoint.py: Skipped this everywhere because I think what used to happen is you couldn't put 2 watchpoints on the same address (after alignment). I guess that this is now allowed because modify watchpoints aren't accounted for, but likely should be. Needs investigating. | 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 10 个月前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 |