OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.dg/] [eh/] [forced2.C] - Blame information for rev 816

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 149 jeremybenn
// HP-UX libunwind.so doesn't provide _UA_END_OF_STACK.
2
// { dg-do run { xfail "ia64-hp-hpux11.*" } }
3
 
4
// Test that leaving the catch block without rethrowing
5
// does call the exception object destructor.
6
 
7
#include 
8
#include 
9
#include 
10
 
11
static _Unwind_Reason_Code
12
force_unwind_stop (int version, _Unwind_Action actions,
13
                   _Unwind_Exception_Class exc_class,
14
                   struct _Unwind_Exception *exc_obj,
15
                   struct _Unwind_Context *context,
16
                   void *stop_parameter)
17
{
18
  if (actions & _UA_END_OF_STACK)
19
    abort ();
20
  return _URC_NO_REASON;
21
}
22
 
23
static void
24
force_unwind_cleanup (_Unwind_Reason_Code, struct _Unwind_Exception *)
25
{
26
  exit (0);
27
}
28
 
29
static void
30
force_unwind ()
31
{
32
  _Unwind_Exception *exc = new _Unwind_Exception;
33
  // exception_class might not be a scalar.
34
  memset (&exc->exception_class, 0, sizeof (exc->exception_class));
35
  exc->exception_cleanup = force_unwind_cleanup;
36
 
37
#ifndef __USING_SJLJ_EXCEPTIONS__
38
  _Unwind_ForcedUnwind (exc, force_unwind_stop, 0);
39
#else
40
  _Unwind_SjLj_ForcedUnwind (exc, force_unwind_stop, 0);
41
#endif
42
 
43
  abort ();
44
}
45
 
46
int main()
47
{
48
  try {
49
    force_unwind ();
50
  } catch (...) {
51
  }
52
  abort ();
53
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.