This is the mail archive of the gdb-prs@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

pending/1129: RFA: tweak minsyms check for GNU v3 symbols


>Number:         1129
>Category:       pending
>Synopsis:       RFA: tweak minsyms check for GNU v3 symbols
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   unknown
>Arrival-Date:   Fri Mar 07 17:38:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
 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  <drow at mvista dot com>
 
 	* 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;
 
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]