In C++, a symbol (such as a type name) can be defined within another type.
In stabs, this is sometimes represented by making the name of a symbol
which contains ::
. Such a pair of colons does not end the name
of the symbol, the way a single colon would (see String Field). I'm
not sure how consistently used or well thought out this mechanism is.
So that a pair of colons in this position always has this meaning,
:
cannot be used as a symbol descriptor.
For example, if the string for a stab is foo::bar::baz:t5=*6
,
then foo::bar::baz
is the name of the symbol, t
is the
symbol descriptor, and 5=*6
is the type information.