delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/08/20/03:24:46

Message-Id: <199908200443.MAA11496@eastgate.cyberway.com.sg>
From: "Rob Kramer" <robk AT cyberway DOT com DOT sg>
To: djgpp AT delorie DOT com
Date: Fri, 20 Aug 1999 12:42:15 +0800
MIME-Version: 1.0
Subject: 2.95 g++ exceptions broken?
X-mailer: Pegasus Mail for Win32 (v3.01b)
Reply-To: djgpp AT delorie DOT com

Hi there,

A strange problem with g++ exceptions here.. Take the following simplified 
example:

------------------------------
#include <iostream>

class testException
{
public:
};


void main()
{
	cout << "test " << endl;

	try {
		throw testException();
	} catch (testException &e) {
		cout << "caught testException.." << endl;
	} catch (...) {
		cout << "or anything.." << endl;
	}
}

------------------------------

This works fine on gcc 2.8.1, but aborts on 2.95. (I had similar troubles with 
egcs 1.1.x, so never made the switch to that compiler). 

Compiling with 'gpp -v test.cc -o test.exe':

Reading specs from c:/djgpp/lib/gcc-lib/djgpp/2.95/specs
gcc version 2.95 19990728 (release)
 c:/djgpp/lib/gcc-lib/djgpp/2.95/cpp.exe -lang-c++ -v -D__GNUC__=2 -
D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -Dunix -Di386 -
DGO32 -DDJGPP=2 -DMSDOS -D__unix__ -D__i386__ -D__GO32__ -
D__DJGPP__=2 -D__MSDOS__ -D__unix -D__i386 -D__GO32 -
D__DJGPP=2 -D__MSDOS -Asystem(unix) -Asystem(msdos) -Acpu(i386) -
Amachine(i386) -D__EXCEPTIONS -Acpu(i386) -Amachine(i386) -Di386 -
D__i386 -D__i386__ -Di586 -Dpentium -D__i586 -D__i586__ -D__pentium -
D__pentium__ -imacros c:/djgpp/bin/../include/sys/version.h -remap test.cc 
c:/tmp\cczteee8.ii
GNU CPP version 2.95 19990728 (release) (80386, BSD syntax)
#include "..." search starts here:
#include <...> search starts here:
 c:/djgpp/lang/cxx
 c:/djgpp/lib/gcc-lib/djgpp/2.95/include
 c:/djgpp/include
End of search list.
The following default directories have been omitted from the search path:
 $DJDIR/lib/gcc-lib/djgpp/2.95/../../../../djgpp/include
End of omitted list.
 c:/djgpp/lib/gcc-lib/djgpp/2.95/cc1plus.exe c:/tmp\cczteee8.ii -quiet -
dumpbase test.cc -version -o c:/tmp\ccnNljsa.s
GNU C++ version 2.95 19990728 (release) (djgpp) compiled by GNU C 
version 2.95 19990728 (release).
 c:/djgpp/bin/as.exe -o c:/tmp\ccv7jERR.o c:/tmp\ccnNljsa.s
 c:/djgpp/lib/gcc-lib/djgpp/2.95/collect2.exe -o test.exe c:/djgpp/lib/crt0.o -
Lc:/djgpp/lib/gcc-lib/djgpp/2.95 -Lc:/djgpp/bin -Lc:/djgpp/lib 
c:/tmp\ccv7jERR.o -lstdcxx -lm -lgcc -lc -lgcc -Tdjgpp.djl
 c:/djgpp/bin/stubify.exe -v test.exe
stubify for djgpp V2.X executables, Copyright (C) 1995 DJ Delorie
stubify: test.exe -> test.000 -> test.exe

Program output:
--------
test
Abort!
--------

I upgraded from gcc 2.8.1 by installing bnu291, gcc295b and gpp295b in 
that order, and looked for old files according to readme.djgpp (they were 
gone already).

It seems the throw is never caught, but surely exception handling can't be 
*that* broken? I wonder what I'm doing wrong this time :)

Thanks!

	Rob Kramer
	robk AT cyberway DOT com DOT sg

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019