From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32005 invoked by alias); 21 Sep 2009 12:09:08 -0000 Received: (qmail 31995 invoked by uid 22791); 21 Sep 2009 12:09:07 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from viper.snap.net.nz (HELO viper.snap.net.nz) (202.37.101.25) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 21 Sep 2009 12:09:03 +0000 Received: from totara (126.61.255.123.dynamic.snap.net.nz [123.255.61.126]) by viper.snap.net.nz (Postfix) with ESMTP id 876CF3DA36F for ; Tue, 22 Sep 2009 00:09:00 +1200 (NZST) Received: by totara (Postfix, from userid 1000) id CC112C166; Tue, 22 Sep 2009 00:08:58 +1200 (NZST) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <19127.27863.973393.962895@totara.tehura.co.nz> Date: Mon, 21 Sep 2009 12:09:00 -0000 To: gdb-patches@sourceware.org Subject: [PATCH:gdb/mi] Update a specified list of variable objects From: nickrob@snap.net.nz (Nick Roberts) 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: 2009-09/txt/msg00659.txt.bz2 Since -var-list-children currently creates variable objects of all children and this may be a large number, I would like to be able to restrict -var-update to just update those variable objects whose expressions are visible in the front end. This could be done by updating them individually but that might result in many round trips. I would therefore like to commit the following patch which allows a list of variable objects to be specified in the argument to -var-update: -var-update [PRINT_VALUES] NAME1 NAME2 ... -- Nick http://www.inet.net.nz/~nickrob 2009-09-22 Nick Roberts * mi/mi-cmd-var.c (mi_cmd_var_update): Accept a list of variable objects to update. *** mi-cmd-var.c.~1.61.~ 2009-09-16 18:30:24.000000000 +1200 --- mi-cmd-var.c 2009-09-17 14:54:15.000000000 +1200 *************** mi_cmd_var_update (char *command, char * *** 660,678 **** struct cleanup *cleanup; char *name; enum print_values print_values; ! if (argc != 1 && argc != 2) ! error (_("mi_cmd_var_update: Usage: [PRINT_VALUES] NAME.")); ! if (argc == 1) ! name = argv[0]; ! else ! name = (argv[1]); ! if (argc == 2) ! print_values = mi_parse_values_option (argv[0]); ! else ! print_values = PRINT_NO_VALUES; if (mi_version (uiout) <= 1) cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist"); --- 660,705 ---- struct cleanup *cleanup; char *name; enum print_values print_values; + int optind = 0; + char *optarg; ! enum opt ! { ! NO_VALUES, SIMPLE_VALUES, ALL_VALUES ! }; ! static struct mi_opt opts[] = ! { ! { "-no-values", NO_VALUES, 0 }, ! { "-simple-values", SIMPLE_VALUES, 0 }, ! { "-all-values", ALL_VALUES, 0 }, ! { 0, 0, 0 } ! }; ! while (1) ! { ! int opt = mi_getopt ("mi_cmd_var_update", ! argc, argv, opts, &optind, &optarg); ! if (opt < 0) ! break; ! switch ((enum opt) opt) ! { ! case NO_VALUES: ! print_values = PRINT_NO_VALUES; ! break; ! case SIMPLE_VALUES: ! print_values = PRINT_SIMPLE_VALUES; ! break; ! case ALL_VALUES: ! print_values = PRINT_ALL_VALUES; ! break; ! } ! } ! ! if (optind >= argc) ! error (_("mi_cmd_var_update: Usage: [PRINT_VALUES] NAME1 NAME2 ...")); ! ! name = argv[optind]; if (mi_version (uiout) <= 1) cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist"); *************** mi_cmd_var_update (char *command, char * *** 697,706 **** } else { ! /* Get varobj handle, if a valid var obj name was specified */ ! struct varobj *var = varobj_get_handle (name); ! ! varobj_update_one (var, print_values, 1 /* explicit */); } do_cleanups (cleanup); --- 724,737 ---- } else { ! int index = optind; ! while (argv[index]) { ! /* Get varobj handle, if a valid var obj name was specified */ ! struct varobj *var = varobj_get_handle (argv[index]); ! ! varobj_update_one (var, print_values, 1 /* explicit */); ! index++; ! } } do_cleanups (cleanup);