From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1474 invoked by alias); 20 Feb 2006 17:32:46 -0000 Received: (qmail 1466 invoked by uid 22791); 20 Feb 2006 17:32:46 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Mon, 20 Feb 2006 17:32:44 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1FBEtu-0005Cr-Ga for gdb-patches@sources.redhat.com; Mon, 20 Feb 2006 12:32:42 -0500 Date: Mon, 20 Feb 2006 17:32:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com Subject: Re: [rfa] Skip "special" symbols when reading minimal symbols Message-ID: <20060220173242.GD19356@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.redhat.com References: <20050309173557.GA17136@nevyn.them.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050309173557.GA17136@nevyn.them.org> User-Agent: Mutt/1.5.8i X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-02/txt/msg00371.txt.bz2 On Wed, Mar 09, 2005 at 12:35:57PM -0500, Daniel Jacobowitz wrote: > Nick recently introduced a hook in bfd to allow a target to mark a symbol as > "special". What exactly "special" means isn't well defined, except that > they are not normal symbols, and objdump and nm will decline to display them > unless an additional command line option is given. So, I would like to make > that the default behavior in GDB also. > > GDB could make use of special symbols in a target-specific fashion - in this > case, to build up a PC -> ISA mapping. The most logical way to do this > would be to call a gdbarch hook for special symbols (or for all symbols?). > But we don't need that yet, so I haven't added the hook. > > The advantage of skipping the mapping symbols is that they generally occur > at the same addresses as other non-mapping symbols. This causes GDB to show > "$a" in disassembly instead of "main" in some cases (depending on the > vagaries of hashing). Whatever target-specific meaning a special symbol may > have, the BFD hook indicates that it isn't a standard symol, so I think it's > appropriate to skip it in GDB. > > Is this patch OK? Fixes a number of testsuite failures on arm-linux and > arm-netbsd. I've committed this patch from last year. As described above, I may be back to make GDB pass the special symbols to an architecture hook to handle things like mapping ARM vs Thumb code, if that becomes necessary. For now, this is enough to make the ARM debugger much more useful. -- Daniel Jacobowitz CodeSourcery 2006-02-20 Daniel Jacobowitz * elfread.c (elf_symtab_read): Skip symbols which BFD considers special. Index: elfread.c =================================================================== RCS file: /cvs/src/src/gdb/elfread.c,v retrieving revision 1.54 diff -u -p -r1.54 elfread.c --- elfread.c 27 Dec 2005 04:09:40 -0000 1.54 +++ elfread.c 20 Feb 2006 17:30:40 -0000 @@ -1,7 +1,7 @@ /* Read ELF (Executable and Linking Format) object files for GDB. Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Written by Fred Fish at Cygnus Support. @@ -174,6 +174,12 @@ elf_symtab_read (struct objfile *objfile continue; } + /* Skip "special" symbols, e.g. ARM mapping symbols. These are + symbols which do not correspond to objects in the symbol table, + but have some other target-specific meaning. */ + if (bfd_is_target_special_symbol (objfile->obfd, sym)) + continue; + offset = ANOFFSET (objfile->section_offsets, sym->section->index); if (dynamic && sym->section == &bfd_und_section