tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Incorrect demangling



On Tue, 24 Apr 2012, Rich Neswold wrote:
My "C++ Programming Reference, 2nd edition" (1994), section r.2.4 says:

"In addition, identifiers containing a double underscore (__) are reserved for use by C++ implementations and standard libraries and should be avoided by users."

That's in the C++ reference manual, so "users" should be understood to mean "users of the C++ language". The C++ reference manual should have no jurisdiction over users of languages other than C++.

Users of the C language should be able to find everything they need in the C reference manual and associated library reference manuals, plus the implementation-specific documentation (e.g. the compiler manual) if they rely on implementation-specific features of the language. Section 7.1.3 of the N1256 draft of the C2010 standard provides a list of rules for determining whether an identifier is reserved, and double underscore is featured only when it appears at the beginning of an identifier. The same clause also says "No other identifiers are reserved", so it seems pretty clear to me that identifiers that contain double underscore are not reserved in the C language (unless they also hit one of the other restrictions).

So it looks like you won't convince the GCC maintainers in changing the compiler. Plus, PCC and CLANG will probably give you similar problems.

It looks as though anything that performs demangling should have some way other than the symbol name of figuring out whether the symbol came from C++, so that it is not tripped up by valid C symbols that happen to mean something special when viewed as C++
symbols.

--apb (Alan Barrett)


Home | Main Index | Thread Index | Old Index