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’,
foo::bar::baz is the name of the symbol, ‘t’ is the
symbol descriptor, and ‘5=*6’ is the type information.