This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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]

Re: C++ demangling of 64-bit symbols on ppc64


Ian Lance Taylor wrote:

Maynard Johnson <maynardj@us.ibm.com> writes:



6513 93.7392 test ._Z4doitPc



So the problem is the leading dot (which was probably clear to you but not to me). Historically the demangler has not handled leading dots. Instead, historically, the caller has removed them when appropriate.

The linker, rather than do anything clever, simply removes all leading
dots.  See the demangle() function in ld/ldmisc.c.

 /* This is a hack for better error reporting on XCOFF, PowerPC64-ELF
    or the MS PE format.  These formats have a number of leading '.'s
    on at least some symbols, so we remove all dots to avoid
    confusing the demangler.  */
 p = name;
 while (*p == '.')
   ++p;

It seems to me that opreport should do the same.

Or, we could change the interface to the demangler. I don't think it
would be appropriate for the demangler to unconditionally remove


Why? Are there some circumstances where the correct answer is returned, even if the symbol has leading dots?

leading dots, but I think it would be reasonable to add a DMGL_XX flag
for it if that seems like a better approach.


If default removal of leading dots is not possible or practical, then I'd agree that something like DMGL_HANDLE_LEADING_DOTS would be an OK approach -- in order to centralize the knowledge of what should be done with leading dots. Of course, no matter what the decision, adding a hack (similar to above) to opreport will be necessary for now.

Thanks.
-Maynard

Ian





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