OSDN Git Service

PR exp/11349.
authormuller <muller>
Tue, 4 May 2010 15:48:25 +0000 (15:48 +0000)
committermuller <muller>
Tue, 4 May 2010 15:48:25 +0000 (15: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 4aa6df4..972a64d 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 735b043..16ea2a6 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 1918726..f8aaf35 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 1308433..977eaa4 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 {