title: C++ ABI standards compliance w/ arbitrary name mangling
body: <p>Okay, the question title was kind of a hook. I already get that there is no C++ standard ABI. That said, I've not deceived you eager upvote-gatherers. I'm wondering if there is ANY limitation to the C++ ABI. It seems common, for example, for at least the name of a class to be mangled <em>somewhere</em> in the ABI name.</p>
  
  <p><strong>A more explicit question</strong></p>
  
  <p>Let's say I have a collision-free hash function over all strings. Let's then say GCC added one more step to its name mangling: appending the hash of the current mangled name to an underscore. This would break almost everything under the sun, but would GCC still be as C++ standards conforming as it was before?</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>Okay, apparently the 'explicit question' bit was kind of a poorly chosen subsection name. I really wanted to know more about any common ABI standards that people follow. This was informed by the existence of binaries I have being compiled with Mingw32 linking successfully with binaries I have being compiled with MSVC.</p>