gdb
authorTom Tromey <tromey@redhat.com>
Fri, 21 May 2010 21:00:27 +0000 (21:00 +0000)
committerTom Tromey <tromey@redhat.com>
Fri, 21 May 2010 21:00:27 +0000 (21:00 +0000)
* eval.c (evaluate_subexp_standard) <BINOP_SUBSCRIPT>: Call
evaluate_subexp, not evaluate_subexp_with_coercion.
gdb/testsuite
* gdb.dwarf2/pieces.exp (pieces_test_f2): New proc.
Call it.

gdb/ChangeLog
gdb/eval.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.dwarf2/pieces.exp

index 067ea48cd4d462f786b56887b8321de9bbee8cef..4db297733d1ef0ae6cc51d60e50d5c0f4d69d52a 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-21  Tom Tromey  <tromey@redhat.com>
+
+       * eval.c (evaluate_subexp_standard) <BINOP_SUBSCRIPT>: Call
+       evaluate_subexp, not evaluate_subexp_with_coercion.
+
 2010-05-21  Pierre Muller  <muller@ics.u-strasbg.fr>
 
        * dwarf2read.c (new_symbol): Handle DW_AT_variable_parameter
index 1dbf6fa50876d04745463b663bce245a5532e403..8efb45a8f8847e778f96586e4c1a42fbf7f56123 100644 (file)
@@ -2059,8 +2059,8 @@ evaluate_subexp_standard (struct type *expect_type,
       error (_("':' operator used in invalid context"));
 
     case BINOP_SUBSCRIPT:
-      arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
-      arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
+      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
       if (noside == EVAL_SKIP)
        goto nosideret;
       if (binop_user_defined_p (op, arg1, arg2))
index 304334d262fed6a4f092d9bb614ca23c63b0898e..87bec37fb56e902e353381e57244732366cdfe7d 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-21  Tom Tromey  <tromey@redhat.com>
+
+       * gdb.dwarf2/pieces.exp (pieces_test_f2): New proc.
+       Call it.
+
 2010-05-21  Tom Tromey  <tromey@redhat.com>
 
        * gdb.dwarf2.pieces.exp: New file.
index bdac5825f20cc4bec8f58159bfcd598bc77b8762..35155869d67a80d22a850029a65e928d22e5a87a 100644 (file)
@@ -54,4 +54,18 @@ proc pieces_test_f1 {} {
     gdb_test "print a.j" " = 14" "print a.j in pieces:f1"
 }
 
+# Function f2 tests for a bug when indexing into an array created
+# using DW_OP_piece.
+proc pieces_test_f2 {} {
+    global csrcfile
+    set line [gdb_get_line_number "f2 breakpoint" $csrcfile]
+    gdb_test "break pieces.c:$line" "Breakpoint 3.*" \
+       "set f2 breakpoint for pieces"
+    gdb_continue_to_breakpoint "continue to f2 breakpoint for pieces"
+    gdb_test "print a" " = .4, 14." "print a in pieces:f2"
+    gdb_test "print a\[0\]" " = 4" "print a\[0\] in pieces:f2"
+    gdb_test "print a\[1\]" " = 14" "print a\[1\] in pieces:f2"
+}
+
 pieces_test_f1
+pieces_test_f2