From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11174 invoked by alias); 14 Dec 2006 09:53:21 -0000 Received: (qmail 11166 invoked by uid 22791); 14 Dec 2006 09:53:20 -0000 X-Spam-Check-By: sourceware.org Received: from viper.snap.net.nz (HELO viper.snap.net.nz) (202.37.101.8) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 14 Dec 2006 09:53:10 +0000 Received: from kahikatea.snap.net.nz (p202-124-120-95.snap.net.nz [202.124.120.95]) by viper.snap.net.nz (Postfix) with ESMTP id A37B63D8414; Thu, 14 Dec 2006 22:54:28 +1300 (NZDT) Received: by kahikatea.snap.net.nz (Postfix, from userid 500) id 30B37BE38A; Thu, 14 Dec 2006 22:48:37 +1300 (NZDT) From: Nick Roberts MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <17793.7666.771432.41360@kahikatea.snap.net.nz> Date: Thu, 14 Dec 2006 09:53:00 -0000 To: Vladimir Prus Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH] Fix variable objects for references to pointers In-Reply-To: References: <17792.55489.274138.854508@kahikatea.snap.net.nz> X-Mailer: VM 7.19 under Emacs 22.0.91.17 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-12/txt/msg00191.txt.bz2 > Is there are testcase for this? -- Nick http://www.inet.net.nz/~nickrob 2006-12-14 Nick Roberts * gdb.mi/mi-var-cp.exp: New test for references to pointers. * gdb.mi/mi-var-cp.cc: Remove unnecessary string quotes. (reference_to_pointer): New procedure for above test. *** mi-var-cp.exp 09 Dec 2006 10:52:03 +1300 1.2 --- mi-var-cp.exp 14 Dec 2006 22:45:31 +1300 *************** mi_gdb_load ${binfile} *** 43,54 **** mi_runto reference_update_tests ! mi_create_varobj "RX" "rx" "create varobj for rx" set x_assignment [gdb_get_line_number "x = 567;"] ! mi_next_to "reference_update_tests" {} ".*${srcfile}" [expr $x_assignment-1] \ "step to x assignment" ! mi_next_to "reference_update_tests" {} ".*${srcfile}" [expr $x_assignment] \ "step to x assignment" mi_varobj_update RX {RX} "update RX (1)" --- 43,54 ---- mi_runto reference_update_tests ! mi_create_varobj RX rx "create varobj for rx" set x_assignment [gdb_get_line_number "x = 567;"] ! mi_next_to reference_update_tests {} ".*${srcfile}" [expr $x_assignment-1] \ "step to x assignment" ! mi_next_to reference_update_tests {} ".*${srcfile}" [expr $x_assignment] \ "step to x assignment" mi_varobj_update RX {RX} "update RX (1)" *************** mi_varobj_update RX {RX} "update RX (1)" *** 56,91 **** mi_check_varobj_value RX 167 "check RX: expect 167" # Execute the first 'x = 567' line. ! mi_next_to "reference_update_tests" {} ".*${srcfile}" [expr $x_assignment+1] \ "step to x assignment" mi_varobj_update RX {RX} "update RX (2)" mi_check_varobj_value RX 567 "check RX: expect 567" # Execute the second 'x = 567' line. ! mi_next_to "reference_update_tests" {} ".*${srcfile}" [expr $x_assignment+2] \ "step to x assignment" mi_varobj_update RX {} "update RX (3)" mi_runto base_in_reference_test ! mi_create_varobj "S2" "s2" "create varobj for s2" ! mi_list_varobj_children "S2" {{"S2.S" "S" "1" "S"}} "list children of s2" ! mi_list_varobj_children "S2.S" {{"S2.S.public" "public" "2"}} \ "list children of s2.s" ! mi_list_varobj_children "S2.S.public"\ { ! {"S2.S.public.i" "i" "0" "int"} ! {"S2.S.public.j" "j" "0" "int"} } "list children of s2.s.public" ! mi_check_varobj_value "S2.S.public.i" "67" "check S2.S.public.i" ! mi_check_varobj_value "S2.S.public.j" "89" "check S2.S.public.j" mi_gdb_exit return 0 --- 56,113 ---- mi_check_varobj_value RX 167 "check RX: expect 167" # Execute the first 'x = 567' line. ! mi_next_to reference_update_tests {} ".*${srcfile}" [expr $x_assignment+1] \ "step to x assignment" mi_varobj_update RX {RX} "update RX (2)" mi_check_varobj_value RX 567 "check RX: expect 567" # Execute the second 'x = 567' line. ! mi_next_to reference_update_tests {} ".*${srcfile}" [expr $x_assignment+2] \ "step to x assignment" mi_varobj_update RX {} "update RX (3)" mi_runto base_in_reference_test ! mi_create_varobj S2 s2 "create varobj for s2" ! mi_list_varobj_children S2 {{S2.S S 1 S}} "list children of s2" ! mi_list_varobj_children S2.S {{S2.S.public public 2}} \ "list children of s2.s" ! mi_list_varobj_children S2.S.public\ { ! {S2.S.public.i i 0 int} ! {S2.S.public.j j 0 int} } "list children of s2.s.public" ! mi_check_varobj_value S2.S.public.i 67 "check S2.S.public.i" ! mi_check_varobj_value S2.S.public.j 89 "check S2.S.public.j" + mi_runto reference_to_pointer + + set end_of_proc [gdb_get_line_number "return 99;"] + send_gdb "-exec-next 4\n" + gdb_expect { + -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"reference_to_pointer\",args=\\\[\\\],file=\".*${srcfile}\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$end_of_proc\"\}\r\n$mi_gdb_prompt$" { + pass "4xnext to return 99" + } + timeout { fail "4xnext in reference_to_pointer (timeout)" } + } + + mi_create_varobj RPTR rptr_s "create varobj for rptr_s" + + mi_list_varobj_children RPTR {{RPTR.public public 2}} \ + "list public child of RPTR" + + mi_list_varobj_children RPTR.public \ + {{RPTR.public.i i 0 int} + {RPTR.public.j j 0 int}} "list children of reference to pointer" + + mi_check_varobj_value RPTR.public.i 67 "check i member" + mi_check_varobj_value RPTR.public.j 89 "check j member" mi_gdb_exit return 0