diff options
author | Tom Tromey <tom@tromey.com> | 2023-04-20 15:47:41 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2023-05-11 15:47:37 -0600 |
commit | 245f9db1fa8a355e9b18d0966fe20d6341e36813 (patch) | |
tree | cd6ba023a81f8f75b29a180699a2ca47f8794592 /gdb/python/py-evts.c | |
parent | b7ea736a38013510cd0496b42a8eb2dd2d2f6830 (diff) | |
download | binutils-245f9db1fa8a355e9b18d0966fe20d6341e36813.zip binutils-245f9db1fa8a355e9b18d0966fe20d6341e36813.tar.gz binutils-245f9db1fa8a355e9b18d0966fe20d6341e36813.tar.bz2 |
Do not print <synthetic pointer> when piece is optimized out
A user reported a bug where printing a certain array of integer types
would result in the nonsensical:
(gdb) p l_126
$1 = {6639779683436459270, <synthetic pointer>, <synthetic pointer>, <synthetic pointer>}
I tracked this down to some issues in the DWARF expression code.
First, check_pieced_synthetic_pointer did not account for the
situation where a location expression does not describe all the bits
of a value -- in this case it returned true, meaning there is a
synthetic pointer, but in fact these bits are optimized out. (It
turns out this incorrect output had already been erroneously tested
for as well.)
Next, rw_pieced_value did not mark these bits as optimized-out,
either.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30296
Diffstat (limited to 'gdb/python/py-evts.c')
0 files changed, 0 insertions, 0 deletions