This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

[PING] [C++ PATCH] demangler fix (take 2)


Gary Benson wrote:
> Hi all,
> 
> This is a resubmission of my previous demangler fix [1] rewritten
> to avoid using hashtables and other libiberty features.
> 
> From the above referenced email:
> 
> d_print_comp maintains a certain amount of scope across calls (namely
> a stack of templates) which is used when evaluating references in
> template argument lists.  If such a reference is later used from a
> subtitution then the scope in force at the time of the substitution is
> used.  This appears to be wrong (I say appears because I couldn't find
> anything in the API [2] to clarify this).
> 
> The attached patch causes the demangler to capture the scope the first
> time such a reference is traversed, and to use that captured scope on
> subsequent traversals.  This fixes GDB PR 14963 [3] whereby a
> reference is resolved against the wrong template, causing an infinite
> loop and eventual stack overflow and segmentation fault.
> 
> I've added the result to the demangler test suite, but I know of no
> way to check the validity of the demangled symbol other than by
> inspection (and I am no expert here!)  If anybody knows a way to
> check this then please let me know!  Otherwise, I hope this
> not-really-checked demangled version is acceptable.
> 
> Thanks,
> Gary
> 
> [1] http://gcc.gnu.org/ml/gcc-patches/2013-09/msg00215.html
> [2] http://mentorembedded.github.io/cxx-abi/abi.html#mangling
> [3] http://sourceware.org/bugzilla/show_bug.cgi?id=14963
> 
> -- 
> http://gbenson.net/

Attachment: 14963-2.patch
Description: Text document


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