From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18563 invoked by alias); 5 Nov 2002 03:45:37 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 18490 invoked from network); 5 Nov 2002 03:45:35 -0000 Received: from unknown (HELO mail-out1.apple.com) (17.254.0.52) by sources.redhat.com with SMTP; 5 Nov 2002 03:45:35 -0000 Received: from mailgate2.apple.com (A17-129-100-225.apple.com [17.129.100.225]) by mail-out1.apple.com (8.11.3/8.11.3) with ESMTP id gA53jZw00809 for ; Mon, 4 Nov 2002 19:45:35 -0800 (PST) Received: from scv2.apple.com (scv2.apple.com) by mailgate2.apple.com (Content Technologies SMTPRS 4.2.1) with ESMTP id for ; Mon, 4 Nov 2002 19:45:34 -0800 Received: from platinum.localnet (vpn-scv-x3-17.apple.com [17.219.194.17]) by scv2.apple.com (8.11.3/8.11.3) with ESMTP id gA53jTi02893 for ; Mon, 4 Nov 2002 19:45:29 -0800 (PST) Date: Mon, 04 Nov 2002 19:45:00 -0000 Mime-Version: 1.0 (Apple Message framework v543) Content-Type: multipart/mixed; boundary=Apple-Mail-13-178589169 Subject: [RFA] New variable, 'max-completion-results'. From: Klee Dienes To: gdb-patches@sources.redhat.com Message-Id: X-SW-Source: 2002-11/txt/msg00043.txt.bz2 --Apple-Mail-13-178589169 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Content-length: 455 The following patch adds a new user-visible variable to GDB, 'max-completion-results'. It is used by the completion functions in symtab.c to limit the maximum number of results returned by the completion function, and defaults to 'unlimited'. I find it particuarly useful when using GDB under emacs, to prevent situations where hitting at the wrong time can lead to hundreds of thousands of results having to be sorted by complete_command. --Apple-Mail-13-178589169 Content-Disposition: attachment; filename=limit-completions.txt Content-Transfer-Encoding: 7bit Content-Type: text/plain; x-unix-mode=0644; name="limit-completions.txt" Content-length: 2975 Index: symtab.c =================================================================== RCS file: /cvs/src/src/gdb/symtab.c,v retrieving revision 1.75 diff -u -r1.75 symtab.c --- symtab.c 28 Oct 2002 17:05:56 -0000 1.75 +++ symtab.c 4 Nov 2002 07:24:59 -0000 @@ -50,6 +50,8 @@ #include #include "cp-abi.h" +static unsigned int max_completion_results = UINT_MAX; + /* Prototypes for local functions */ static void completion_list_add_name (char *, char *, int, char *, char *); @@ -3090,6 +3092,7 @@ /* Helper routine for make_symbol_completion_list. */ +static unsigned int return_val_max; static int return_val_size; static int return_val_index; static char **return_val; @@ -3120,10 +3123,11 @@ /* clip symbols that cannot match */ + if (return_val_index == return_val_max) + return; + if (strncmp (symname, sym_text, sym_text_len) != 0) - { - return; - } + return; /* We have a match for a completion, so add SYMNAME to the current list of matches. Note that the name is moved to freshly malloc'd space. */ @@ -3238,6 +3242,7 @@ sym_text_len = strlen (sym_text); + return_val_max = max_completion_results; return_val_size = 100; return_val_index = 0; return_val = (char **) xmalloc ((return_val_size + 1) * sizeof (char *)); @@ -3419,6 +3424,7 @@ sym_text_len = strlen (sym_text); + return_val_max = max_completion_results; return_val_size = 10; return_val_index = 0; return_val = (char **) xmalloc ((return_val_size + 1) * sizeof (char *)); @@ -3739,6 +3745,7 @@ /* Helper routine for make_symbol_completion_list. */ +static unsigned int sym_return_val_max; static int sym_return_val_size; static int sym_return_val_index; static struct symbol **sym_return_val; @@ -3754,6 +3761,9 @@ int i; char *sym_name; + if (sym_return_val_index >= sym_return_val_max) + return; + /* If there is no type information, we can't do anything, so skip */ if (SYMBOL_TYPE (sym) == NULL) return; @@ -3822,6 +3832,7 @@ } oload_name_len = strlen (oload_name); + sym_return_val_max = max_completion_results; sym_return_val_size = 100; sym_return_val_index = 0; sym_return_val = (struct symbol **) xmalloc ((sym_return_val_size + 1) * sizeof (struct symbol *)); @@ -3965,6 +3976,8 @@ void _initialize_symtab (void) { + struct cmd_list_element *cmd; + add_info ("variables", variables_info, "All global and static variable names, or those matching REGEXP."); if (dbx_commands) @@ -3998,6 +4011,13 @@ add_com ("rbreak", class_breakpoint, rbreak_command, "Set a breakpoint for all functions matching REGEXP."); + + cmd = add_set_cmd ("max-completion-results", class_obscure, var_uinteger, + (char *) &max_completion_results, + "Set the maximum number of entries to be returned from a completion o\ +peration.", + &setlist); + add_show_from_set (cmd, &showlist); if (xdb_commands) { --Apple-Mail-13-178589169 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Content-length: 1 --Apple-Mail-13-178589169--