From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11933 invoked by alias); 26 Jun 2004 12:11:24 -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 11906 invoked from network); 26 Jun 2004 12:11:21 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sourceware.org with SMTP; 26 Jun 2004 12:11:21 -0000 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx1.redhat.com (8.12.10/8.12.10) with ESMTP id i5QCBKe1008504 for ; Sat, 26 Jun 2004 08:11:20 -0400 Received: from potter.sfbay.redhat.com (potter.sfbay.redhat.com [172.16.27.15]) by int-mx2.corp.redhat.com (8.11.6/8.11.6) with ESMTP id i5QCBJw06230 for ; Sat, 26 Jun 2004 08:11:20 -0400 Received: from cygbert.vinschen.de (vpn50-23.rdu.redhat.com [172.16.50.23]) by potter.sfbay.redhat.com (8.11.6/8.11.6) with ESMTP id i5QCBIP24279 for ; Sat, 26 Jun 2004 05:11:18 -0700 Received: by cygbert.vinschen.de (Postfix, from userid 500) id 9C8F0582E2; Sat, 26 Jun 2004 14:11:15 +0200 (CEST) Date: Sat, 26 Jun 2004 12:11:00 -0000 From: Corinna Vinschen To: gdb-patches@sources.redhat.com Subject: [RFA] win32-nat.c: Add to_pid_to_exec_file function Message-ID: <20040626121115.GB8039@cygbert.vinschen.de> Reply-To: gdb-patches@sources.redhat.com Mail-Followup-To: gdb-patches@sources.redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2i X-SW-Source: 2004-06/txt/msg00562.txt.bz2 Hi, the below patch adds a to_pid_to_exec_file function to win32-nat.c It allows to load the symbol table of a process automatically when attaching to a running process. So far, without this function, the symbol table has to be loaded manually (file command). In this step the new functionality only works for Cygwin processes. I'm planning to add the same functionality also for native Windows processes in a next step. This patch also requires another patch to infcmd.c (attach_command), which I'm going to submit separately to discuss it separately. It looks like a more generic problem to me and I'm not exactly sure if my patch is the best solution. This patch is the base for running testsuite/gdb.base/attach.exp nearly FAIL free (I'm locally down to just 1 FAIL), together with a few adjustments in attach.exp itself. I'll submit the changes to attach.exp also in a separate posting. Corinna * win32-nat.c (child_pid_to_exec_file): New function. (init_child_ops): Add child_pid_to_exec_file as to_pid_to_exec_file functionality. Index: win32-nat.c =================================================================== RCS file: /cvs/src/src/gdb/win32-nat.c,v retrieving revision 1.92 diff -u -p -r1.92 win32-nat.c --- win32-nat.c 25 Jun 2004 19:46:08 -0000 1.92 +++ win32-nat.c 26 Jun 2004 08:18:41 -0000 @@ -1656,6 +1656,36 @@ child_detach (char *args, int from_tty) unpush_target (&child_ops); } +char * +child_pid_to_exec_file (int pid) +{ + /* Try to find the process path using the Cygwin internal process list + pid isn't a valid pid, unfortunately. Use current_event.dwProcessId + instead. */ + /* TODO: Also find native Windows processes using CW_GETPINFO_FULL. */ + + static char path[MAX_PATH + 1]; + char *path_ptr = NULL; + int cpid; + struct external_pinfo *pinfo; + + cygwin_internal (CW_LOCK_PINFO, 1000); + for (cpid = 0; + (pinfo = (struct external_pinfo *) + cygwin_internal (CW_GETPINFO, cpid | CW_NEXTPID)); + cpid = pinfo->pid) + { + if (pinfo->dwProcessId == current_event.dwProcessId) /* Got it */ + { + cygwin_conv_to_full_posix_path (pinfo->progname, path); + path_ptr = path; + break; + } + } + cygwin_internal (CW_UNLOCK_PINFO); + return path_ptr; +} + /* Print status information about what we're accessing. */ static void @@ -2078,6 +2108,7 @@ init_child_ops (void) child_ops.to_has_registers = 1; child_ops.to_has_execution = 1; child_ops.to_magic = OPS_MAGIC; + child_ops.to_pid_to_exec_file = child_pid_to_exec_file; } void