On a system in which weak symbols are supported (and, hence,
SUPPORTS_WEAK is defined), but when -fno-weak is being used, we still
define __GXX_WEAK__ to 1, which results in libsupc++ using
pointer-comparison to determine typeinfo identity, rather than
string-comparison. Fixed with the attached patch. I also added
documentation for a few predefined preprocessor symbols which were not
otherwise documented.
Tested on x86_64-unknown-linux-gnu, applied on the mainline.
(Personally, I'd be happy to remove -fno-weak entirely, and just say
that wehther or not you get weak/COMDAT symbols depends purely on
whether or not your system supports that. But, that's another
debate...)