From d3b1e87423732a7e32fb495f8e7afde3faab88dc Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 21 May 2010 21:13:13 +0000 Subject: 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) : New field. * dwarf2expr.c (add_piece): New arguments bit_piece, offset. Always use xrealloc to resize piece array. (execute_stack_op) : Handle DW_OP_bit_piece. : Update. : 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. --- gdb/dwarf2expr.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'gdb/dwarf2expr.h') 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); -- cgit v1.1