This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Required gas version? (was: Re: Results for haifa-disabled egcs-971105 g++ testsuite on i586-pc-linux-gnulibc1)
- To: Joe Buck <jbuck at synopsys dot com>
- Subject: Re: Required gas version? (was: Re: Results for haifa-disabled egcs-971105 g++ testsuite on i586-pc-linux-gnulibc1)
- From: azure at vvf dot fi
- Date: Tue, 11 Nov 1997 16:35:28 +0200 (EET)
- cc: egcs at cygnus dot com
- Reply-To: azure at vvf dot fi
On Sun, 9 Nov 1997, Joe Buck wrote:
> > I recently installed egcs-971023 with pgcc-patches
>
> Sorry, if you're going to use the pgcc patches, we have no way of
> verifying that it isn't those patches that are breaking exception
> handling.
I know, sorry if gave a wrong impression. I didn't want to bother
anyone with this potentially pgcc-specific EH-problem, so that's why I
tried just to ask about the version of gas, which hopefully was enough
egcs-specific subject, so that I could find out myself whether upgrading
would help or not.
> I believe that it is. However, there's still at least one EH failure
> on Linux even with the new gas, so your test may still represent a bug.
> Or the problem could be the pgcc patches. Please post your test case.
> If it works for others, then the problem may be the pgcc patches.
> Another possibility is that your test case breaks for everyone.
I also tried my test with egcs-971023 (and gas-970915) without pgcc patches
and it also failed. Here's the code, in case someone is interested to
give it a try:
--- clip -----------------------------------------------------------------
#include <iostream.h>
class Base {
int a;
public:
void setValue(int value) {a=value;}
};
class Derived : private Base {
char* ptr;
public:
void setPV(char* p, int v) {ptr=p; setValue(v);}
};
void a_function(void);
int foobar = 3;
int main()
{
try {
a_function();
}
catch (Derived a) {
cout << 1 << endl;
}
catch (Base a) {
cout << 2 << endl;
}
catch (...) {
cout << 3 << endl;
}
return 0;
}
void a_function(void)
{
Base hmm;
Derived hmm2;
int hmm3;
if (foobar == 1) {
throw hmm;
}
else if (foobar == 2) {
throw hmm2;
}
else {
throw hmm3;
}
}
--- clip -----------------------------------------------------------------
It's that "throw hmm3;" above that causes a coredump.
Thanks for your help!
---
Hannu Koivisto | What you see is all you get.
NOYB | - Brian Kernighan
-------------------------------------------------------------