Skip site navigation (1)Skip section navigation (2)
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>