This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[RFA] test equality operations with refs
- From: Jerome Guitton <guitton at adacore dot com>
- To: gdb-patches at sourceware dot org
- Date: Mon, 24 Nov 2008 16:17:56 +0100
- Subject: [RFA] test equality operations with refs
This is the example mentionned in
http://sourceware.org/ml/gdb-patches/2008-11/msg00627.html
This basically makes sure that GDB can compare the field of a
struct/record passed by reference against a scalar. For now, this
fails in Ada; if OK, I would apply this patch when the bug is fixed.
OK to apply?
2008-11-24 Jerome Guitton <guitton@adacore.com>
* gdb.cp/formatted-ref.exp: Add equality test.
* gdb.ada/formatted_ref.exp: Ditto.
Index: gdb.ada/formatted_ref.exp
===================================================================
--- gdb.ada/formatted_ref.exp (revision 139003)
+++ gdb.ada/formatted_ref.exp (working copy)
@@ -20,6 +20,9 @@
# tests because only a few parameter types in Ada are required to be
# passed by reference, and there is no equivalent of &(&x) for reference
# values.
+# This also tests that some other arithmetic operations on references
+# work properly: condition expression using a reference object as one of its
+# operand.
if $tracelevel then {
strace $tracelevel
@@ -88,6 +91,11 @@
return 0
}
+proc test_p_op1_equals_op2 {op1 op2} {
+ set test "print $op1 = $op2"
+ gdb_test $test "\\$\[0-9\]+ = true"
+}
+
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
@@ -100,3 +108,5 @@
test_p_x "s" "(x => 0xd, y => 0x13)" $s1_address
test_p_x_addr "s" $s1_address
+
+test_p_op1_equals_op2 "s.x" "13"
Index: gdb.cp/formatted-ref.exp
===================================================================
--- gdb.cp/formatted-ref.exp (revision 139003)
+++ gdb.cp/formatted-ref.exp (working copy)
@@ -23,6 +23,9 @@
# rather than printing both that and the dereferenced value. We also
# check that the (non-standard) expression &(&x), where x is of type T&,
# yields an appropriate value.
+# This also tests that some other arithmetic operations on references
+# work properly: condition expression using a reference object as one of its
+# operand.
if $tracelevel then {
strace $tracelevel
@@ -106,6 +109,11 @@
return 0
}
+proc test_p_op1_equals_op2 {op1 op2} {
+ set test "print $op1 == $op2"
+ gdb_test $test "\\$\[0-9\]+ = true"
+}
+
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
@@ -128,3 +136,5 @@
test_p_x_ref_addr "s" $s1_address
test_p_x_ref_addr "i" $i1_address
test_p_x_ref_addr "e" $e1_address
+
+test_p_op1_equals_op2 "s.x" "13"