Subject: bug#39180: 27.0.50; [PATCH] Use expressions as memory location in gdb-mi memory buffer

From: Yuan Fu <[email-masked]>
Date: Fri, 31 Jan 2020 21:25:00 -0500

> On Jan 31, 2020, at 5:05 AM, Eli Zaretskii <[email-masked]> wrote:
> 
>> From: Yuan Fu <[email-masked]>
>> Date: Sat, 18 Jan 2020 15:54:35 -0500
>> 
>> Currently gdb-mi does allow expressions as memory address, but it translates it to a fixed address. This patch makes gdb to store the expression and re-evaluate on updates. So the address changes as expression’s value changes.
> 
> Thanks.
> 
> Are these 4 patches needed to add the above improvement, or is each
> part of the series independent, and could be applied on its own right?
> 

I merged them into one.

> If the entire series should be applied in a single transaction, please
> make then a single patch, as that makes it easier to review and
> apply.  Otherwise, please explain what is the rationale for each part
> separately, because I don't think I understand it.
> 
>> Before the memory buffer evaluates the expression as address
>> and use the fixed result in each stop. This change stores the
>> expression itself and reevaluates it in each stop for an address.
>> Then displays the value of the memory at that address.
> 
> Two spaces between sentences (here and elsewhere in the patch),
> please.
> 
>> lisp/progmodes/gdb-mi.el (gdb-memory-address-expression): new
>>  (gdb-memory-address): change default value, add docstring
>>  (def-gdb-trigger-and-handler gdb-invalidate-memory,
>>  gdb-memory-set-address): replace ’gdb-memory-address’ with
>>    ’gdb-memory-address-expression’
>>  (gdb-memory-header): Add display for ’gdb-memory-address-expression’,
>>    move the mouse event from address to expression
> 
> Please quote symbols 'like this'.

Both fixed.

> 
>> * lisp/progmodes/gdb-mi.el (gdb-read-memory-custom):
>> Break infinite loop. Change ’error’ to ’user-error’
> 
> I don't understand what infinite loop are you alluding to here, and
> how did it come into existence.

Added some comments to explain.

> 
>> * lisp/progmodes/gdb-mi.el (gdb-memory-header):
>> Protect against nil value
> 
> And what is the problem you are trying to solve here?

Added some comments.

> 
>> * lisp/progmodes/gdb-mi.el (gdb--memory-display-warning): new
>> (gdb-read-memory-custom, gdb-memory-header): Add warning
> 
> And what is this part about?

Added some explanation in commit message and docstring of gdb--memory-display-warning.

And here is the new patch.

Yuan