This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Required gas version? (was: Re: Results for haifa-disabled egcs-971105 g++ testsuite on i586-pc-linux-gnulibc1)


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
-------------------------------------------------------------



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]