MFC: bring in GCC 2.95.3 + official sjlj exception fixes.
Approved by: jkh
The the setjump/longjump exception handling fixes are from GCC 2.95.3.test3
and were removed from GCC 2.95.3.test4 and the subsequent release due
to bootstrap problems on HP-UX. However, they were very well tested and
fixed major problems on all other platforms. Including all the all the BSD's.
OpenBSD and FreeBSD 5-current both use these official sjlj patches.
W/o this upgrade the following program segmentation faults if compiled
with -O2 (but not -Os or -O or -O0) on 4.2FreeBSD.
There are some large C++ libraries where segfaults also occur, even at -O.
#include <stdio.h>
class A {
public:
A() { printf("c'tor A\n"); } ~A(){ printf("d'tor A\n"); }
};
class foo : public A {
public:
foo() { printf("C'tor foo\n"); throw 8; } ~foo() { printf("D'tor foo\n"); }
};
int main(){
try { foo fii; } catch (int){ printf("catch ...\n"); } return 0;
}