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]

Robustify MI tests


This patch makes some MI tests more robust. In one case,
a test included lots of uninitialized variables, and assumed
some particular result of -var-update. In another case, there
were pointers to single char, which are printed as strings,
and the printed values are unpredictable.

OK?

- Volodya

	* gdb.mi/mi-var-child.c	
	(do_children_tests): User char[2] instead of
	char so that automatic printing of pointers to char
	don't give unpredicable result.
	* gdb.mi/var-cmd.c (do_locals_test): Initialize
	local variables.
	* gdb.mi/mi-var-child.exp: Step to right line
	of do_children_tests.
	* gdb.mi/mi2-var-child.exp: Likewise.
	* gdb.mi/mi-var-cmd.exp: Step to right line of
	do_locals_tests. 
	(do_children_tests): User char[2] instead of
	char so that automatic printing of pointers to char
	don't give unpredicable result.	
	* gdb.mi/mi2-var-cmd.exp: Likewise.
	* lib/mi-support.exp (mi_continue_to_line): 
	Pass test name to mi_wait_for_stop.
--- gdb/testsuite/gdb.mi/mi-var-child.c	(revision 3534)
+++ gdb/testsuite/gdb.mi/mi-var-child.c	(local)
@@ -199,9 +199,9 @@ do_children_tests (void)
   weird_struct *weird;
   struct _struct_n_pointer *psnp;
   struct _struct_n_pointer snp0, snp1, snp2;
-  char a0, *a1, **a2, ***a3;
-  char b0, *b1, **b2, ***b3;
-  char c0, *c1, **c2, ***c3;
+  char a0[2] = {}, *a1, **a2, ***a3;
+  char b0[2] = {}, *b1, **b2, ***b3;
+  char c0[2] = {}, *c1, **c2, ***c3;
   long z0, *z1, **z2, ***z3;
   long y0, *y1, **y2, ***y3;
   long x0, *x1, **x2, ***x3;
@@ -233,16 +233,16 @@ do_children_tests (void)
   struct_declarations.long_array[11] = 5678;
 
   /* Struct/pointer/array tests */
-  a0 = '0';
-  a1 = &a0;
+  a0[0] = '0';  
+  a1 = a0;
   a2 = &a1;
   a3 = &a2;
-  b0 = '1';
-  b1 = &b0;
+  b0[0] = '1';
+  b1 = b0;
   b2 = &b1;
   b3 = &b2;
-  c0 = '2';
-  c1 = &c0;
+  c0[1] = '2';
+  c1 = c0;
   c2 = &c1;
   c3 = &c2;
   z0 = 0xdead + 0;
--- gdb/testsuite/gdb.mi/mi-var-child.exp	(revision 3534)
+++ gdb/testsuite/gdb.mi/mi-var-child.exp	(local)
@@ -43,17 +43,16 @@ mi_gdb_load ${binfile}
 
 mi_runto do_children_tests
 
+set line_dlt_first_real [gdb_get_line_number "weird = &struct_declarations;"]
+mi_continue_to_line $line_dlt_first_real "step to real start of do_children_test"
+
+
 #####        #####
 #                #
 # children tests #
 #                #
 #####        #####
 
-# Step past the initialization of struct_declarations.
-set line_weird [gdb_get_line_number "weird = &struct_declarations;"]
-mi_execute_to "exec-next" "end-stepping-range" do_children_tests {} ".*${srcfile}" \
-    [expr $line_weird] {} "step \$line_weird"
-
 # Test: c_variable-4.2
 # Desc: create variable "struct_declarations"
 mi_gdb_test "-var-create struct_declarations * struct_declarations" \
@@ -859,7 +858,7 @@ mi_gdb_test "-var-update --no-values *" 
  "update all vars struct_declarations.long_array.10 changed, don't print values."
 
 # Step over "struct_declarations.long_array[11] = 5678";
-set line_dct_a0_0 [gdb_get_line_number "a0 = '0';"]
+set line_dct_a0_0 [gdb_get_line_number "a0\[0\] = '0';"]
 mi_step_to  do_children_tests {} ".*${srcfile}" \
     $line_dct_a0_0 "step \$line_dct_a0_0"
 
--- gdb/testsuite/gdb.mi/mi-var-cmd.exp	(revision 3534)
+++ gdb/testsuite/gdb.mi/mi-var-cmd.exp	(local)
@@ -71,6 +71,11 @@ mi_gdb_test "113-var-create argc * argc"
 
 mi_runto do_locals_tests
 
+set line_dlt_first_real [gdb_get_line_number "linteger = 1234;"]
+
+mi_continue_to_line $line_dlt_first_real "step to real start of do_locals_test"
+
+
 # Test: c_variable-1.4
 # Desc: create local variables
 
--- gdb/testsuite/gdb.mi/mi2-var-child.exp	(revision 3534)
+++ gdb/testsuite/gdb.mi/mi2-var-child.exp	(local)
@@ -42,6 +42,9 @@ mi_gdb_load ${binfile}
 
 mi_runto do_children_tests
 
+set line_dlt_first_real [gdb_get_line_number "weird = &struct_declarations;"]
+mi_continue_to_line $line_dlt_first_real "step to real start of do_children_test"
+
 #####        #####
 #                #
 # children tests #
@@ -836,7 +839,7 @@ mi_gdb_test "-var-update *" \
 
 
 # Step over "weird->func_ptr = nothing;"
-set line_dct_a0_0 [gdb_get_line_number "a0 = '0';"]
+set line_dct_a0_0 [gdb_get_line_number "a0\[0\] = '0';"]
 mi_step_to do_children_tests {} {.*var-cmd.c} \
     $line_dct_a0_0 "step \$line_dct_a0_0"
 
--- gdb/testsuite/gdb.mi/mi2-var-cmd.exp	(revision 3534)
+++ gdb/testsuite/gdb.mi/mi2-var-cmd.exp	(local)
@@ -71,6 +71,11 @@ mi_gdb_test "113-var-create argc * argc"
 
 mi_runto do_locals_tests
 
+set line_dlt_first_real [gdb_get_line_number "linteger = 1234;"]
+
+mi_continue_to_line $line_dlt_first_real "step to real start of do_locals_test"
+
+
 # Test: c_variable-1.4
 # Desc: create local variables
 
--- gdb/testsuite/gdb.mi/var-cmd.c	(revision 3534)
+++ gdb/testsuite/gdb.mi/var-cmd.c	(local)
@@ -113,16 +113,16 @@ int *array_ptr = array;
 void
 do_locals_tests ()
 {
-  int linteger;
-  int *lpinteger;
-  char lcharacter;
-  char *lpcharacter;
-  long llong;
-  long *lplong;
-  float lfloat;
-  float *lpfloat;
-  double ldouble;
-  double *lpdouble;
+  int linteger = 0;
+  int *lpinteger = 0;
+  char lcharacter = 0;
+  char *lpcharacter = 0;
+  long llong = 0;
+  long *lplong = 0;
+  float lfloat = 0;
+  float *lpfloat = 0;
+  double ldouble = 0;
+  double *lpdouble = 0;
   struct _simple_struct lsimple;
   struct _simple_struct *lpsimple;
   void (*func) (void);
@@ -202,9 +202,9 @@ do_children_tests (void)
   weird_struct *weird;
   struct _struct_n_pointer *psnp;
   struct _struct_n_pointer snp0, snp1, snp2;
-  char a0, *a1, **a2, ***a3;
-  char b0, *b1, **b2, ***b3;
-  char c0, *c1, **c2, ***c3;
+  char a0[2] = {}, *a1, **a2, ***a3;
+  char b0[2] = {}, *b1, **b2, ***b3;
+  char c0[2] = {}, *c1, **c2, ***c3;
   long z0, *z1, **z2, ***z3;
   long y0, *y1, **y2, ***y3;
   long x0, *x1, **x2, ***x3;
@@ -233,16 +233,16 @@ do_children_tests (void)
   weird->func_ptr = nothing;
 
   /* Struct/pointer/array tests */
-  a0 = '0';
-  a1 = &a0;
+  a0[0] = '0';
+  a1 = a0;
   a2 = &a1;
   a3 = &a2;
-  b0 = '1';
-  b1 = &b0;
+  b0[0] = '1';
+  b1 = b0;
   b2 = &b1;
   b3 = &b2;
-  c0 = '2';
-  c1 = &c0;
+  c0[0] = '2';
+  c1 = c0;
   c2 = &c1;
   c3 = &c2;
   z0 = 0xdead + 0;
--- gdb/testsuite/lib/mi-support.exp	(revision 3534)
+++ gdb/testsuite/lib/mi-support.exp	(local)
@@ -1239,11 +1239,11 @@ proc mi_send_resuming_command {command t
 # be determined.
 # Does not check that the line is the same as requested.
 # The caller can check itself if required.
-proc mi_continue_to_line {location command} {
+proc mi_continue_to_line {location test} {
 
     mi_tbreak $location   
     mi_send_resuming_command "exec-continue" "run to $location (exec-continue)"
-    return [mi_wait_for_stop]
+    return [mi_wait_for_stop $test]
 }
 
 # Wait until gdb prints the current line.

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