[Lldb-commits] [lldb] [lldb] Claim to support swbreak and hwbreak packets when debugging a gdbremote (PR #102873)

via lldb-commits lldb-commits at lists.llvm.org
Mon Aug 12 23:56:22 PDT 2024


xusheng6 wrote:

> > or do we already have some infra that I can use?
> 
> `lldb/test/API/functionalities/gdb_remote_client/TestStopPCs.py` is an example of that infrastructure. The `threadStopInfo` is where you would insert the swbreak hwbreak key.
> 
> In fact, if i386 is an architecture where this correction of PC might happen (or not) you could just extend that test. The result should be the same whether the mock gdbserver returns "swbreak" "hwbreak" or leaves that field out completely.
> 
> If i386 isn't an architecture where correction would be done, you should be able to find some other target xml stubs elsewhere in tests. I don't think this test case is i386 specific. It can be tricky because that XML needs to include a minimal set of registers before lldb will function, so if in doubt, copy paste a working one.
> 
> > By the way, do I always need some unit test change to get a PR accepted? In this particular case I do not see a compelling reason to add a new test, though if this is a LLVM development policy then I will start looking into it.
> 
> Not 100% of the time but you will always have to justify why it does not have tests, or has the sort of tests that it has. This justification is useful for auditing code later, it also serves as a guide to anyone trying to reproduce an old bug that has no test cases.
> 
> https://llvm.org/docs/DeveloperPolicy.html#test-cases is written from the llvm perspective but applies to lldb as well https://lldb.llvm.org/resources/contributing.html#test-infrastructure.
> 
> In this case because no one does lldb -> gdbserver testing within the llvm project, so my worry is that this "easy fix" will get forgotten over time and someone will remove it as dead code or forget it in a refactoring. This is not a case of "if it has no tests it will get deleted" but it will certainly be at higher risk.
> 
> We have had cases like this before for example, someone fixed a bug handling an msp430 simulator and the test for that replays the packets that it sent to lldb so we don't have to have the actual simulator to hand.

Yes, i386 is an architecture where the PC adjustment happens, and I have tentatively added a unit test for it in https://github.com/llvm/llvm-project/pull/102873/commits/55f9473b8832723b96db45103bf4d5aa0b10da90

https://github.com/llvm/llvm-project/pull/102873


More information about the lldb-commits mailing list