diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-10-13 16:26:22 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-10-13 16:26:22 +0000 |
commit | f8e118eabb299fec370f6f6a79cc88f33d52099e (patch) | |
tree | 947059ed7346d71e816c201bff573ca5a88648ec /gdb/value.c | |
parent | 62a2e263f8336b16deb4a5989af980e6f84f19b0 (diff) | |
download | gdb-f8e118eabb299fec370f6f6a79cc88f33d52099e.tar.gz |
gdb/
Fix internal error regression.
* value.c (value_primitive_field): Handle value_optimized_out. Move
packed bitfields comment.
gdb/testsuite/
Fix internal error regression.
* gdb.dwarf2/implptr-optimized-out.S: New file.
* gdb.dwarf2/implptr-optimized-out.exp: New file.
Diffstat (limited to 'gdb/value.c')
-rw-r--r-- | gdb/value.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gdb/value.c b/gdb/value.c index e72670b6a29..d263d0c6b67 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -2488,16 +2488,19 @@ value_primitive_field (struct value *arg1, int offset, description correctly. */ check_typedef (type); - /* Handle packed fields */ - - if (TYPE_FIELD_BITSIZE (arg_type, fieldno)) + if (value_optimized_out (arg1)) + v = allocate_optimized_out_value (type); + else if (TYPE_FIELD_BITSIZE (arg_type, fieldno)) { - /* Create a new value for the bitfield, with bitpos and bitsize + /* Handle packed fields. + + Create a new value for the bitfield, with bitpos and bitsize set. If possible, arrange offset and bitpos so that we can do a single aligned read of the size of the containing type. Otherwise, adjust offset to the byte containing the first bit. Assume that the address, offset, and embedded offset are sufficiently aligned. */ + int bitpos = TYPE_FIELD_BITPOS (arg_type, fieldno); int container_bitsize = TYPE_LENGTH (type) * 8; |