From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2138 invoked by alias); 9 Mar 2005 17:36:09 -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 2058 invoked from network); 9 Mar 2005 17:36:02 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sourceware.org with SMTP; 9 Mar 2005 17:36:02 -0000 Received: from drow by nevyn.them.org with local (Exim 4.44 #1 (Debian)) id 1D956D-0004Xl-Bl; Wed, 09 Mar 2005 12:35:57 -0500 Date: Wed, 09 Mar 2005 17:36:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com, Elena Zannoni Subject: [rfa] Skip "special" symbols when reading minimal symbols Message-ID: <20050309173557.GA17136@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.redhat.com, Elena Zannoni Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.6+20040907i X-SW-Source: 2005-03/txt/msg00146.txt.bz2 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. -- Daniel Jacobowitz CodeSourcery, LLC 2005-03-09 Daniel Jacobowitz * elfread.c (elf_symtab_read): Skip symbols which BFD considers special. Index: gdb/elfread.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/elfread.c,v retrieving revision 1.50 diff -u -p -r1.50 elfread.c --- gdb/elfread.c 21 Feb 2005 11:00:44 -0000 1.50 +++ gdb/elfread.c 9 Mar 2005 17:24:30 -0000 @@ -203,6 +203,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