On Fri, 6 Apr 2018, Jonathan Wakely wrote:

> On 6 April 2018 at 12:48, Jonathan Wakely wrote:
> > Currently --with-default-libstdcxx-abi doesn't alter the ABI of the
> > shared lib when the dual-abi is enabled, just whether the initial
> > value of the macro is 0 or 1. All the symbols in the library, and the
> > type of exception thrown, are the same for every dual-abi build of the
> > library.
> 
> I mean every dual-abi build for a given release, of course. Because
> the type of exception thrown changed between gcc 6 and gcc 7, so maybe
> my position that the option doesn't affect the ABI of the .so is
> untenable, given that it changed independent of that option :-\

All I can say is that for the SUSE distributions that use the old
ABI by default but still provide GCC 7+ as optional choice and thus
end up using the newest compiler runtime I'm taking the pragmatic
approach of making --with-default-libstdcxx-abi=gcc4-compatible
throw the old ABI ios_base::failure class via said patch.

Currently there's no way to get the old ABI thrown besides
disabling dual-ABI but that removes all the symbols that have
been present since those distributions offered GCC 5 so isn't
a good option.  Which means the ABI break between GCC 5/6 and GCC 7
has to be reverted here.

Of course I think the ABI break is even intolerable when the
new ABI is the default.  Ways to fix that have been discussed in
the PR but a fix is of course taking time to implement and verify.

Richard.

Reply via email to