Skip to content

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

License

Notifications You must be signed in to change notification settings

RyanGlScott/itanium-abi

 
 

Repository files navigation

This package implements the Itanium ABI standard for C++ name mangling and demangling.

Despite the name, this standard covers name mangling for g++ on all platforms that do not define their own ABI (including x86 and x86_64). The package includes a name demangler and re-mangler. It also includes a pretty printer to render C++ types as pseudo-declarations for easy inspection, as well as more structured traversals over an ADT.

The test suite is reasonable and compares the output of this package against that of the demangle tool included with binutils. It looks like everything that should pass does.

The implementation conforms to the specification detailed at codesourcery. It is built using boomerang to construct the parser and unparser from a single specification.

TODO

Most missing features are related to either templates or C++11. These will be implemented eventually.

  • Support for template names
  • Support for decltype
  • Support for lambdas
  • Support for scope disambiguators

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 100.0%