I have also noticed a few problems similar to Ted's and I plan to
address them assuming nobody else is already on it.  That said, I am new
around here so please bear with me :)

In fact, I have been hacking on a few watchpoint methods for a while
now.  I have implemented some features I personally wanted (specifically
callback functions in the SBWatchpoint api). 

I have not yet created a PR (or whatever SVN equivalent) for several
reasons (obviously including the big reformat), but mostly I am a bit
lost with respect to proper procedure here.  I have gone through the
code guidelines for LLVM and LLDB, but I am confused about some things.

* I have written unit test logic, but I don't really understand the LLDB
testing framework.  Also, I understand from other threads that the
framework is currently in flux in any case.

* I have written documentation, but I don't know if what I have written
is even desirable.  For instance, the corresponding breakpoint
implementation is almost totally lacking in source doc.

* I will need to rebase this patch on the reformatted code.  That is no
big deal, but I have little experience with SVN and I will need to do
some research to avoid turning an eventual merge into a big chore.

* I am pretty unclear on the appropriate way to make my changes work
with the Python API.  Should that be on a different PR?  Are we
targeting Python 2.7 and 3.{4,5} on all platforms?

* Do I need to check that the test suite passes on other platforms, or
will other devs take care of that?  I don't use OSX or Windows.

Basically, I would like to help, but more than that I want my "help" to
be helpful.

If somebody who knows what is going on would help me out I would greatly
appreciate it.

\author{Daniel Noland}

On 09/09/2016 11:28 AM, Greg Clayton via lldb-dev wrote:
>> On Sep 8, 2016, at 4:47 PM, Ted Woodward via lldb-dev 
>> <lldb-dev@lists.llvm.org> wrote:
>>
>> I recently discovered a problem with watchpoints talking to the Hexagon 
>> simulator:
>>  
>> (lldb) w s e 0x1000
>> error: Watchpoint creation failed (addr=0x1000, size=4).
>> error: Target supports (0) hardware watchpoint slots.
>>  
>>  
>> It seems that lldb now sends a qWatchpointSupportInfo packet. But this 
>> packet isn’t defined in lldb-gdb-remote.txt.
>>  
>> Looking at the code, it expects to get back a pair “num:#”. If it doesn’t it 
>> returns 0. The caller will report the above error if the number returned is 
>> 0. So if qWatchpointSupportInfo isn’t supported, lldb can’t set a watchpoint.
>>  
>>  
>> What is the definition of the response to qWatchpointSupportInfo? Is the the 
>> number of supported watchpoints, or the number of available watchpoints? If 
>> it’s supported, then CheckIfWatchpointsExhausted won’t really check if the 
>> watchpoints are exhausted. If it’s available, then a return of 0 doesn’t let 
>> us aggregate watchpoints – a 4 byte watchpoint at 0x1000 and one at 0x1004 
>> could be one going from 0x1000-0x1007.
> The person that checked this in no longer is working on LLDB and it has been 
> like this since May 2012. It should return the total number of supported 
> watchpoints. 
>>  
>> Wouldn’t it be better to try to set the watchpoint, then report a failure if 
>> we get an error back from the remote server?
> It is kind of nice to know that you can't set watchpoints because they aren't 
> supported since we can provide a nicer message than "E98 returned from GDB 
> server". Errors in GDB remote protocol are a horrible mess and they don't 
> mean anything. So any clearer we can be about this, the better, so we should 
> keep the qWatchpointSupportInfo packet IMHO. I am fine with us modifying the 
> GDBRemoteCommunicationClient to try and send this packet and if it comes back 
> as unimplemented (response of $#00), you can set the num supported hardware 
> watchpoints to UINT32_MAX. We should document that this means we don't know 
> how many hardware watchpoints are supported, but it should then allow us to 
> set hardware watchpoints if the GDB server doesn't support this packet. 
>
> Watchpoints definitely need some work as they were done quickly by someone 
> that is no longer around and they could use some TLC. 
>
>>  
>> --
>> Qualcomm Innovation Center, Inc.
>> The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a 
>> Linux Foundation Collaborative Project
>>  
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev@lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to