From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18664 invoked by alias); 3 Mar 2003 03:54:16 -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 18656 invoked from network); 3 Mar 2003 03:54:15 -0000 Received: from unknown (HELO crack.them.org) (65.125.64.184) by 172.16.49.205 with SMTP; 3 Mar 2003 03:54:15 -0000 Received: from nevyn.them.org ([66.93.61.169] ident=mail) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 18piv5-0006PL-00; Sun, 02 Mar 2003 23:55:23 -0600 Received: from drow by nevyn.them.org with local (Exim 3.36 #1 (Debian)) id 18ph1l-0001Xe-00; Sun, 02 Mar 2003 22:54:09 -0500 Date: Mon, 03 Mar 2003 03:54:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com Cc: Kris Warkentin Subject: RFA: tweak minsyms check for GNU v3 symbols Message-ID: <20030303035409.GA5850@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.redhat.com, Kris Warkentin Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.1i X-SW-Source: 2003-03/txt/msg00044.txt.bz2 This is based on a patch that Kris Warkentin sent out last October, that's been sitting in my inbox for a while. It's a little more efficient but the idea is the same. Right now, we consider any _Z symbol to imply GNU v3; but what we really want is for any _Z symbol _which demangled successfully_ to imply GNU v3. _Zero is the QNX example of a false positive for the current check. It's still not perfect, but it's much better. Tested in combination with the "set cp-abi" patch, to make sure it behaved properly; sure enough: - we still get GNU v3 for a v3 application - we no longer get GNU v3 for a v2 application containing _Zero (before the patch, we did). Is this OK? -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer 2003-03-02 Daniel Jacobowitz * minsyms.c (install_minimal_symbols): Only switch to gnu-v3 mode if the linkage name demangled successfully. Index: minsyms.c =================================================================== RCS file: /cvs/src/src/gdb/minsyms.c,v retrieving revision 1.26 diff -u -p -r1.26 minsyms.c --- minsyms.c 25 Feb 2003 21:36:18 -0000 1.26 +++ minsyms.c 2 Mar 2003 18:38:28 -0000 @@ -918,8 +918,14 @@ install_minimal_symbols (struct objfile for (i = 0; i < mcount; i++) { - const char *name = DEPRECATED_SYMBOL_NAME (&objfile->msymbols[i]); - if (name[0] == '_' && name[1] == 'Z') + /* If a symbol's name starts with _Z and was successfully + demangled, then we can assume we've found a GNU v3 symbol. + For now we set the C++ ABI globally; if the user is + mixing ABIs then the user will need to "set cp-abi" + manually. */ + const char *name = SYMBOL_LINKAGE_NAME (&objfile->msymbols[i]); + if (name[0] == '_' && name[1] == 'Z' + && SYMBOL_DEMANGLED_NAME (&objfile->msymbols[i]) != NULL) { switch_to_cp_abi ("gnu-v3"); break;