GDB: Only make data actually retrieved into value history available
authorMaciej W. Rozycki <macro@embecosm.com>
Fri, 10 Feb 2023 23:49:19 +0000 (23:49 +0000)
committerMaciej W. Rozycki <macro@embecosm.com>
Fri, 10 Feb 2023 23:49:19 +0000 (23:49 +0000)
commitaaab5fce4f25e0d3b1a85edc7d6ac8f7d06f599c
tree27e8bf3de78fc774e0318806087240c8dffd86ac
parent4f82620cc9fd1ef630b6b732a9d939d4e529a07f
GDB: Only make data actually retrieved into value history available

While it makes sense to allow accessing out-of-bounds elements in the
debuggee and see whatever there might happen to be there in memory (we
are a debugger and not a programming rules enforcement facility and we
want to make people's life easier in chasing bugs), e.g.:

  (gdb) print one_hundred[-1]
  $1 = 0
  (gdb) print one_hundred[100]
  $2 = 0
  (gdb)

we shouldn't really pretend that we have any meaningful data around
values recorded in history (what these commands really retrieve are
current debuggee memory contents outside the original data accessed,
really confusing in my opinion).  Mark values recorded in history as
such then and verify accesses to be in-range for them:

  (gdb) print one_hundred[-1]
  $1 = <unavailable>
  (gdb) print one_hundred[100]
  $2 = <unavailable>

Add a suitable test case, which also covers integer overflows in data
location calculation.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/testsuite/gdb.base/value-history-unavailable.c [new file with mode: 0644]
gdb/testsuite/gdb.base/value-history-unavailable.exp [new file with mode: 0644]
gdb/valarith.c
gdb/value.c