diff options
author | Tom Tromey <tromey@redhat.com> | 2010-05-21 21:13:13 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2010-05-21 21:13:13 +0000 |
commit | d3b1e87423732a7e32fb495f8e7afde3faab88dc (patch) | |
tree | 6b1fb02cbe88204afa76f74657cbff9049f247ee /gdb/dwarf2expr.h | |
parent | cb82636715e384dc5e75f3c1a4fd436626ba8dcd (diff) | |
download | gdb-d3b1e87423732a7e32fb495f8e7afde3faab88dc.zip gdb-d3b1e87423732a7e32fb495f8e7afde3faab88dc.tar.gz gdb-d3b1e87423732a7e32fb495f8e7afde3faab88dc.tar.bz2 |
gdb
* dwarf2loc.c (extract_bits_primitive): New function.
(extract_bits): Likewise.
(insert_bits): Likewise.
(copy_bitwise): Likewise.
(read_pieced_value): Do all operations in bits.
(write_pieced_value): Likewise.
* dwarf2expr.h (struct dwarf_expr_piece) <offset>: New field.
* dwarf2expr.c (add_piece): New arguments bit_piece, offset.
Always use xrealloc to resize piece array.
(execute_stack_op) <DW_OP_reg0>: Handle DW_OP_bit_piece.
<DW_OP_piece>: Update.
<DW_OP_bit_piece>: New case.
gdb/testsuite
* gdb.dwarf2/pieces.exp (pieces_test_f3): New proc.
Call it.
* gdb.dwarf2/pieces.S: Update.
* gdb.dwarf2/pieces.c (struct B): Remove initial field.
Diffstat (limited to 'gdb/dwarf2expr.h')
-rw-r--r-- | gdb/dwarf2expr.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h index f24f193..487d4f7 100644 --- a/gdb/dwarf2expr.h +++ b/gdb/dwarf2expr.h @@ -155,7 +155,7 @@ struct dwarf_expr_context }; -/* A piece of an object, as recorded by DW_OP_piece. */ +/* A piece of an object, as recorded by DW_OP_piece or DW_OP_bit_piece. */ struct dwarf_expr_piece { enum dwarf_value_location location; @@ -181,8 +181,10 @@ struct dwarf_expr_piece } literal; } v; - /* The length of the piece, in bytes. */ + /* The length of the piece, in bits. */ ULONGEST size; + /* The piece offset, in bits. */ + ULONGEST offset; }; struct dwarf_expr_context *new_dwarf_expr_context (void); |