Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Jul 2000 20:06:34 +0700 (NSS)
From:      Max Khon <fjoe@iclub.nsu.ru>
To:        hackers@freebsd.org
Subject:   g++ 2.95 and -fsjlj-exceptions problems
Message-ID:  <Pine.BSF.4.21.0007121935170.70878-100000@iclub.nsu.ru>

next in thread | raw e-mail | index | archive | help
hi, there!

our g++ uses -fsjlj-exceptions by default for exceptions handling.
this mode has problems (see #258 in gcc GNATS).
this bug can be 100% reproduced when try-catch block is not in
constructor and with optimization turned off (Reactor_Exceptions_Test
from ACE 5.1.1).

the problem is that setjmp code is optimized in such way
that after `throw' execution continues in `try' block instead of
`catch' blocks.
exception handling using dwarf unwinding info does not have this problem
(Reactor_Exceptions_Test built on RELENG_3 with /usr/ports/lang/egcs
have no problems because g++295 built from ports uses crtstuff.c from
gcc and dwarf unwinding mechanisms)

-fno-sjlj-exceptions cannot be simply turned on with our system compiler
because our crtbegin.o/crtend.o do not initialize dwarf unwinding info.
what is the problem with `make world' bootstrapping when using
crtstuff.c instead our home-grown crt stubs?
seems that this is the only problem which prevents us from switching to
dwarf unwinding mechanism and have reliable correctly working C++ compiler
in both RELENG_4 and -CURRENT.

/fjoe



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0007121935170.70878-100000>