https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #21 from Jonathan Wakely ---
Author: redi
Date: Tue Apr 10 14:36:09 2018
New Revision: 259281
URL: https://gcc.gnu.org/viewcvs?rev=259281&root=gcc&view=rev
Log:
PR libstdc++/85222 allow catching iostream errors as gcc4-compatible
ios
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
Richard Biener changed:
What|Removed |Added
Priority|P3 |P2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
Jonathan Wakely changed:
What|Removed |Added
Keywords||patch
--- Comment #20 from Jonathan Wa
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
Jonathan Wakely changed:
What|Removed |Added
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #19 from Richard Biener ---
Luckily both failure classes are immutable (via access limitations) so the
following issue with the __dual_ios_failure idea doesn't exist:
catch (old-ABI &e)
{
modify e in-place
throw;
}
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #18 from rguenther at suse dot de ---
On Fri, 6 Apr 2018, redi at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
>
> --- Comment #15 from Jonathan Wakely ---
> (In reply to Richard Biener from comment #
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #17 from rguenther at suse dot de ---
On Fri, 6 Apr 2018, redi at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
>
> --- Comment #16 from Jonathan Wakely ---
> (In reply to Jakub Jelinek from comment #1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #16 from Jonathan Wakely ---
(In reply to Jakub Jelinek from comment #14)
> For the in-place transformation in libsupc++ if something catches the old
> failure and a new failure is thrown, is it possible? The other way around,
> if w
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #15 from Jonathan Wakely ---
(In reply to Richard Biener from comment #13)
> I'm probably going to locally patch it to be consistent with the default ABI
> choice - that at least keeps programs working that do not explicitely choose
>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
Jakub Jelinek changed:
What|Removed |Added
CC||jakub at gcc dot gnu.org
--- Comment #14
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #13 from Richard Biener ---
Just to mention the testcase fails in the same way if you build and run it with
GCC 7 and libstdc++ from GCC 7 when that was configured with the gcc-4
compatible ABI by default. Just in case that wasn't ob
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #12 from rguenther at suse dot de ---
On Thu, 5 Apr 2018, rguenther at suse dot de wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
>
> --- Comment #11 from rguenther at suse dot de ---
> On Thu, 5 Apr 2018, redi at gcc
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #11 from rguenther at suse dot de ---
On Thu, 5 Apr 2018, redi at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
>
> --- Comment #10 from Jonathan Wakely ---
> Seems simpler to just define:
>
> struct
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #10 from Jonathan Wakely ---
Seems simpler to just define:
struct __dual_ios_failure {
__dual_ios_failure(std::string s, error_code e) : new_(s, e), old_(s) { }
ios::failure[abi:cxx11] new_;
ios::failure old_;
};
and make __th
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #9 from Richard Biener ---
(In reply to Jonathan Wakely from comment #8)
> (In reply to rguent...@suse.de from comment #7)
> > > It's not required to fix the simple case of a legacy binary using a new
> > > libstdc++.so but it breaks
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #8 from Jonathan Wakely ---
(In reply to rguent...@suse.de from comment #7)
> > It's not required to fix the simple case of a legacy binary using a new
> > libstdc++.so but it breaks other cases.
>
> None that are not broken right no
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #7 from rguenther at suse dot de ---
On Thu, 5 Apr 2018, redi at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
>
> --- Comment #6 from Jonathan Wakely ---
> (In reply to rguent...@suse.de from comment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #6 from Jonathan Wakely ---
(In reply to rguent...@suse.de from comment #5)
> On Thu, 5 Apr 2018, redi at gcc dot gnu.org wrote:
>
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
> >
> > --- Comment #4 from Jonathan Wakely -
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #5 from rguenther at suse dot de ---
On Thu, 5 Apr 2018, redi at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
>
> --- Comment #4 from Jonathan Wakely ---
> (In reply to Richard Biener from comment #3)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #4 from Jonathan Wakely ---
(In reply to Richard Biener from comment #3)
> Do you know of any other exception type affected by the c++11 vs. old ABI
> issue or does the entire I/O hierarchy only ever throw exactly
> ios_base::failure?
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #3 from Richard Biener ---
Do you know of any other exception type affected by the c++11 vs. old ABI issue
or does the entire I/O hierarchy only ever throw exactly ios_base::failure?
So a workaround would be to marshal these somehow
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #2 from Richard Biener ---
(In reply to Jonathan Wakely from comment #1)
> (In reply to Richard Biener from comment #0)
> > A workaround is to use a libstdc++ built with --disable-libstdcxx-dual-abi
>
> Or to catch std::exception&
T
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
Richard Biener changed:
What|Removed |Added
Known to work||6.4.0
Target Milestone|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #1 from Jonathan Wakely ---
(In reply to Richard Biener from comment #0)
> A workaround is to use a libstdc++ built with --disable-libstdcxx-dual-abi
Or to catch std::exception&
24 matches
Mail list logo