This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]