aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2expr.h
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2010-05-21 21:13:13 +0000
committerTom Tromey <tromey@redhat.com>2010-05-21 21:13:13 +0000
commitd3b1e87423732a7e32fb495f8e7afde3faab88dc (patch)
tree6b1fb02cbe88204afa76f74657cbff9049f247ee /gdb/dwarf2expr.h
parentcb82636715e384dc5e75f3c1a4fd436626ba8dcd (diff)
downloadgdb-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.h6
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);