Date: Tue, 18 Jan 2000 01:20:23 -0500 (EST) From: "Alexander N. Kabaev" <kabaev@mail.ru> To: "David O'Brien" <obrien@FreeBSD.ORG> Cc: current@FreeBSD.ORG Subject: Re: C++ exceptions doesn't work in shared libraries Message-ID: <XFMail.000118012023.kabaev@mail.ru> In-Reply-To: <20000117195242.A1652@dragon.nuxi.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Without -fsjlj-exception flag under Linux program bails out with SIGABRT and dumps core - most likely because C++ runtime call terminate() somewhere. I do not think this has any relation to the problem I fixed but rather it has soething to do with faulty rtti exception type matching code. I believe this problem affects FreeBSD Alpha port - I probably can look into it, but lacking acces to any Alpha hardware this seems little problematic. I cannot be sure where exactly program dies under Linux when -fsjlj-exceptions flag is specified, but I confirmed that it in fact reaches setjmp receive point with incorrect EBX register contents and does not even tries reload it with correct value. Shortly after that it exits with "not enough memory" message. It is problematic for me to say where it happens exactly because I was unable to use FreeBSD native DDD to debug Linux program under Linux emulation layer and without DDD my gdb skill are not up to the task yet. Compiling full-blown gcc on Compaq's testdrive box is probably not a good idea either. I will try to seduce some guy at the office with a Linux box to provide me shell and X11 login on his box and then will try to recompile gcc 2.95.2 on it with proper debug info. Probably I will be able to tell you what is going on Linux then. And yes, I installed OpenBSD 2.6 on my box today and tried their gcc 2.95.1 on the same test code I've sent to you as well as on the sample from the PR Maxim Sobolev was referring to in his first message. Both examples fail miserably on OpenBSD and both do that exactly in the same place where FreeBSD does. Not surprisingly, my patch eliminated the problem and both examples run just fine now. Using similar technique, I was able to get GCC to work stably on RS6000 AIX 4.2 box. That one also did not load PIC register R2 in setjmp and suffered exactly the same consequences :) On 18-Jan-00 David O'Brien wrote: > On Mon, Jan 17, 2000 at 09:07:28PM -0500, Alexander N. Kabaev wrote: >> Compiled without -fsjlj-exceptions, it dumps core. > > Exactly same as FreeBSD, in the same place? > > >> I will be greatly surprised if OpenBSD will survive the test since >> their egcs looks like stock egcs 1.1.2 version which has not been >> heavily patched from original Cygnus version. > > You haven't looked at an OpenBSD 2.6 box I guess. They are using 2.95.1. > > -- > -- David (obrien@NUXI.com) ---------------------------------- E-Mail: Alexander N. Kabaev <kabaev@mail.ru> Date: 18-Jan-00 Time: 00:52:14 ---------------------------------- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.000118012023.kabaev>