From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19698 invoked by alias); 12 Mar 2010 18:28:09 -0000 Received: (qmail 19688 invoked by uid 22791); 12 Mar 2010 18:28:07 -0000 X-SWARE-Spam-Status: No, hits=-7.2 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 12 Mar 2010 18:28:01 +0000 Received: from int-mx08.intmail.prod.int.phx2.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o2CIRuP6017897 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 12 Mar 2010 13:27:56 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx08.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o2CIRtEH026601; Fri, 12 Mar 2010 13:27:55 -0500 Received: from opsy.redhat.com (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id o2CIRsvO010570; Fri, 12 Mar 2010 13:27:54 -0500 Received: by opsy.redhat.com (Postfix, from userid 500) id E1FB63782C5; Fri, 12 Mar 2010 11:27:53 -0700 (MST) From: Tom Tromey To: "Pierre Muller" Cc: "'Hui Zhu'" , , "'Keith Seitz'" Subject: Re: [PATCH] Fix gdbtk-cmds.c: get a build error References: <000001cac1ef$084ed8d0$18ec8a70$@muller@ics-cnrs.unistra.fr> Reply-To: Tom Tromey Date: Fri, 12 Mar 2010 18:32:00 -0000 In-Reply-To: (Tom Tromey's message of "Fri, 12 Mar 2010 10:17:04 -0700") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes Mailing-List: contact insight-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: insight-owner@sourceware.org X-SW-Source: 2010-q1/txt/msg00032.txt.bz2 >>>>> "Tom" == Tom Tromey writes: Tom> I'm working on a replacement patch. Here it is. Ok? Tom 2010-03-12 Tom Tromey * generic/gdbtk-cmds.c: Include psymtab.h, not psympriv.h. (struct listfiles_info): New. (do_listfiles): New function. (gdb_listfiles): Use it. Index: generic/gdbtk-cmds.c =================================================================== RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-cmds.c,v retrieving revision 1.116 diff -u -r1.116 gdbtk-cmds.c --- generic/gdbtk-cmds.c 12 Mar 2010 14:19:13 -0000 1.116 +++ generic/gdbtk-cmds.c 12 Mar 2010 18:26:21 -0000 @@ -27,7 +27,6 @@ #include "inferior.h" #include "source.h" #include "symfile.h" -#include "psympriv.h" #include "objfiles.h" #include "gdbcore.h" #include "demangle.h" @@ -47,6 +46,7 @@ #include "valprint.h" #include "regcache.h" #include "arch-utils.h" +#include "psymtab.h" /* tcl header files includes varargs.h unless HAS_STDARG is defined, but gdb uses stdarg.h, so make sure HAS_STDARG is defined. */ @@ -1104,6 +1104,42 @@ return TCL_OK; } +/* An object of this type is passed to do_listfiles. */ + +struct listfiles_info +{ + int *numfilesp; + int *files_sizep; + const char ***filesp; + int len; + const char *pathname; +}; + +/* This is a helper function for gdb_listfiles that is used via + map_partial_symbol_filenames. */ + +static void +do_listfiles (const char *filename, const char *fullname, void *data) +{ + struct listfiles_info *info = data; + + if (*info->numfilesp == *info->files_sizep) + { + *info->files_sizep *= 2; + *info->filesp = xrealloc (*info->filesp, + *info->files_sizep * sizeof (char *)); + } + + if (filename) + { + if (!info->len || !strncmp (info->pathname, filename, info->len) + || !strcmp (filename, lbasename (filename))) + { + (*info->filesp)[(*info->numfilesp)++] = lbasename (filename); + } + } +} + /* This implements the tcl command "gdb_listfiles" * This lists all the files in the current executible. @@ -1134,6 +1170,7 @@ const char **files; int files_size; int i, numfiles = 0, len = 0; + struct listfiles_info info; files_size = 1000; files = (const char **) xmalloc (sizeof (char *) * files_size); @@ -1146,22 +1183,12 @@ else if (objc == 2) pathname = Tcl_GetStringFromObj (objv[1], &len); - ALL_PSYMTABS (objfile, psymtab) - { - if (numfiles == files_size) - { - files_size = files_size * 2; - files = (const char **) xrealloc (files, sizeof (char *) * files_size); - } - if (psymtab->filename) - { - if (!len || !strncmp (pathname, psymtab->filename, len) - || !strcmp (psymtab->filename, lbasename (psymtab->filename))) - { - files[numfiles++] = lbasename (psymtab->filename); - } - } - } + info.numfilesp = &numfiles; + info.files_sizep = &files_size; + info.filesp = &files; + info.len = len; + info.pathname = pathname; + map_partial_symbol_filenames (do_listfiles, &info); ALL_SYMTABS (objfile, symtab) {