Date: Mon, 21 Jan 2013 16:12:00 +0000 From: David Chisnall <theraven@FreeBSD.org> To: Konstantin Belousov <kostikbel@gmail.com> Cc: "toolchain@freebsd.org" <toolchain@FreeBSD.org>, Hongli Lai <hongli@phusion.nl>, Pedro Giffuni <pfg@FreeBSD.org> Subject: Re: standards/175453: Catching C++ std::bad_cast doesn't work in FreeBSD 9.1 Message-ID: <398F1CB4-D4B0-4C21-BA05-59DDE77C5DA6@FreeBSD.org> In-Reply-To: <20130121044912.GE2522@kib.kiev.ua> References: <201301201652.r0KGq0d1042817@red.freebsd.org> <20130121014745.GD2522@kib.kiev.ua> <1358741301.62974.YahooMailNeo@web162102.mail.bf1.yahoo.com> <20130121044912.GE2522@kib.kiev.ua>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --] On 21 Jan 2013, at 04:49, Konstantin Belousov wrote: > Yes, quite possible. AFAIR, the 'catch' code compares the exception classes > by the shared object ownership. It might get confused due to filter providing > some symbols. > > But I did not investigated the cause for real. The issue appears to be that the libstdc++ exports a few functions[1] that libsupc++ exports, but with different symbol versions. Unfortunately, these are things that set handlers that are then called from libsupc++ / libcxxrt when, for example, an exception specification violation is encountered. I'm not sure what the solution is here. Is there some version-script-foo that we can do to say 'filter this symbol with this version as if it were this one with this version'? We ideally want to keep them with the current version in libcxxrt / libsupc++, but not introduce linker errors. David [1] std::set_new_handler(), std::set_terminate(), std::set_unexpected() [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.18 (Darwin) iQIcBAEBAgAGBQJQ/WjRAAoJEKx65DEEsqId6HYP/2e/PV0Ht/amvqFTJOEafsdm JHk+Uqmr0BMnspbjVXTaN0U6juEcRoDSN5EEG1St7sJ7TVn+lG9/ZqpC7MOb23/P xR7AMobZFpT19s77z68e4T3AaTkcHMuNg/85dj7QdNbQDa4QnB1o2uQyUb4LV19l QmVvKE26QTVt1BFdf04ChIovRCy/3/u+WkcN0rVKpUfcUGXic+Zsmc0FvHUDB+IT kgPMohFBXjqH2gBWJR41oiJcgedEzrCvWa4uzHXkzE/tybrUbtMnjW3ztfp1xbSp Xi2e/eJ1c/RtZhtDssJB1iX9tD0T/uda5eedtLKIucaOHP5qYcIzNu2W9xre3qnB VjQkG//ZcHy5PlUpLiY+SkiMx39U2CK57JzjCfBngcnfxoB4Suhnf1l6Nsnetyn6 VvgSx9WPowmuaIeiQvXDJo+sLj5OQabIo2gCQwxPTbU06YWPegrydMks/PwPHQXt AWiP9pkMU/HisK5YNeDOCh8rAWbULyCphuj7+aLG1ps/vs2hb15Ln3VJkLFSZdjT yjFrQztRQAmKvLhnaARc7ZFmFxrerRtaLtL5VGgfD18rboLyJfL1yCPFrjbDEJhB 94M22FFcmQQ1gtjxhh+qfiKPSCQupoagy/1ifu8hDvoU17Us40R0MM3nCaZw1QvM z9Keg+zxLcFwcaMFE7gn =BDgG -----END PGP SIGNATURE-----home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?398F1CB4-D4B0-4C21-BA05-59DDE77C5DA6>
