1// { dg-do run } 2#include <stdio.h> 3#include <stdlib.h> 4#include <exception> 5 6static void 7eh_terminate () 8{ 9 printf ("CALLING TERMINATE\n"); 10 exit (1); 11} 12 13void 14eh_test (int level) 15{ 16 try 17 { 18 if (level < 2) 19 eh_test (level + 1); 20 else 21 { 22 printf ("%d: Throwing\n", level); 23 throw (level); 24 } 25 } 26 catch (int &x) 27 { 28 printf ("%d: Got level %d\n", 29 level, x); 30 31 if (level > 0) 32 throw; 33 } 34} 35 36int main () 37{ 38 std::set_terminate (&eh_terminate); 39 eh_test (0); 40} 41