[Dwarf-Discuss] variable locations - safe use as lvalues

Frank Ch. Eigler fche@redhat.com
Mon Jan 20 22:20:54 GMT 2020

Hi -

I have a question about variable location lists, but not their
encoding, the use they are suitable for.  The basic debugging scenario
is just reading variable values, for which this is fine, especially
when high-quality compilers emit exquisitely detailed data for their
optimized code.

But what about writes - as though one could edit the program to insert
an assignment, and resume?  A whole slew of complications come up:

- trying to modify a variable permanently, but the compiler only
  emitted -some- of its locations

- trying to modify a variable (and only one), but the compiler put two
  variables into the same location at that PC

- expressions using that value as input might have already started
  to be computed, so it may be too late to change it at the PC
  in question

- ... and undoubtedly other complications exist!

A debugger cannot currently be told that any particular variable
location expression is safe to use as an lvalue, something roughly
"exclusive, exhaustive, -O0-equivalent".  I believe most debuggers
don't even handle the multiple-locations case for writes at all.  I
don't know why - assume complications are rare?  or we have kind of
papered over the problem?

As a DWARF standard level matter, descriptive rather than prescriptive
as it is, what might be the minimum extension required to communicate
lvalue-safety to a debugger?  A DW_OP_lvalue_safe assertive wrapper
around a real expression?

- FChE

More information about the Dwarf-discuss mailing list