PR exp/11349.
authorPierre Muller <muller@sourceware.org>
Tue, 4 May 2010 06:48:27 +0000 (06:48 +0000)
committerPierre Muller <muller@sourceware.org>
Tue, 4 May 2010 06:48:27 +0000 (06:48 +0000)
* printcmd.c (x_command): Only dereference once implicitly for
TYPE_CODE_REF.

testsuite dir:
PR exp/11349.
* testsuite/gdb.cp/ref-types.exp: Add test to examine
use a reference local variable.

gdb/ChangeLog
gdb/printcmd.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/ref-types.exp

index 4aa6df47fd422feae3bd4902ea07934c665ea1ee..972a64d8fba434832ea0b72040fc262baf5c766f 100644 (file)
@@ -1,3 +1,9 @@
+2010-05-04  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+       PR exp/11349.
+       * printcmd.c (x_command): Only dereference once implicitly for
+       TYPE_CODE_REF.
+
 2010-05-03  Doug Evans  <dje@google.com>
 
        * event-loop.c (gdb_timer): Delete unused global.
index 735b043e76b4166e28b9c3e6525ee8077fc492e5..16ea2a65d6c9fe2c3feb75b2053548fc3fbb9561 100644 (file)
@@ -1420,7 +1420,7 @@ x_command (char *exp, int from_tty)
       old_chain = make_cleanup (free_current_contents, &expr);
       val = evaluate_expression (expr);
       if (TYPE_CODE (value_type (val)) == TYPE_CODE_REF)
-       val = value_ind (val);
+       val = coerce_ref (val);
       /* In rvalue contexts, such as this, functions are coerced into
          pointers to functions.  This makes "x/i main" work.  */
       if (/* last_format == 'i'  && */ 
index 1918726517f7f58187b06b2c6ac4546c5a31faa7..f8aaf35f62e32fc5989e17f8b41fc2735bbfe160 100644 (file)
@@ -1,3 +1,9 @@
+2010-05-04  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+       PR exp/11349.
+       * testsuite/gdb.cp/ref-types.exp: Add test to examine
+       use a reference local variable.
+
 2010-05-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * gdb.base/break-interp.exp: Remove $exec.debug safety removal.
index 130843342a7ba9be0112f879529329c2cbe427d9..977eaa425561094b8acbf03f50b770a36a4de212 100644 (file)
@@ -200,6 +200,11 @@ gdb_expect {
     timeout           { fail "(timeout) print value of *rps" }
   }
 
+# GDB had a bug about dereferencing a pointer type
+# that would lead to wrong results
+# if we try to examine memory at pointer value.
+
+gdb_test "x /hd rps" "$hex:\[ \t\]*-1" "examine value at rps"
 
 send_gdb "ptype rps\n"
 gdb_expect {