diff options
author | Tom de Vries <tdevries@suse.de> | 2023-05-12 11:43:41 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2023-05-12 11:43:41 +0200 |
commit | cbd24a9f11feea879c2f1857053854ef329efbd8 (patch) | |
tree | 8316c0ec1a4dcbd7b62e4e7dc4abdb2aef0c1110 /gdb/testsuite/gdb.python/py-send-packet.py | |
parent | 388f63c18f523ca32199adef33dbacbeeed3b62a (diff) | |
download | binutils-cbd24a9f11feea879c2f1857053854ef329efbd8.zip binutils-cbd24a9f11feea879c2f1857053854ef329efbd8.tar.gz binutils-cbd24a9f11feea879c2f1857053854ef329efbd8.tar.bz2 |
[gdb/testsuite] Fix gdb.dwarf2/opt-out-not-implptr.exp for -m32
When running test-case gdb.dwarf2/opt-out-not-implptr.exp with target board
unix/-m32 we have:
...
(gdb) print noptr^M
$1 = {0, <optimized out>, <optimized out>, <optimized out>}^M
(gdb) FAIL: gdb.dwarf2/opt-out-not-implptr.exp: print noptr
...
The problem happens when evaluating this dwarf expression:
...
<45> DW_AT_location : 13 byte block: 10 86 ea d7 d0 96 8e cf 92 5c 9f 93 8 \
(DW_OP_constu: 6639779683436459270; DW_OP_stack_value; DW_OP_piece: 8)
...
The DW_OP_constu pushes a value with "generic type" on to the DWARF stack, and
the "generic type" has the size of an address on the target machine, which for
target board unix/-m32 is 4 bytes. Consequently, the constant is abbreviated.
Next, the DW_OP_piece declares that the resulting 4-byte value is 8 bytes
large, and we hit this clause in rw_pieced_value:
...
/* Use zeroes if piece reaches beyond stack value. */
if (p->offset + p->size > stack_value_size_bits)
break;
...
and consequently get a zero.
We could just add require is_target_64 to the test-case, but instead, add a
32-bit case and require is_target_64 just for the 64-bit case.
Tested on x86_64-linux.
Diffstat (limited to 'gdb/testsuite/gdb.python/py-send-packet.py')
0 files changed, 0 insertions, 0 deletions