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/testsuite/gdb.dwarf2/pieces.exp | |
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/testsuite/gdb.dwarf2/pieces.exp')
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/pieces.exp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/pieces.exp b/gdb/testsuite/gdb.dwarf2/pieces.exp index c7608cd..2e812b5 100644 --- a/gdb/testsuite/gdb.dwarf2/pieces.exp +++ b/gdb/testsuite/gdb.dwarf2/pieces.exp @@ -67,15 +67,30 @@ proc pieces_test_f2 {} { gdb_test "print a\[1\]" " = 14" "print a\[1\] in pieces:f2" } +# Function f3 tests DW_OP_bit_piece. +proc pieces_test_f3 {} { + global csrcfile + set line [gdb_get_line_number "f3 breakpoint" $csrcfile] + gdb_test "break pieces.c:$line" "Breakpoint 4.*" \ + "set f3 breakpoint for pieces" + gdb_continue_to_breakpoint "continue to f3 breakpoint for pieces" + gdb_test "print a.i" " = 4" "print a.i in pieces:f3" + gdb_test "print a.j" " = 14" "print a.j in pieces:f3" + # Right now gdb says "value optimized out" here, but that is wrong. + setup_kfail "no bug yet" *-*-* + gdb_test "print a.i = 7" " = 7" "set a.i in pieces:f3" + gdb_test "print a.i" " = 7" "print new a.i in pieces:f3" +} + # Function f6 tests for an empty DW_OP_piece. proc pieces_test_f6 {} { global csrcfile set line [gdb_get_line_number "f6 breakpoint" $csrcfile] - gdb_test "break pieces.c:$line" "Breakpoint 4.*" \ + gdb_test "break pieces.c:$line" "Breakpoint 5.*" \ "set f6 breakpoint for pieces" gdb_continue_to_breakpoint "continue to f6 breakpoint for pieces" gdb_test "print a" \ - "warning: bytes .* in computed object were.* = {i = 7, j = 8, q = 0}" \ + "warning: bits .* in computed object were.* = {i = 7, j = 8, q = 0}" \ "print a with optimized out piece" # Note: no warning for this case. gdb_test_multiple "print a.i" \ @@ -91,4 +106,5 @@ proc pieces_test_f6 {} { pieces_test_f1 pieces_test_f2 +pieces_test_f3 pieces_test_f6 |