• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /* This is a test program from Lee Kindness which used to fail on V
3    because gcc implements the nested function mumbo jumbo using self
4    modifying code on the stack, at least on x86 and amd64.  It now
5    works transparently because by default V now generates
6    self-checking translations for translations taken from stack-like
7    segments.
8 */
9 
10 #include <stdio.h>
11 
call_func(void (* sel)(void))12  static void call_func(void (*sel)(void))
13  {
14     sel();
15  }
16 
test1()17  void test1()
18  {
19     void test1_inner()
20     {
21        printf( "Inside test1\n" );
22     }
23     call_func( test1_inner );
24  }
25 
test2()26  void test2()
27  {
28     void test2_inner()
29     {
30        printf( "Inside test2\n" );
31     }
32     call_func( test2_inner );
33  }
34 
main(int argc,char ** argv)35  int main(int argc, char** argv)
36  {
37     test1();
38     test2();
39     return( 0 );
40  }
41 
42