From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16343 invoked by alias); 8 Jan 2002 20:36:14 -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 16189 invoked from network); 8 Jan 2002 20:36:09 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sources.redhat.com with SMTP; 8 Jan 2002 20:36:09 -0000 Received: from reddwarf.cygnus.com (reddwarf.cygnus.com [205.180.231.12]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id MAA27978; Tue, 8 Jan 2002 12:35:58 -0800 (PST) Received: (from msnyder@localhost) by reddwarf.cygnus.com (8.11.2/8.11.2) id g08KUsM04253; Tue, 8 Jan 2002 12:30:54 -0800 Date: Tue, 08 Jan 2002 12:36:00 -0000 From: Michael Snyder Message-Id: <200201082030.g08KUsM04253@reddwarf.cygnus.com> To: gdb-patches@sources.redhat.com Subject: [RFA] Resubmit: get shared libs after attach (linux) Cc: dmj+@andrew.cmu.edu, kettenis@science.uva.nl, kevinb@redhat.com X-SW-Source: 2002-01/txt/msg00141.txt.bz2 Taking everybody's feedback into account: 1) I now only use the child_pid_to_exec_file method in linux-proc.c. I preserved the file linux-proc.c because this method still depends on /proc, and because I will plan to put the linux-gcore.c code in there too. 2) I moved the define to config/nm-linux.h 3) So now I must add linux-proc.o to all versions of linux.mh 2002-01-07 Michael Snyder * linux-proc.c: New file. Implement child_pid_to_exec_file, so that attaching to a pid will automatically read the process's symbol file and shlibs. * config/nm-linux.h: Define CHILD_PID_TO_EXEC_FILE. * config/alpha/alpha-linux.mh: Add linux-proc.o to NATDEPFILES. * config/arm/linux.mh: Ditto. * config/i386/linux.mh: Ditto. * config/i386/x86-64linux.mh: Ditto. * config/ia64/linux.mh: Ditto. * config/m68k/linux.mh: Ditto. * config/mips/linux.mh: Ditto. * config/powerpc/linux.mh: Ditto. * config/sparc/linux.mh: Ditto. Index: linux-proc.c =================================================================== RCS file: linux-proc.c diff -N linux-proc.c *** /dev/null Tue May 5 13:32:27 1998 --- linux-proc.c Tue Jan 8 12:24:25 2002 *************** *** 0 **** --- 1,31 ---- + /* Generate a core file for the inferior process -- Linux version. + Copyright 2001 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + #include "defs.h" + #include /* for MAXPATHLEN */ + + char * + child_pid_to_exec_file (int pid) + { + static char fname[MAXPATHLEN]; + + sprintf (fname, "/proc/%d/exe", pid); + return fname; + } Index: config/nm-linux.h =================================================================== RCS file: /cvs/src/src/gdb/config/nm-linux.h,v retrieving revision 1.10 diff -c -3 -p -r1.10 nm-linux.h *** nm-linux.h 2001/10/14 20:42:07 1.10 --- nm-linux.h 2002/01/08 20:24:25 *************** extern void lin_thread_get_thread_signal *** 67,69 **** --- 67,74 ---- #define GDB_GREGSET_T elf_gregset_t #define GDB_FPREGSET_T elf_fpregset_t + + /* Override child_pid_to_exec_file in 'inftarg.c'. */ + #define CHILD_PID_TO_EXEC_FILE + + Index: config/alpha/alpha-linux.mh =================================================================== RCS file: /cvs/src/src/gdb/config/alpha/alpha-linux.mh,v retrieving revision 1.6 diff -c -3 -p -r1.6 alpha-linux.mh *** alpha-linux.mh 2001/03/20 21:40:47 1.6 --- alpha-linux.mh 2002/01/08 20:24:25 *************** *** 2,8 **** XDEPFILES= XM_FILE= xm-alphalinux.h NAT_FILE= nm-linux.h ! NATDEPFILES= infptrace.o inftarg.o corelow.o alpha-nat.o \ fork-child.o proc-service.o thread-db.o lin-lwp.o LOADLIBES = -ldl -rdynamic --- 2,8 ---- XDEPFILES= XM_FILE= xm-alphalinux.h NAT_FILE= nm-linux.h ! NATDEPFILES= infptrace.o inftarg.o corelow.o alpha-nat.o linux-proc.o \ fork-child.o proc-service.o thread-db.o lin-lwp.o LOADLIBES = -ldl -rdynamic Index: config/arm/linux.mh =================================================================== RCS file: /cvs/src/src/gdb/config/arm/linux.mh,v retrieving revision 1.7 diff -c -3 -p -r1.7 linux.mh *** linux.mh 2001/02/06 19:59:06 1.7 --- linux.mh 2002/01/08 20:24:25 *************** XDEPFILES= *** 5,11 **** NAT_FILE= nm-linux.h NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ ! core-regset.o arm-linux-nat.o \ proc-service.o thread-db.o lin-lwp.o LOADLIBES= -ldl -rdynamic --- 5,11 ---- NAT_FILE= nm-linux.h NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ ! core-regset.o arm-linux-nat.o linux-proc.o \ proc-service.o thread-db.o lin-lwp.o LOADLIBES= -ldl -rdynamic Index: config/i386/linux.mh =================================================================== RCS file: /cvs/src/src/gdb/config/i386/linux.mh,v retrieving revision 1.8 diff -c -3 -p -r1.8 linux.mh *** linux.mh 2001/07/31 19:22:57 1.8 --- linux.mh 2002/01/08 20:24:25 *************** XM_FILE= xm-i386.h *** 4,12 **** XDEPFILES= NAT_FILE= nm-linux.h ! NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ core-aout.o i386-nat.o i386-linux-nat.o i387-nat.o \ ! proc-service.o thread-db.o lin-lwp.o # The dynamically loaded libthread_db needs access to symbols in the # gdb executable. --- 4,13 ---- XDEPFILES= NAT_FILE= nm-linux.h ! NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o linux-proc.o \ core-aout.o i386-nat.o i386-linux-nat.o i387-nat.o \ ! proc-service.o thread-db.o lin-lwp.o linux-proc.o \ ! gcore.o linux-gcore.o # The dynamically loaded libthread_db needs access to symbols in the # gdb executable. Index: config/i386/x86-64linux.mh =================================================================== RCS file: /cvs/src/src/gdb/config/i386/x86-64linux.mh,v retrieving revision 1.1 diff -c -3 -p -r1.1 x86-64linux.mh *** x86-64linux.mh 2001/09/21 12:19:15 1.1 --- x86-64linux.mh 2002/01/08 20:24:25 *************** XDEPFILES= *** 6,11 **** NAT_FILE= nm-x86-64.h NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ core-aout.o i386-nat.o x86-64-nat.o x86-64-linux-nat.o \ ! i387-nat.o proc-service.o thread-db.o lin-lwp.o LOADLIBES = -ldl -rdynamic --- 6,11 ---- NAT_FILE= nm-x86-64.h NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ core-aout.o i386-nat.o x86-64-nat.o x86-64-linux-nat.o \ ! i387-nat.o proc-service.o thread-db.o lin-lwp.o linux-proc.o LOADLIBES = -ldl -rdynamic Index: config/ia64/linux.mh =================================================================== RCS file: /cvs/src/src/gdb/config/ia64/linux.mh,v retrieving revision 1.9 diff -c -3 -p -r1.9 linux.mh *** linux.mh 2001/03/31 23:07:10 1.9 --- linux.mh 2002/01/08 20:24:25 *************** XDEPFILES= *** 5,11 **** NAT_FILE= nm-linux.h NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ ! core-aout.o core-regset.o ia64-linux-nat.o \ proc-service.o thread-db.o lin-lwp.o LOADLIBES = -ldl -rdynamic --- 5,11 ---- NAT_FILE= nm-linux.h NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ ! core-aout.o core-regset.o ia64-linux-nat.o linux-proc.o \ proc-service.o thread-db.o lin-lwp.o LOADLIBES = -ldl -rdynamic Index: config/m68k/linux.mh =================================================================== RCS file: /cvs/src/src/gdb/config/m68k/linux.mh,v retrieving revision 1.6 diff -c -3 -p -r1.6 linux.mh *** linux.mh 2001/10/14 20:42:07 1.6 --- linux.mh 2002/01/08 20:24:25 *************** XDEPFILES= *** 5,12 **** NAT_FILE= nm-linux.h NATDEPFILES= infptrace.o inftarg.o fork-child.o \ ! corelow.o core-aout.o m68klinux-nat.o \ ! proc-service.o thread-db.o lin-lwp.o # The dynamically loaded libthread_db needs access to symbols in the # gdb executable. --- 5,12 ---- NAT_FILE= nm-linux.h NATDEPFILES= infptrace.o inftarg.o fork-child.o \ ! corelow.o core-aout.o m68klinux-nat.o linux-proc.o \ ! proc-service.o thread-db.o lin-lwp.o # The dynamically loaded libthread_db needs access to symbols in the # gdb executable. Index: config/mips/linux.mh =================================================================== RCS file: /cvs/src/src/gdb/config/mips/linux.mh,v retrieving revision 1.1 diff -c -3 -p -r1.1 linux.mh *** linux.mh 2001/07/10 20:41:54 1.1 --- linux.mh 2002/01/08 20:24:25 *************** XDEPFILES= *** 3,8 **** XM_FILE= xm-linux.h NAT_FILE= nm-linux.h NATDEPFILES= infptrace.o inftarg.o fork-child.o mips-linux-nat.o \ ! thread-db.o lin-lwp.o proc-service.o LOADLIBES = -ldl -rdynamic --- 3,8 ---- XM_FILE= xm-linux.h NAT_FILE= nm-linux.h NATDEPFILES= infptrace.o inftarg.o fork-child.o mips-linux-nat.o \ ! thread-db.o lin-lwp.o proc-service.o linux-proc.o LOADLIBES = -ldl -rdynamic Index: config/powerpc/linux.mh =================================================================== RCS file: /cvs/src/src/gdb/config/powerpc/linux.mh,v retrieving revision 1.7 diff -c -3 -p -r1.7 linux.mh *** linux.mh 2001/12/20 23:31:27 1.7 --- linux.mh 2002/01/08 20:24:25 *************** XDEPFILES= *** 5,11 **** XM_CLIBS= NAT_FILE= nm-linux.h ! NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ core-regset.o ppc-linux-nat.o proc-service.o thread-db.o lin-lwp.o LOADLIBES = -ldl -rdynamic --- 5,11 ---- XM_CLIBS= NAT_FILE= nm-linux.h ! NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o linux-proc.o \ core-regset.o ppc-linux-nat.o proc-service.o thread-db.o lin-lwp.o LOADLIBES = -ldl -rdynamic Index: config/sparc/linux.mh =================================================================== RCS file: /cvs/src/src/gdb/config/sparc/linux.mh,v retrieving revision 1.4 diff -c -3 -p -r1.4 linux.mh *** linux.mh 2001/11/17 18:38:29 1.4 --- linux.mh 2002/01/08 20:24:25 *************** XDEPFILES= *** 5,11 **** NAT_FILE= nm-linux.h NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o sparc-nat.o \ ! proc-service.o thread-db.o lin-lwp.o sparc-linux-nat.o # The dynamically loaded libthread_db needs access to symbols in the # gdb executable. --- 5,11 ---- NAT_FILE= nm-linux.h NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o sparc-nat.o \ ! proc-service.o thread-db.o lin-lwp.o sparc-linux-nat.o linux-proc.o # The dynamically loaded libthread_db needs access to symbols in the # gdb executable.