This is the mail archive of the gdb-patches@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]

Re: [PATCH] New C++ abstraction patch


Michael Elizabeth Chastain <chastain@cygnus.com> writes:

> Hi Daniel,
> 
> > I plan on using [^0-9]D[1-3]Ev$
> 
> I am suspicious of the [^0-9] part.  I just made a class named "B1",
> and its destructor name is "_ZN2B1D2Ev".  Indeed, I can't figure out
> what problem the [^0-9] is trying to solve anyways.

Make sure it's not the beginning of a name accidently.
Of course, it's pointless, but I added it before I added the "ends in
Ev" rule.

I think the right thing is to do "^_Z.*[1-9][a-zA-Z_][a-zA-Z0-9_]+D[0-2]Ev$", since the class
name always comes right before the destructor.
This also makes sure we don't accidently get the classname, even if
it's D[0-2].

I generated this regex from staring at the demangler for a while.
:)


It's really (to break it down in case you see a part i've gotten wrong)
_Z.*<mangled classname regex><mangled destructor name regex>Ev$

1-9 because you can't have a class name of length 0.

I think i have a few valid identifier characters missing, i'll double
check it if you think this regex would work if i added them.

Otherwise, i'll look at cleaning up the ternary search tree stuff for
demangled names and submitting it.

Temporarily, of course, i'm more than happy to just take the speed hit
in the name of correctness, and getting v3 abi supported properly.


--Dan


> 
> (My usual setup: 2001-02-20 gcc, rhl7 native, tried both stabs and dwarf-2).
> 
> Michael


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