URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 305 |
Rev 338 |
// Some targets (e.g. those with "set_board_info needs_status_wrapper 1"
|
// Some targets (e.g. those with "set_board_info needs_status_wrapper 1"
|
// in their dejagnu baseboard description) require that the status is
|
// in their dejagnu baseboard description) require that the status is
|
// final when exit is entered (or main returns), and not "overruled" by a
|
// final when exit is entered (or main returns), and not "overruled" by a
|
// destructor calling _exit. It's not really worth it to handle that.
|
// destructor calling _exit. It's not really worth it to handle that.
|
//
|
//
|
// Any platform that doesn't have proper __cxa_atexit support will also fail.
|
// Any platform that doesn't have proper __cxa_atexit support will also fail.
|
//
|
//
|
// { dg-do run }
|
// { dg-do run }
|
// { dg-require-effective-target unwrapped }
|
// { dg-require-effective-target unwrapped }
|
// { dg-require-effective-target cxa_atexit }
|
// { dg-require-effective-target cxa_atexit }
|
|
|
#include
|
#include
|
extern "C" void _exit (int);
|
extern "C" void _exit (int);
|
|
|
static int cnt = 0;
|
static int cnt = 0;
|
|
|
class Foo2
|
class Foo2
|
{
|
{
|
public:
|
public:
|
Foo2() {}
|
Foo2() {}
|
~Foo2() { if (++cnt == 2) _exit (0); }
|
~Foo2() { if (++cnt == 2) _exit (0); }
|
};
|
};
|
|
|
static Foo2& GetFoo2()
|
static Foo2& GetFoo2()
|
{
|
{
|
static Foo2 foo2;
|
static Foo2 foo2;
|
return foo2;
|
return foo2;
|
}
|
}
|
|
|
class Foo1
|
class Foo1
|
{
|
{
|
public:
|
public:
|
Foo1() {}
|
Foo1() {}
|
~Foo1() { if (++cnt != 1) abort(); GetFoo2(); }
|
~Foo1() { if (++cnt != 1) abort(); GetFoo2(); }
|
};
|
};
|
|
|
int main( int argc, const char* argv[] )
|
int main( int argc, const char* argv[] )
|
{
|
{
|
static Foo1 anotherFoo;
|
static Foo1 anotherFoo;
|
exit (1);
|
exit (1);
|
}
|
}
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.