The BUPC_STATIC_SHARED event in BUPC 2.3.11+ includes a mangled type string which represents the type of each statically allocated shared object. The grammar used is shown below. ::= ::= ::= ::= ::= ::= ::= ::= # See Compression below ::= ::= P # pointer-to ::= R # reference-to ::= C # complex pair (C 2000) ::= G # imaginary (C 2000) ::= U # vendor extended type qualifier # restrict (C99), volatile, const, shared ::= [r] [V] [K] ::= [S] [R] _ # strict or relaxed and blocksize in elements ::= v # void ::= w # wchar_t ::= b # bool ::= c # char ::= a # signed char ::= h # unsigned char ::= s # short ::= t # unsigned short ::= i # int ::= j # unsigned int ::= l # long ::= m # unsigned long ::= x # long long, __int64 ::= y # unsigned long long, __int64 ::= n # __int128 ::= o # unsigned __int128 ::= f # float ::= d # double ::= e # long double, __float80 ::= g # __float128 ::= z # ellipsis ::= u # vendor extended type ::= A [H] _ ::= A [] _ # H indicates that the dimension number should be multiplied by THREADS # Alternately we could use the dimension expresion syntax ::= ::= ::= ::= st ::= ::= sr # dependent name ::= sr # dependent template-id ::= ::= L E # integer literal ::= L E # floating literal ::= L E # external name For more general information on type mangling, see the g++ version 3 name mangling scheme (This is documented as part of the Itanium C++ ABI document here: http://www.codesourcery.com/cxx-abi/abi.html)