DescriptionSubzero: Deal with substitutions in the primitive remangler.
https://refspecs.linuxbase.org/cxxabi-1.75.html#mangling-compression
describes the mechanism for compressing mangled strings by using substitutions of the form S[0-9A-Z]*_ to represent repeated components.
When the prefix is handled as wrapping inside a namespace, the base-36 substitution numbers all have to be incremented.
This is implemented in a very simple way by scanning the string only for instances of the substitution pattern.
Unfortunately, false matches are possible because the S[0-9A-Z]*_ pattern can be a substring of the type name, or can span other components of the mangled name. Getting this completely right would essentially require a full demangling parser - see the ~4000 lines of code in cxa_demangle.cpp and ItaniumMangle.cpp.
Since this is just for testing, any false matches will likely cause a linking error and the test can be rewritten to avoid false matches.
BUG= none
R=jvoung@chromium.org
Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=217dc08
Patch Set 1 #Patch Set 2 : Test that non-C++ symbols don't have substitutions updated #
Total comments: 8
Patch Set 3 : Use "C" locale for isupper(). Remove Valid variable. Clarify S_ ==> S0_. #
Total comments: 1
Messages
Total messages: 6 (0 generated)
|