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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [gcc/] [testsuite/] [g++.dg/] [eh/] [forced4.C] - Blame information for rev 12

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 12 jlechner
// HP-UX libunwind.so doesn't provide _UA_END_OF_STACK.
2
// { dg-do run { xfail "ia64-hp-hpux11.*" } }
3
 
4
// Test that forced unwinding does not call std::unexpected going
5
// throw a function with a non-empty exception spec.
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 __attribute__((noreturn))
24
force_unwind ()
25
{
26
  _Unwind_Exception *exc = new _Unwind_Exception;
27
  // exception_class might not be a scalar.
28
  memset (&exc->exception_class, 0, sizeof (exc->exception_class));
29
  exc->exception_cleanup = 0;
30
 
31
#ifndef __USING_SJLJ_EXCEPTIONS__
32
  _Unwind_ForcedUnwind (exc, force_unwind_stop, 0);
33
#else
34
  _Unwind_SjLj_ForcedUnwind (exc, force_unwind_stop, 0);
35
#endif
36
 
37
  abort ();
38
}
39
 
40
static void
41
doit () throw(int)
42
{
43
  force_unwind ();
44
}
45
 
46
int main()
47
{
48
  try {
49
    doit ();
50
  } catch (...) {
51
  }
52
}

powered by: WebSVN 2.1.0

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