An implementation of C++ name mangling for the Itanium ABI