|
From: <sv...@va...> - 2005-07-07 14:29:33
|
Author: sewardj
Date: 2005-07-07 15:29:21 +0100 (Thu, 07 Jul 2005)
New Revision: 4127
Log:
Add a nested-functions test from Lee Kindness.
Added:
trunk/none/tests/nestedfns.c
trunk/none/tests/nestedfns.stderr.exp
trunk/none/tests/nestedfns.stdout.exp
trunk/none/tests/nestedfns.vgtest
Modified:
trunk/none/tests/Makefile.am
Modified: trunk/none/tests/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/Makefile.am 2005-07-07 13:52:53 UTC (rev 4126)
+++ trunk/none/tests/Makefile.am 2005-07-07 14:29:21 UTC (rev 4127)
@@ -57,6 +57,7 @@
mq.stderr.exp mq.vgtest \
mremap.stderr.exp mremap.stdout.exp mremap.vgtest \
munmap_exe.stderr.exp munmap_exe.vgtest \
+ nestedfns.stderr.exp nestedfns.stdout.exp nestedfns.vgtest \
pending.stdout.exp pending.stderr.exp pending.vgtest \
pth_atfork1.stderr.exp pth_atfork1.stdout.exp pth_atfork1.vgtest \
pth_blockedsig.stderr.exp \
@@ -107,6 +108,7 @@
fdleak_socketpair \
floored fork fucomip manythreads \
munmap_exe map_unaligned map_unmap mq mremap \
+ nestedfns \
pending \
pth_atfork1 pth_blockedsig pth_cancel1 pth_cancel2 pth_cvsimple \
pth_empty pth_exit pth_exit2 pth_mutexspeed pth_once pth_rwlock \
Added: trunk/none/tests/nestedfns.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/nestedfns.c 2005-07-07 13:52:53 UTC (rev 4126)
+++ trunk/none/tests/nestedfns.c 2005-07-07 14:29:21 UTC (rev 4127)
@@ -0,0 +1,41 @@
+
+/* This is a test program from Lee Kindness which used to fail on V
+ because gcc implements the nested function mumbo jumbo using self
+ modifying code on the stack, at least on x86 and amd64. It now
+ works transparently because by default V now generates
+ self-checking translations for translations taken from stack-like
+ segments.
+*/
+
+#include <stdio.h>=20
+=20
+ static void call_func(void (*sel)(void))=20
+ {=20
+ sel();=20
+ }=20
+=20
+ void test1()=20
+ {=20
+ void test1_inner()=20
+ {=20
+ printf( "Inside test1\n" );=20
+ }=20
+ call_func( test1_inner );=20
+ }=20
+=20
+ void test2()=20
+ {=20
+ void test2_inner()=20
+ {=20
+ printf( "Inside test2\n" );=20
+ }=20
+ call_func( test2_inner );=20
+ }=20
+=20
+ int main(int argc, char** argv)=20
+ {=20
+ test1();=20
+ test2();=20
+ return( 0 );=20
+ }=20
+=20
Added: trunk/none/tests/nestedfns.stderr.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/nestedfns.stderr.exp 2005-07-07 13:52:53 UTC (rev 41=
26)
+++ trunk/none/tests/nestedfns.stderr.exp 2005-07-07 14:29:21 UTC (rev 41=
27)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/nestedfns.stdout.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/nestedfns.stdout.exp 2005-07-07 13:52:53 UTC (rev 41=
26)
+++ trunk/none/tests/nestedfns.stdout.exp 2005-07-07 14:29:21 UTC (rev 41=
27)
@@ -0,0 +1,2 @@
+Inside test1
+Inside test2
Added: trunk/none/tests/nestedfns.vgtest
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/nestedfns.vgtest 2005-07-07 13:52:53 UTC (rev 4126)
+++ trunk/none/tests/nestedfns.vgtest 2005-07-07 14:29:21 UTC (rev 4127)
@@ -0,0 +1 @@
+prog: nestedfns
|