[RFC] Adjust most tests to use test-skeleton.c
diff mbox

Message ID 20141021121711.GA44276@arati.lostca.se
State New
Headers show

Commit Message

Arjun Shankar Oct. 21, 2014, 12:17 p.m. UTC
This patch is an attempt to get most of the glibc tests to use
test-skeleton.c. It is mostly the result of the following bash script:

#!/bin/bash
SRC_DIR=~/src/glibc/
for f in $(find $SRC_DIR -regex '.*t[e]?st-.*\.c'); do
  grep -q skeleton $f \
  || (grep -Pzq 'int\s*main\s*\(\s*void\s*\)' $f \
      && sed -i '/^int$/{$!{N;s/^int\nmain (void)$/static int\ndo_test (void)/;ty;P;D;:y}}' $f \
      && (grep -q 'do_test' $f && (echo -e '\n#define TEST_FUNCTION do_test ()\n#include "../test-skeleton.c"' >> $f)))
done
# end

I then ran `make check', followed by:

1. reverting changes that led to compile/check failures that I did not
   immediately understand;

2. setting longer TIMEOUT values for tests that clearly needed more than
   the default 2 seconds;

3. and, renaming functions/macros whose names clashed with those already
   used in the skeleton.

Tested on x86_64 with no regressions or warnings on `make check'.

Is it horrible to try and hammer the glibc source tree with a bit of `sed'?
Any other comments?

Cheers,
Arjun

---
 assert/test-assert.c         |  7 +++++--
 catgets/test-gencat.c        |  7 +++++--
 catgets/tst-catgets.c        |  7 +++++--
 elf/tst-array5.c             |  7 +++++--
 elf/tst-audit2.c             |  7 +++++--
 elf/tst-global1.c            |  7 +++++--
 elf/tst-leaks1.c             |  7 +++++--
 elf/tst-pathopt.c            |  7 +++++--
 elf/tst-piemod1.c            |  7 +++++--
 elf/tst-tls10.c              |  7 +++++--
 elf/tst-tls11.c              |  7 +++++--
 elf/tst-tls12.c              |  7 +++++--
 gnulib/tst-gcc.c             |  7 +++++--
 iconv/tst-iconv1.c           |  7 +++++--
 iconv/tst-iconv2.c           |  7 +++++--
 iconvdata/tst-e2big.c        |  7 +++++--
 iconvdata/tst-loading.c      |  7 +++++--
 inet/test-inet6_opt.c        |  7 +++++--
 inet/tst-gethnm.c            |  7 +++++--
 inet/tst-network.c           |  7 +++++--
 inet/tst-ntoa.c              |  7 +++++--
 intl/tst-codeset.c           |  7 +++++--
 intl/tst-gettext2.c          |  7 +++++--
 intl/tst-gettext3.c          |  7 +++++--
 intl/tst-gettext4.c          |  7 +++++--
 intl/tst-gettext5.c          |  7 +++++--
 intl/tst-gettext6.c          |  7 +++++--
 intl/tst-ngettext.c          |  7 +++++--
 intl/tst-translit.c          |  7 +++++--
 io/test-stat.c               |  7 +++++--
 libio/test-fmemopen.c        |  7 +++++--
 libio/tst-ext.c              |  7 +++++--
 libio/tst-freopen.c          |  7 +++++--
 libio/tst-sscanf.c           |  7 +++++--
 libio/tst-ungetwc1.c         |  7 +++++--
 libio/tst-ungetwc2.c         |  7 +++++--
 libio/tst-widetext.c         |  7 +++++--
 localedata/tst-ctype.c       |  7 +++++--
 localedata/tst-digits.c      |  7 +++++--
 localedata/tst-langinfo.c    |  7 +++++--
 localedata/tst-leaks.c       |  7 +++++--
 localedata/tst-mbswcs1.c     |  7 +++++--
 localedata/tst-mbswcs2.c     |  7 +++++--
 localedata/tst-mbswcs3.c     |  7 +++++--
 localedata/tst-mbswcs4.c     |  7 +++++--
 localedata/tst-mbswcs5.c     |  7 +++++--
 localedata/tst-setlocale.c   |  7 +++++--
 localedata/tst-trans.c       |  7 +++++--
 localedata/tst-wctype.c      |  7 +++++--
 localedata/tst-xlocale1.c    |  7 +++++--
 login/tst-grantpt.c          |  7 +++++--
 malloc/tst-calloc.c          |  7 +++++--
 malloc/tst-malloc.c          |  7 +++++--
 malloc/tst-mallocstate.c     |  7 +++++--
 malloc/tst-mcheck.c          |  7 +++++--
 malloc/tst-mtrace.c          |  7 +++++--
 malloc/tst-obstack.c         |  7 +++++--
 math/atest-exp.c             |  7 +++++--
 math/atest-exp2.c            |  7 +++++--
 math/atest-sincos.c          |  7 +++++--
 math/test-fenv.c             |  7 +++++--
 math/test-fpucw.c            |  7 +++++--
 math/test-matherr.c          |  7 +++++--
 math/test-misc.c             |  7 +++++--
 math/test-powl.c             |  7 +++++--
 math/tst-definitions.c       |  7 +++++--
 misc/tst-dirname.c           |  7 +++++--
 misc/tst-efgcvt.c            |  7 +++++--
 misc/tst-fdset.c             |  7 +++++--
 misc/tst-hsearch.c           |  7 +++++--
 misc/tst-mntent2.c           |  7 +++++--
 nptl/tst-_res1.c             | 16 +++++++++++-----
 nptl/tst-fork1.c             |  7 +++++--
 nptl/tst-fork2.c             |  7 +++++--
 nptl/tst-fork3.c             |  7 +++++--
 nptl/tst-raise1.c            |  7 +++++--
 nptl/tst-sem11.c             | 11 +++++++----
 nptl/tst-sem12.c             |  2 +-
 nptl/tst-sem7.c              |  7 +++++--
 nptl/tst-sem8.c              |  7 +++++--
 nptl/tst-sem9.c              |  7 +++++--
 nss/test-netdb.c             |  7 +++++--
 posix/test-vfork.c           |  7 +++++--
 posix/tst-fnmatch.c          |  7 +++++--
 posix/tst-fork.c             |  7 +++++--
 posix/tst-getlogin.c         |  7 +++++--
 posix/tst-gnuglob.c          |  7 +++++--
 posix/tst-mmap.c             |  7 +++++--
 pwd/tst-getpw.c              |  7 +++++--
 resolv/tst-inet_ntop.c       |  7 +++++--
 rt/tst-timer.c               |  7 +++++--
 setjmp/tst-setjmp.c          |  7 +++++--
 signal/tst-raise.c           |  7 +++++--
 signal/tst-signal.c          |  7 +++++--
 stdio-common/test-fseek.c    |  7 +++++--
 stdio-common/test-popen.c    |  7 +++++--
 stdio-common/test-vfprintf.c |  7 +++++--
 stdio-common/tst-cookie.c    |  7 +++++--
 stdio-common/tst-fileno.c    |  7 +++++--
 stdio-common/tst-fseek.c     |  8 ++++++--
 stdio-common/tst-gets.c      |  7 +++++--
 stdio-common/tst-obprintf.c  |  7 +++++--
 stdio-common/tst-perror.c    |  7 +++++--
 stdio-common/tst-sprintf.c   |  7 +++++--
 stdio-common/tst-sprintf2.c  |  7 +++++--
 stdio-common/tst-sprintf3.c  |  7 +++++--
 stdio-common/tst-sscanf.c    |  7 +++++--
 stdio-common/tst-swprintf.c  |  7 +++++--
 stdio-common/tst-tmpnam.c    |  7 +++++--
 stdio-common/tst-unbputc.c   |  7 +++++--
 stdio-common/tst-wc-printf.c |  7 +++++--
 stdlib/tst-environ.c         |  7 +++++--
 stdlib/tst-fmtmsg.c          |  7 +++++--
 stdlib/tst-limits.c          |  7 +++++--
 stdlib/tst-makecontext3.c    |  7 +++++--
 stdlib/tst-rand48-2.c        |  7 +++++--
 stdlib/tst-rand48.c          |  7 +++++--
 stdlib/tst-random.c          |  7 +++++--
 stdlib/tst-random2.c         |  7 +++++--
 stdlib/tst-setcontext.c      |  7 +++++--
 stdlib/tst-strtol.c          |  7 +++++--
 stdlib/tst-strtoll.c         |  7 +++++--
 stdlib/tst-tls-atexit.c      |  7 +++++--
 stdlib/tst-xpg-basename.c    |  7 +++++--
 string/test-ffs.c            |  7 +++++--
 string/tst-bswap.c           |  7 +++++--
 string/tst-inlcall.c         |  7 +++++--
 string/tst-strtok.c          |  7 +++++--
 string/tst-strxfrm.c         |  7 +++++--
 sysdeps/pthread/tst-timer.c  |  8 ++++++--
 sysdeps/x86_64/tst-audit10.c | 11 +++++++----
 sysdeps/x86_64/tst-audit3.c  |  7 +++++--
 sysdeps/x86_64/tst-audit4.c  | 11 +++++++----
 sysdeps/x86_64/tst-audit5.c  |  7 +++++--
 sysdeps/x86_64/tst-audit6.c  |  7 +++++--
 time/tst-ftime_l.c           |  7 +++++--
 time/tst-getdate.c           |  7 +++++--
 time/tst-mktime.c            |  7 +++++--
 time/tst-mktime3.c           |  7 +++++--
 time/tst-posixtz.c           |  7 +++++--
 time/tst-strptime2.c         |  7 +++++--
 time/tst-strptime3.c         |  7 +++++--
 wcsmbs/tst-btowc.c           |  7 +++++--
 wcsmbs/tst-mbrtowc.c         |  7 +++++--
 wcsmbs/tst-mbsrtowcs.c       |  7 +++++--
 wcsmbs/tst-wchar-h.c         |  7 +++++--
 wcsmbs/tst-wcpncpy.c         |  7 +++++--
 wcsmbs/tst-wcrtomb.c         |  7 +++++--
 wcsmbs/tst-wcsnlen.c         |  7 +++++--
 wcsmbs/tst-wcstof.c          |  7 +++++--
 150 files changed, 760 insertions(+), 308 deletions(-)

Comments

Roland McGrath Oct. 21, 2014, 5:23 p.m. UTC | #1
> Is it horrible to try and hammer the glibc source tree with a bit of `sed'?

However you arrive at your changes is up to you.  It's the changes
themselves we review.  When you used a script it is very helpful to post
it and describe the procedure you followed, as you have done.  So that's
all great.  Most of these changes look just fine to me off hand, but
they need ChangeLog entries to match; they are just as easy to generate
programmatically as the source changes.

It's easier to review and sign off on a large set of changes if they are
all completely formulaic.  So start with one big patch that is only the
completely trivial cases.  Then for each case where you found you needed
to set TIMEOUT or something else beyond the basic mechanical change,
post each of those separately for review and discussion.


Thanks,
Roland

Patch
diff mbox

diff --git a/assert/test-assert.c b/assert/test-assert.c
index 26b58d4..b160f9b 100644
--- a/assert/test-assert.c
+++ b/assert/test-assert.c
@@ -43,8 +43,8 @@  assert3 (void)
   assert (2 == 3);
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
 
   volatile int failed = 1;
@@ -86,3 +86,6 @@  main (void)
 
   return failed;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/catgets/test-gencat.c b/catgets/test-gencat.c
index eaa9b89..282974c 100644
--- a/catgets/test-gencat.c
+++ b/catgets/test-gencat.c
@@ -3,8 +3,8 @@ 
 #include <stdio.h>
 #include <stdlib.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   nl_catd catalog;
   setlocale (LC_ALL, "");
@@ -29,3 +29,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/catgets/tst-catgets.c b/catgets/tst-catgets.c
index fdaa834..a0a4089 100644
--- a/catgets/tst-catgets.c
+++ b/catgets/tst-catgets.c
@@ -14,8 +14,8 @@  static const char *msgs[] =
 
 #define ROUNDS 5
 
-int
-main (void)
+static int
+do_test (void)
 {
   int rnd;
   int result = 0;
@@ -64,3 +64,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-array5.c b/elf/tst-array5.c
index 03a5668..271734e 100644
--- a/elf/tst-array5.c
+++ b/elf/tst-array5.c
@@ -43,8 +43,11 @@  void (*const init_array []) (int, char **)
   &init_0,
 };
 
-int
-main (void)
+static int
+do_test (void)
 {
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-audit2.c b/elf/tst-audit2.c
index b4fa906..acad1b0 100644
--- a/elf/tst-audit2.c
+++ b/elf/tst-audit2.c
@@ -31,8 +31,8 @@  calloc (size_t n, size_t m)
   return ptr;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   if (magic[1] != MAGIC1 || magic[0] != MAGIC2)
     {
@@ -42,3 +42,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-global1.c b/elf/tst-global1.c
index 1611b51..4df335c 100644
--- a/elf/tst-global1.c
+++ b/elf/tst-global1.c
@@ -1,8 +1,8 @@ 
 #include <dlfcn.h>
 #include <stdio.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   void *h1 = dlopen ("$ORIGIN/testobj6.so", RTLD_GLOBAL|RTLD_LAZY);
   if (h1 == NULL)
@@ -34,3 +34,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-leaks1.c b/elf/tst-leaks1.c
index 36e4aee..dcff28d 100644
--- a/elf/tst-leaks1.c
+++ b/elf/tst-leaks1.c
@@ -3,8 +3,8 @@ 
 #include <mcheck.h>
 #include <stdlib.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   mtrace ();
 
@@ -23,3 +23,6 @@  main (void)
 
   return ret;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-pathopt.c b/elf/tst-pathopt.c
index 1f7aac2..8d73ad4 100644
--- a/elf/tst-pathopt.c
+++ b/elf/tst-pathopt.c
@@ -4,8 +4,8 @@ 
 #include <stdlib.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   void *h;
   int (*fp) (int);
@@ -37,3 +37,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-piemod1.c b/elf/tst-piemod1.c
index ad439da..6e98b5f 100644
--- a/elf/tst-piemod1.c
+++ b/elf/tst-piemod1.c
@@ -6,8 +6,8 @@  foo (void)
   return 21;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   int val = foo ();
   if (val != 34)
@@ -18,3 +18,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-tls10.c b/elf/tst-tls10.c
index 347243f..eb1ecb9 100644
--- a/elf/tst-tls10.c
+++ b/elf/tst-tls10.c
@@ -8,8 +8,8 @@  __thread struct A local = { 1, 2, 3 };
   if (p->a != S || p->b != S + 1 || p->c != S + 2)	\
     abort ()
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct A *p;
   if (local.a != 1 || local.b != 2 || local.c != 3)
@@ -35,3 +35,6 @@  main (void)
 
   exit (0);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-tls11.c b/elf/tst-tls11.c
index 8a2fef4..8ceac14 100644
--- a/elf/tst-tls11.c
+++ b/elf/tst-tls11.c
@@ -5,8 +5,8 @@ 
   if (p->a != S || p->b != S + 1 || p->c != S + 2)	\
     abort ()
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct A *p;
   check1 ();
@@ -24,3 +24,6 @@  main (void)
 
   exit (0);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-tls12.c b/elf/tst-tls12.c
index 9086d17..8093894 100644
--- a/elf/tst-tls12.c
+++ b/elf/tst-tls12.c
@@ -5,8 +5,8 @@ 
   if (p->a != S || p->b != S + 1 || p->c != S + 2)	\
     abort ()
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct A *p;
   check1 ();
@@ -15,3 +15,6 @@  main (void)
 
   exit (0);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/gnulib/tst-gcc.c b/gnulib/tst-gcc.c
index 71fab28..9f4ba83 100644
--- a/gnulib/tst-gcc.c
+++ b/gnulib/tst-gcc.c
@@ -51,8 +51,8 @@ 
   })
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   int __integer_type;
@@ -71,3 +71,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/iconv/tst-iconv1.c b/iconv/tst-iconv1.c
index d806ce6..0609f50 100644
--- a/iconv/tst-iconv1.c
+++ b/iconv/tst-iconv1.c
@@ -5,8 +5,8 @@ 
 #include <stdio.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   char utf8[5];
   wchar_t ucs4[5];
@@ -42,3 +42,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/iconv/tst-iconv2.c b/iconv/tst-iconv2.c
index 5036ad1..0672a51 100644
--- a/iconv/tst-iconv2.c
+++ b/iconv/tst-iconv2.c
@@ -25,8 +25,8 @@ 
 #include <string.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   char buf[3];
   const wchar_t wc[1] = L"a";
@@ -97,3 +97,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/iconvdata/tst-e2big.c b/iconvdata/tst-e2big.c
index 9533eb0..8de64b2 100644
--- a/iconvdata/tst-e2big.c
+++ b/iconvdata/tst-e2big.c
@@ -95,10 +95,13 @@  test_tscii (void)
   test ("TSCII", inbuf, sizeof (inbuf), 9);
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   test_euc_jisx0213 ();
   test_tscii ();
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/iconvdata/tst-loading.c b/iconvdata/tst-loading.c
index 0d8a959..eff9d78 100644
--- a/iconvdata/tst-loading.c
+++ b/iconvdata/tst-loading.c
@@ -114,8 +114,8 @@  static const char inbuf[] =
 "     function.  Later modifications of the variable have no effect.\n";
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   size_t count = TEST_ROUNDS;
   int result = 0;
@@ -180,3 +180,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/inet/test-inet6_opt.c b/inet/test-inet6_opt.c
index 3bf319e..a7ebf00 100644
--- a/inet/test-inet6_opt.c
+++ b/inet/test-inet6_opt.c
@@ -194,8 +194,8 @@  decode_inet6_opt (void *eb, socklen_t el)
   return ret;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   void *eb;
   socklen_t el;
@@ -206,3 +206,6 @@  main (void)
     return 1;
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/inet/tst-gethnm.c b/inet/tst-gethnm.c
index 8af44d6..dd3a547 100644
--- a/inet/tst-gethnm.c
+++ b/inet/tst-gethnm.c
@@ -10,8 +10,8 @@ 
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct hostent *ent;
   struct in_addr hostaddr;
@@ -62,3 +62,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/inet/tst-network.c b/inet/tst-network.c
index fc90bd7..cc840e0 100644
--- a/inet/tst-network.c
+++ b/inet/tst-network.c
@@ -51,8 +51,8 @@  struct
 };
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int errors = 0;
   size_t i;
@@ -76,3 +76,6 @@  main (void)
 
   return errors != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/inet/tst-ntoa.c b/inet/tst-ntoa.c
index 9be91eb..ef82d4d 100644
--- a/inet/tst-ntoa.c
+++ b/inet/tst-ntoa.c
@@ -22,8 +22,8 @@  test (unsigned int inaddr, const char *expected)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -34,3 +34,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/intl/tst-codeset.c b/intl/tst-codeset.c
index f5b37ec..37f731e 100644
--- a/intl/tst-codeset.c
+++ b/intl/tst-codeset.c
@@ -23,8 +23,8 @@ 
 #include <stdlib.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   char *s;
   int result = 0;
@@ -55,3 +55,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/intl/tst-gettext2.c b/intl/tst-gettext2.c
index 075680a..3c44165 100644
--- a/intl/tst-gettext2.c
+++ b/intl/tst-gettext2.c
@@ -40,8 +40,8 @@  struct data_t strings[] =
 const int lang_cnt = 3;
 const char *lang[] = {"lang1", "lang2", "lang3"};
 
-int
-main (void)
+static int
+do_test (void)
 {
   int i;
 
@@ -70,3 +70,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/intl/tst-gettext3.c b/intl/tst-gettext3.c
index dd88987..11e9b08 100644
--- a/intl/tst-gettext3.c
+++ b/intl/tst-gettext3.c
@@ -24,8 +24,8 @@ 
 #include <stdlib.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   char *s;
   int result = 0;
@@ -57,3 +57,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/intl/tst-gettext4.c b/intl/tst-gettext4.c
index 36017d8..3e9f216 100644
--- a/intl/tst-gettext4.c
+++ b/intl/tst-gettext4.c
@@ -122,8 +122,8 @@  thread2_execution (void *arg)
   return NULL;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   pthread_t thread1;
   pthread_t thread2;
@@ -148,3 +148,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/intl/tst-gettext5.c b/intl/tst-gettext5.c
index 1d4edf6..d637e8f 100644
--- a/intl/tst-gettext5.c
+++ b/intl/tst-gettext5.c
@@ -127,8 +127,8 @@  thread2_execution (void *arg)
   return NULL;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   pthread_t thread1;
   pthread_t thread2;
@@ -153,3 +153,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/intl/tst-gettext6.c b/intl/tst-gettext6.c
index 93053e1..050f80e 100644
--- a/intl/tst-gettext6.c
+++ b/intl/tst-gettext6.c
@@ -55,8 +55,8 @@  test (void)
   return 0;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   for (int i = 0; i < 300; i++)
     {
@@ -83,3 +83,6 @@  main (void)
     }
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/intl/tst-ngettext.c b/intl/tst-ngettext.c
index 4fb0ca2..71e91b9 100644
--- a/intl/tst-ngettext.c
+++ b/intl/tst-ngettext.c
@@ -25,8 +25,8 @@ 
 #include <string.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   const char *strs[2] = { "singular", "plural" };
   unsigned long int i;
@@ -63,3 +63,6 @@  main (void)
 
   return res;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/intl/tst-translit.c b/intl/tst-translit.c
index 1aecee7..299fa40 100644
--- a/intl/tst-translit.c
+++ b/intl/tst-translit.c
@@ -24,8 +24,8 @@ 
 #include <string.h>
 #include <unistd.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   const char *s;
@@ -49,3 +49,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/io/test-stat.c b/io/test-stat.c
index c5cfd26..e9c8468 100644
--- a/io/test-stat.c
+++ b/io/test-stat.c
@@ -25,8 +25,8 @@ 
 #include <stddef.h>
 #include <sys/stat.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   /* With _FILE_OFFSET_BITS=64 struct stat and struct stat64 should
      be identical.  */
@@ -65,3 +65,6 @@  main (void)
 #endif
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libio/test-fmemopen.c b/libio/test-fmemopen.c
index 3099894..211176e 100644
--- a/libio/test-fmemopen.c
+++ b/libio/test-fmemopen.c
@@ -22,8 +22,8 @@  static char buffer[] = "foobar";
 #include <stdio.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   int ch;
   FILE *stream;
@@ -37,3 +37,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libio/tst-ext.c b/libio/tst-ext.c
index f69fbe6..611d8dc 100644
--- a/libio/tst-ext.c
+++ b/libio/tst-ext.c
@@ -3,8 +3,8 @@ 
 #include <string.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   FILE *fp;
   const char teststring[] = "hello world";
@@ -139,3 +139,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libio/tst-freopen.c b/libio/tst-freopen.c
index f9e7177..94284ec 100644
--- a/libio/tst-freopen.c
+++ b/libio/tst-freopen.c
@@ -22,8 +22,8 @@ 
 #include <string.h>
 #include <unistd.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   char name[] = "/tmp/tst-freopen.XXXXXX";
   const char * const test = "Let's test freopen.\n";
@@ -100,3 +100,6 @@  main (void)
   unlink (name);
   exit (0);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libio/tst-sscanf.c b/libio/tst-sscanf.c
index b1a2b84..fb4be34 100644
--- a/libio/tst-sscanf.c
+++ b/libio/tst-sscanf.c
@@ -3,8 +3,8 @@ 
 
 #define WCS_LENGTH 256
 
-int
-main (void)
+static int
+do_test (void)
 {
   const char cnv[] ="%l[abc]";
   const char str[] = "abbcXab";
@@ -18,3 +18,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libio/tst-ungetwc1.c b/libio/tst-ungetwc1.c
index f74c407..f71b390 100644
--- a/libio/tst-ungetwc1.c
+++ b/libio/tst-ungetwc1.c
@@ -7,8 +7,8 @@ 
 #include <unistd.h>
 #include <wchar.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   FILE *fp;
   const char *str = "abcdef";
@@ -79,3 +79,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libio/tst-ungetwc2.c b/libio/tst-ungetwc2.c
index d15e287..a7c5193 100644
--- a/libio/tst-ungetwc2.c
+++ b/libio/tst-ungetwc2.c
@@ -7,8 +7,8 @@ 
 #include <unistd.h>
 #include <wchar.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   FILE *fp;
   const char *str = "abcdef";
@@ -79,3 +79,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libio/tst-widetext.c b/libio/tst-widetext.c
index 179763e..acab72b 100644
--- a/libio/tst-widetext.c
+++ b/libio/tst-widetext.c
@@ -31,8 +31,8 @@ 
 #define SIZE 210000
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   char name[] = "/tmp/widetext.out.XXXXXX";
   char mbbuf[SIZE];
@@ -367,3 +367,6 @@  main (void)
 
   return status;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-ctype.c b/localedata/tst-ctype.c
index ceda891..a4e8fcf 100644
--- a/localedata/tst-ctype.c
+++ b/localedata/tst-ctype.c
@@ -61,8 +61,8 @@  static struct classes
   }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   const char *cp;
   const char *cp2;
@@ -447,3 +447,6 @@  punct = %04x  alnum = %04x\n",
   printf ("  No errors for `%s' locale\n\n\n", setlocale (LC_ALL, NULL));
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-digits.c b/localedata/tst-digits.c
index 9b3ebcd..76356e9 100644
--- a/localedata/tst-digits.c
+++ b/localedata/tst-digits.c
@@ -111,8 +111,8 @@  static struct wprintf_int_test
   (sizeof (wprintf_int_tests) / sizeof (wprintf_int_tests[0]))
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int cnt;
   int failures;
@@ -246,3 +246,6 @@  main (void)
 
   return status;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-langinfo.c b/localedata/tst-langinfo.c
index b3806ff..e3aa5f4 100644
--- a/localedata/tst-langinfo.c
+++ b/localedata/tst-langinfo.c
@@ -138,8 +138,8 @@  map_paramstr (const char *str)
 # define REASON(str)
 #endif
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -281,3 +281,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-leaks.c b/localedata/tst-leaks.c
index 7a4b557..ccd44f2 100644
--- a/localedata/tst-leaks.c
+++ b/localedata/tst-leaks.c
@@ -1,8 +1,8 @@ 
 #include <locale.h>
 #include <mcheck.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   int cnt;
 
@@ -16,3 +16,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-mbswcs1.c b/localedata/tst-mbswcs1.c
index 14f1372..1404829 100644
--- a/localedata/tst-mbswcs1.c
+++ b/localedata/tst-mbswcs1.c
@@ -33,8 +33,8 @@ 
     }									  \
   putc ('\n', stdout)
 
-int
-main (void)
+static int
+do_test (void)
 {
   const unsigned char buf[6] = { 0x25,  0xe2, 0x82, 0xac,  0xce, 0xbb };
   mbstate_t state;
@@ -60,3 +60,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-mbswcs2.c b/localedata/tst-mbswcs2.c
index 25fa951..9cd95d6 100644
--- a/localedata/tst-mbswcs2.c
+++ b/localedata/tst-mbswcs2.c
@@ -35,8 +35,8 @@ 
     }									\
   putc ('\n', stdout)
 
-int
-main (void)
+static int
+do_test (void)
 {
   unsigned char buf[6] = { 0x25,  0xe2, 0x82, 0xac,  0xce, 0xbb };
   mbstate_t state;
@@ -62,3 +62,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-mbswcs3.c b/localedata/tst-mbswcs3.c
index 8db65c5..a068541 100644
--- a/localedata/tst-mbswcs3.c
+++ b/localedata/tst-mbswcs3.c
@@ -38,8 +38,8 @@ 
     putc ('\n', stdout);						\
   }
 
-int
-main (void)
+static int
+do_test (void)
 {
   unsigned char buf[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
   const unsigned char bufcheck[6] = { 0x25, 0xe2, 0x82, 0xac, 0xce, 0xbb };
@@ -73,3 +73,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-mbswcs4.c b/localedata/tst-mbswcs4.c
index 09b7417..a4fe60d 100644
--- a/localedata/tst-mbswcs4.c
+++ b/localedata/tst-mbswcs4.c
@@ -34,8 +34,8 @@ 
     }									\
   putc ('\n', stdout)
 
-int
-main (void)
+static int
+do_test (void)
 {
   unsigned char buf[6] = { 0x25,  0xe2, 0x82, 0xac,  0xce, 0xbb };
   mbstate_t state;
@@ -60,3 +60,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-mbswcs5.c b/localedata/tst-mbswcs5.c
index e18862c..c44f12a 100644
--- a/localedata/tst-mbswcs5.c
+++ b/localedata/tst-mbswcs5.c
@@ -37,8 +37,8 @@ 
     putc ('\n', stdout);						\
   }
 
-int
-main (void)
+static int
+do_test (void)
 {
   unsigned char buf[7] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
   const unsigned char bufcheck[7] = { 0x25, 0xe2, 0x82, 0xac, 0xce, 0xbb, 0 };
@@ -72,3 +72,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-setlocale.c b/localedata/tst-setlocale.c
index 1f8e68d..a09a4de 100644
--- a/localedata/tst-setlocale.c
+++ b/localedata/tst-setlocale.c
@@ -3,8 +3,8 @@ 
 #include <stdio.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   char q[30];
   char *s;
@@ -23,3 +23,6 @@  main (void)
 
   return strcmp (s, "de_DE.UTF-8") != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-trans.c b/localedata/tst-trans.c
index 5e09631..0b0be83 100644
--- a/localedata/tst-trans.c
+++ b/localedata/tst-trans.c
@@ -24,8 +24,8 @@ 
 #include <wchar.h>
 #include <wctype.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   char buf[30];
   wchar_t wbuf[30];
@@ -68,3 +68,6 @@  main (void)
 
   return errors;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-wctype.c b/localedata/tst-wctype.c
index bd2b057..eb72030 100644
--- a/localedata/tst-wctype.c
+++ b/localedata/tst-wctype.c
@@ -24,8 +24,8 @@ 
 #include <wchar.h>
 #include <wctype.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   wctype_t wct;
   wchar_t buf[1000];
@@ -141,3 +141,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/localedata/tst-xlocale1.c b/localedata/tst-xlocale1.c
index 297c9ad..9f545a0 100644
--- a/localedata/tst-xlocale1.c
+++ b/localedata/tst-xlocale1.c
@@ -20,8 +20,8 @@  static struct
 #define ntests (sizeof (tests) / sizeof (tests[0]))
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   size_t cnt;
   int result = 0;
@@ -73,3 +73,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/login/tst-grantpt.c b/login/tst-grantpt.c
index 5078dac..65bb344 100644
--- a/login/tst-grantpt.c
+++ b/login/tst-grantpt.c
@@ -66,8 +66,8 @@  test_einval (void)
   return ret;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -76,3 +76,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/malloc/tst-calloc.c b/malloc/tst-calloc.c
index 51e6c25..7ad5124 100644
--- a/malloc/tst-calloc.c
+++ b/malloc/tst-calloc.c
@@ -104,8 +104,8 @@  null_test (void)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   /* We are allocating blocks with `calloc' and check whether every
      block is completely cleared.  We first try this for some fixed
@@ -123,3 +123,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/malloc/tst-malloc.c b/malloc/tst-malloc.c
index a75ab1e..2685315 100644
--- a/malloc/tst-malloc.c
+++ b/malloc/tst-malloc.c
@@ -29,8 +29,8 @@  merror (const char *msg)
   printf ("Error: %s\n", msg);
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   void *p, *q;
   int save;
@@ -75,3 +75,6 @@  main (void)
 
   return errors != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/malloc/tst-mallocstate.c b/malloc/tst-mallocstate.c
index 69c4500..539539e 100644
--- a/malloc/tst-mallocstate.c
+++ b/malloc/tst-mallocstate.c
@@ -29,8 +29,8 @@  merror (const char *msg)
   printf ("Error: %s\n", msg);
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   void *p1, *p2;
   void *save_state;
@@ -79,3 +79,6 @@  main (void)
  * c-basic-offset: 2
  * End:
  */
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/malloc/tst-mcheck.c b/malloc/tst-mcheck.c
index 478ca8c..bd9ab0e 100644
--- a/malloc/tst-mcheck.c
+++ b/malloc/tst-mcheck.c
@@ -29,8 +29,8 @@  merror (const char *msg)
   printf ("Error: %s\n", msg);
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   void *p, *q;
 
@@ -88,3 +88,6 @@  main (void)
 
   return errors != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/malloc/tst-mtrace.c b/malloc/tst-mtrace.c
index 9b5151c..b2c0c2c 100644
--- a/malloc/tst-mtrace.c
+++ b/malloc/tst-mtrace.c
@@ -30,8 +30,8 @@  static void print (const void *node, VISIT value, int level);
 static FILE *fp;
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   void *root = NULL;
   size_t linelen = 0;
@@ -100,3 +100,6 @@  print (const void *node, VISIT value, int level)
   if (value == postorder || value == leaf)
     fprintf (fp, "%3d: %s", ++cnt, *(const char **) node);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/malloc/tst-obstack.c b/malloc/tst-obstack.c
index 769697f..ee1385d 100644
--- a/malloc/tst-obstack.c
+++ b/malloc/tst-obstack.c
@@ -25,8 +25,8 @@  verbose_free (void *buf)
   printf ("free (%p)\n", buf);
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   int align = 2;
@@ -62,3 +62,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/atest-exp.c b/math/atest-exp.c
index 3a538b2..6a551de 100644
--- a/math/atest-exp.c
+++ b/math/atest-exp.c
@@ -102,8 +102,8 @@  mpn_bitsize(const mp_limb_t *SRC_PTR, mp_size_t SIZE)
    return i * mpbpl + j;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
    mp1 ex, x, xt, e2, e3;
    int i;
@@ -190,3 +190,6 @@  main (void)
 
    return failures == 0 ? 0 : 1;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/atest-exp2.c b/math/atest-exp2.c
index 3442715..945bb7a 100644
--- a/math/atest-exp2.c
+++ b/math/atest-exp2.c
@@ -144,8 +144,8 @@  mpn_bitsize(const mp_limb_t *SRC_PTR, mp_size_t SIZE)
   return i * mpbpl + j;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   mp1 ex, x, xt, e2, e3;
   int i;
@@ -227,3 +227,6 @@  main (void)
 
   return failures == 0 ? 0 : 1;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/atest-sincos.c b/math/atest-sincos.c
index 5ad59b2..1f5e730 100644
--- a/math/atest-sincos.c
+++ b/math/atest-sincos.c
@@ -141,8 +141,8 @@  mpn_bitsize (const mp_limb_t *SRC_PTR, mp_size_t SIZE)
    return i * mpbpl + j;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   mp1 si, co, x, ox, xt, s2, c2, s3, c3;
   int i;
@@ -277,3 +277,6 @@  main (void)
 
    return (sin_failures == 0 && cos_failures == 0) ? 0 : 1;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/test-fenv.c b/math/test-fenv.c
index 23e47d4..f585d7a 100644
--- a/math/test-fenv.c
+++ b/math/test-fenv.c
@@ -754,8 +754,8 @@  initial_tests (void)
 #endif
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   initial_tests ();
   fe_tests ();
@@ -770,3 +770,6 @@  main (void)
   printf ("\n All tests passed successfully.\n");
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/test-fpucw.c b/math/test-fpucw.c
index b0b6dda..d8e3928 100644
--- a/math/test-fpucw.c
+++ b/math/test-fpucw.c
@@ -23,8 +23,8 @@ 
 # define FPU_CONTROL _FPU_DEFAULT
 #endif
 
-int
-main (void)
+static int
+do_test (void)
 {
 #ifdef _FPU_GETCW
 /* Some architectures don't have _FPU_GETCW (e.g. Linux/Alpha).  */
@@ -44,3 +44,6 @@  main (void)
   return 0;
 #endif
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/test-matherr.c b/math/test-matherr.c
index cd09a39..6983879 100644
--- a/math/test-matherr.c
+++ b/math/test-matherr.c
@@ -12,10 +12,13 @@  matherr (struct exception *s)
   return 1;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   _LIB_VERSION = _SVID_;
   acos (2.0);
   return fail;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/test-misc.c b/math/test-misc.c
index 3fd2bca..4801bfe 100644
--- a/math/test-misc.c
+++ b/math/test-misc.c
@@ -25,8 +25,8 @@ 
 #include <math-tests.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -1201,3 +1201,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/test-powl.c b/math/test-powl.c
index fd2a1cb..66ef886 100644
--- a/math/test-powl.c
+++ b/math/test-powl.c
@@ -21,8 +21,8 @@ 
 #include <float.h>
 #include <ieee754.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -48,3 +48,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/tst-definitions.c b/math/tst-definitions.c
index 2501c8c..76a4125 100644
--- a/math/tst-definitions.c
+++ b/math/tst-definitions.c
@@ -21,8 +21,8 @@ 
 #include <stdio.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -44,3 +44,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/misc/tst-dirname.c b/misc/tst-dirname.c
index d8f33df..d6c05ad 100644
--- a/misc/tst-dirname.c
+++ b/misc/tst-dirname.c
@@ -37,8 +37,8 @@  test (const char *input, const char *result)
   return retval;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -67,3 +67,6 @@  main (void)
 
   return result != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/misc/tst-efgcvt.c b/misc/tst-efgcvt.c
index 303042d..11427a0 100644
--- a/misc/tst-efgcvt.c
+++ b/misc/tst-efgcvt.c
@@ -200,8 +200,8 @@  special (void)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   test (ecvt_tests, ecvt, "ecvt");
   test (fcvt_tests, fcvt, "fcvt");
@@ -211,3 +211,6 @@  main (void)
 
   return error_count;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/misc/tst-fdset.c b/misc/tst-fdset.c
index 78a34e9..ef93ac3 100644
--- a/misc/tst-fdset.c
+++ b/misc/tst-fdset.c
@@ -20,8 +20,8 @@ 
 #include <stdio.h>
 #include <sys/types.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   int retval = 0;
   int i;
@@ -62,3 +62,6 @@  main (void)
 
   return retval;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/misc/tst-hsearch.c b/misc/tst-hsearch.c
index 6c19b22..d390f1d 100644
--- a/misc/tst-hsearch.c
+++ b/misc/tst-hsearch.c
@@ -1,8 +1,8 @@ 
 #include <search.h>
 #include <stdio.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   int a = 1;
   int b = 2;
@@ -29,3 +29,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/misc/tst-mntent2.c b/misc/tst-mntent2.c
index 6c25e01..e61d506 100644
--- a/misc/tst-mntent2.c
+++ b/misc/tst-mntent2.c
@@ -3,8 +3,8 @@ 
 #include <string.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   struct mntent mef;
@@ -39,3 +39,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-_res1.c b/nptl/tst-_res1.c
index 0ae38d0..bc44d8a 100644
--- a/nptl/tst-_res1.c
+++ b/nptl/tst-_res1.c
@@ -25,7 +25,8 @@ 
 #include <stdlib.h>
 #include <stdio.h>
 
-void *tf (void *resp)
+void *
+tf (void *resp)
 {
   if (resp == &_res || resp == __res_state ())
     abort ();
@@ -33,7 +34,8 @@  void *tf (void *resp)
   return NULL;
 }
 
-void do_test (struct __res_state *resp)
+void
+test_res (struct __res_state *resp)
 {
   if (resp != &_res || resp != __res_state ())
     abort ();
@@ -41,7 +43,8 @@  void do_test (struct __res_state *resp)
     abort ();
 }
 
-int main (void)
+static int
+do_test (void)
 {
 #undef _res
   extern struct __res_state _res;
@@ -54,7 +57,7 @@  int main (void)
       exit (1);
     }
 
-  do_test (&_res);
+  test_res (&_res);
 
   if (pthread_join (th, NULL) != 0)
     {
@@ -62,7 +65,10 @@  int main (void)
       exit (1);
     }
 
-  do_test (&_res);
+  test_res (&_res);
 
   exit (0);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-fork1.c b/nptl/tst-fork1.c
index 1f7939c..87b28c7 100644
--- a/nptl/tst-fork1.c
+++ b/nptl/tst-fork1.c
@@ -64,8 +64,8 @@  thread_function (void * arg)
 #define N 5
 static const int t[N] = { 7, 6, 5, 4, 3 };
 
-int
-main (void)
+static int
+do_test (void)
 {
   pthread_t th[N];
   int i;
@@ -117,3 +117,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-fork2.c b/nptl/tst-fork2.c
index 874f020..87d35ce 100644
--- a/nptl/tst-fork2.c
+++ b/nptl/tst-fork2.c
@@ -41,8 +41,8 @@  tf (void *arg)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   initial_pid = getpid ();
 
@@ -87,3 +87,6 @@  main (void)
 
   return status;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-fork3.c b/nptl/tst-fork3.c
index 1aa6366..ac80942 100644
--- a/nptl/tst-fork3.c
+++ b/nptl/tst-fork3.c
@@ -87,8 +87,8 @@  tf1 (void *arg)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   initial_pid = getpid ();
 
@@ -104,3 +104,6 @@  main (void)
 
   return 1;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-raise1.c b/nptl/tst-raise1.c
index 92b2735..bdd31dd 100644
--- a/nptl/tst-raise1.c
+++ b/nptl/tst-raise1.c
@@ -30,8 +30,8 @@  sh (int sig)
   ++count;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct sigaction sa;
   sa.sa_handler = sh;
@@ -59,3 +59,6 @@  main (void)
     }
   exit (0);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-sem11.c b/nptl/tst-sem11.c
index 5248eba..f7cb435 100644
--- a/nptl/tst-sem11.c
+++ b/nptl/tst-sem11.c
@@ -11,15 +11,15 @@ 
 static void *
 tf (void *arg)
 {
-#ifdef PREPARE
-  PREPARE
+#ifdef PREPARE_TIMEDWAIT
+  PREPARE_TIMEDWAIT
 #endif
   SEM_WAIT (arg);
   return NULL;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   int tries = 5;
   pthread_t th;
@@ -76,3 +76,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-sem12.c b/nptl/tst-sem12.c
index 71d02b7..88a2248 100644
--- a/nptl/tst-sem12.c
+++ b/nptl/tst-sem12.c
@@ -2,7 +2,7 @@ 
 #include <sys/time.h>
 
 
-#define PREPARE \
+#define PREPARE_TIMEDWAIT \
   struct timespec ts; \
   struct timeval tv; \
   gettimeofday (&tv, NULL); \
diff --git a/nptl/tst-sem7.c b/nptl/tst-sem7.c
index d0e7f05..4fc5f1f 100644
--- a/nptl/tst-sem7.c
+++ b/nptl/tst-sem7.c
@@ -31,8 +31,8 @@  remove_sem (int status, void *arg)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   sem_t *s;
   sem_t *s2;
@@ -106,3 +106,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-sem8.c b/nptl/tst-sem8.c
index 1aeb1e1..4d7197c 100644
--- a/nptl/tst-sem8.c
+++ b/nptl/tst-sem8.c
@@ -31,8 +31,8 @@  remove_sem (int status, void *arg)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   sem_t *s;
   int i;
@@ -71,3 +71,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-sem9.c b/nptl/tst-sem9.c
index 9727486..b7d81a9 100644
--- a/nptl/tst-sem9.c
+++ b/nptl/tst-sem9.c
@@ -31,8 +31,8 @@  remove_sem (int status, void *arg)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   sem_t *s;
   int i;
@@ -78,3 +78,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nss/test-netdb.c b/nss/test-netdb.c
index 1620b5b..384f32b 100644
--- a/nss/test-netdb.c
+++ b/nss/test-netdb.c
@@ -356,8 +356,8 @@  setdb (const char *dbname)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   /*
     setdb ("db");
@@ -376,3 +376,6 @@  main (void)
 
   return (error_count != 0);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/test-vfork.c b/posix/test-vfork.c
index 6dfb7d4..529d698 100644
--- a/posix/test-vfork.c
+++ b/posix/test-vfork.c
@@ -9,8 +9,8 @@  void __attribute_noinline__ noop (void);
 
 #define NR	2	/* Exit code of the child.  */
 
-int
-main (void)
+static int
+do_test (void)
 {
   pid_t pid;
   int status;
@@ -40,3 +40,6 @@  void
 noop (void)
 {
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-fnmatch.c b/posix/tst-fnmatch.c
index ff2674c..021734d 100644
--- a/posix/tst-fnmatch.c
+++ b/posix/tst-fnmatch.c
@@ -33,8 +33,8 @@  static char *flag_output (int flags);
 static char *escape (const char *str, size_t *reslenp, char **resbuf);
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   char *linebuf = NULL;
   size_t linebuflen = 0;
@@ -388,3 +388,6 @@  escape (const char *str, size_t *reslenp, char **resbufp)
 
   return resbuf;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-fork.c b/posix/tst-fork.c
index 41b75b0..c02abe9 100644
--- a/posix/tst-fork.c
+++ b/posix/tst-fork.c
@@ -29,8 +29,8 @@  static const char testdata[] = "This is a test";
 static const char testdata2[] = "And here we go again";
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   const char *tmpdir = getenv ("TMPDIR");
   char buf[100];
@@ -149,3 +149,6 @@  main (void)
 
   return status;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-getlogin.c b/posix/tst-getlogin.c
index 1393c3a..141a699 100644
--- a/posix/tst-getlogin.c
+++ b/posix/tst-getlogin.c
@@ -19,8 +19,8 @@ 
 #include <stdio.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   char *login;
   int errors = 0;
@@ -55,3 +55,6 @@  main (void)
 
   return errors != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-gnuglob.c b/posix/tst-gnuglob.c
index 1c72357..39b5b24 100644
--- a/posix/tst-gnuglob.c
+++ b/posix/tst-gnuglob.c
@@ -379,8 +379,8 @@  test_result (const char *fmt, int flags, glob_t *gl, const char *str[])
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   glob_t gl;
   int errval;
@@ -497,3 +497,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-mmap.c b/posix/tst-mmap.c
index c03acf5..5e52b49 100644
--- a/posix/tst-mmap.c
+++ b/posix/tst-mmap.c
@@ -6,8 +6,8 @@ 
 #include <sys/mman.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   FILE *fp;
@@ -195,3 +195,6 @@  main (void)
   /* That's it.  */
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/pwd/tst-getpw.c b/pwd/tst-getpw.c
index 7875af9..7a2b9a3 100644
--- a/pwd/tst-getpw.c
+++ b/pwd/tst-getpw.c
@@ -25,8 +25,8 @@  check (uid_t uid)
   (void) getpw (uid, buf);
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   uid_t uid;
 
@@ -38,3 +38,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/resolv/tst-inet_ntop.c b/resolv/tst-inet_ntop.c
index f968ec4..f0de063 100644
--- a/resolv/tst-inet_ntop.c
+++ b/resolv/tst-inet_ntop.c
@@ -4,8 +4,8 @@ 
 #include <stdio.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct in_addr addr4;
   struct in6_addr addr6;
@@ -109,3 +109,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/rt/tst-timer.c b/rt/tst-timer.c
index f35d3e7..87f6491 100644
--- a/rt/tst-timer.c
+++ b/rt/tst-timer.c
@@ -20,8 +20,8 @@ 
 
 /* This file is only used if there is no other implementation and it should
    means that there is no implementation of POSIX timers.  */
-int
-main (void)
+static int
+do_test (void)
 {
 #ifdef _POSIX_TIMERS
   /* There should be a test.  */
@@ -30,3 +30,6 @@  main (void)
   return 0;
 #endif
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/setjmp/tst-setjmp.c b/setjmp/tst-setjmp.c
index 2484fc5..301676a 100644
--- a/setjmp/tst-setjmp.c
+++ b/setjmp/tst-setjmp.c
@@ -28,8 +28,8 @@  jump (int val)
   longjmp (env, val);
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   int value;
 
@@ -115,3 +115,6 @@  main (void)
 
   return lose ? EXIT_FAILURE : EXIT_SUCCESS;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/signal/tst-raise.c b/signal/tst-raise.c
index 92b2735..bdd31dd 100644
--- a/signal/tst-raise.c
+++ b/signal/tst-raise.c
@@ -30,8 +30,8 @@  sh (int sig)
   ++count;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct sigaction sa;
   sa.sa_handler = sh;
@@ -59,3 +59,6 @@  main (void)
     }
   exit (0);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/signal/tst-signal.c b/signal/tst-signal.c
index 6d31787..44b8ce0 100644
--- a/signal/tst-signal.c
+++ b/signal/tst-signal.c
@@ -12,8 +12,8 @@  handler (int sig)
   win = 1;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   if (signal (SIGTERM, handler) == SIG_ERR)
     {
@@ -42,3 +42,6 @@  main (void)
 
   return EXIT_SUCCESS;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/test-fseek.c b/stdio-common/test-fseek.c
index fe57df6..8a7f1ae 100644
--- a/stdio-common/test-fseek.c
+++ b/stdio-common/test-fseek.c
@@ -19,8 +19,8 @@ 
 
 #define TESTFILE "/tmp/test.dat"
 
-int
-main (void)
+static int
+do_test (void)
 {
   FILE *fp;
   int i, j;
@@ -82,3 +82,6 @@  main (void)
   puts ((i > 255) ? "Test succeeded." : "Test FAILED!");
   return (i > 255) ? 0 : 1;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/test-popen.c b/stdio-common/test-popen.c
index d36cd61..1f1c88a 100644
--- a/stdio-common/test-popen.c
+++ b/stdio-common/test-popen.c
@@ -49,8 +49,8 @@  read_data (FILE *stream)
     }
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   FILE *output, *input;
   int wstatus, rstatus;
@@ -100,3 +100,6 @@  main (void)
   puts (wstatus | rstatus  ? "Test FAILED!" : "Test succeeded.");
   return (wstatus | rstatus);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/test-vfprintf.c b/stdio-common/test-vfprintf.c
index a936c28..9cc56d7 100644
--- a/stdio-common/test-vfprintf.c
+++ b/stdio-common/test-vfprintf.c
@@ -36,8 +36,8 @@  const char *locs[] =
 
 char large[50000];
 
-int
-main (void)
+static int
+do_test (void)
 {
   char buf[25];
   size_t i;
@@ -124,3 +124,6 @@  main (void)
 
   return res;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-cookie.c b/stdio-common/tst-cookie.c
index dcdabf3..030e684 100644
--- a/stdio-common/tst-cookie.c
+++ b/stdio-common/tst-cookie.c
@@ -63,8 +63,8 @@  cookieclose (void *cookie)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   cookie_io_functions_t fcts;
   char buf[1];
@@ -90,3 +90,6 @@  main (void)
 
   return errors != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-fileno.c b/stdio-common/tst-fileno.c
index a0c8853..753df9f 100644
--- a/stdio-common/tst-fileno.c
+++ b/stdio-common/tst-fileno.c
@@ -28,10 +28,13 @@  check (const char *name, FILE *stream, int fd)
   return sfd != fd;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   return (check ("stdin", stdin, STDIN_FILENO) ||
 	  check ("stdout", stdout, STDOUT_FILENO) ||
 	  check ("stderr", stderr, STDERR_FILENO));
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-fseek.c b/stdio-common/tst-fseek.c
index 1ab4702..5b9c751 100644
--- a/stdio-common/tst-fseek.c
+++ b/stdio-common/tst-fseek.c
@@ -27,8 +27,8 @@ 
 #include <sys/stat.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   const char *tmpdir;
   char *fname;
@@ -476,3 +476,7 @@  main (void)
 
   return result;
 }
+
+#define TIMEOUT 3
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-gets.c b/stdio-common/tst-gets.c
index 7f78fc1..052f1f9 100644
--- a/stdio-common/tst-gets.c
+++ b/stdio-common/tst-gets.c
@@ -21,8 +21,8 @@ 
 #include <string.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   char buf[100];
   int result = 0;
@@ -61,3 +61,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-obprintf.c b/stdio-common/tst-obprintf.c
index 39e8fda..5151593 100644
--- a/stdio-common/tst-obprintf.c
+++ b/stdio-common/tst-obprintf.c
@@ -4,8 +4,8 @@ 
 #include <stdlib.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct obstack ob;
   int n;
@@ -40,3 +40,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-perror.c b/stdio-common/tst-perror.c
index b809c2f..416b120 100644
--- a/stdio-common/tst-perror.c
+++ b/stdio-common/tst-perror.c
@@ -24,8 +24,8 @@ 
 #define WC_EXP_LEN (sizeof (WC_EXP) - 1)
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int fd;
   char fname[] = "/tmp/tst-perror.XXXXXX";
@@ -152,3 +152,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-sprintf.c b/stdio-common/tst-sprintf.c
index c4e911f..2fe373f 100644
--- a/stdio-common/tst-sprintf.c
+++ b/stdio-common/tst-sprintf.c
@@ -4,8 +4,8 @@ 
 #include <string.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   char buf[100];
   int result = 0;
@@ -73,3 +73,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-sprintf2.c b/stdio-common/tst-sprintf2.c
index 422278d..0ddf15b 100644
--- a/stdio-common/tst-sprintf2.c
+++ b/stdio-common/tst-sprintf2.c
@@ -3,8 +3,8 @@ 
 #include <stdio.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
 #if LDBL_MANT_DIG >= 106
   volatile union { long double l; long long x[2]; } u, v;
@@ -82,3 +82,6 @@  main (void)
 #endif
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-sprintf3.c b/stdio-common/tst-sprintf3.c
index e54b23b..e927761 100644
--- a/stdio-common/tst-sprintf3.c
+++ b/stdio-common/tst-sprintf3.c
@@ -22,8 +22,8 @@ 
 #include <stdio.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
 #if LDBL_MANT_DIG >= 106
   volatile union { long double l; long long x[2]; } u, v;
@@ -88,3 +88,6 @@  main (void)
 #endif
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-sscanf.c b/stdio-common/tst-sscanf.c
index 9fef93a..2e25a02 100644
--- a/stdio-common/tst-sscanf.c
+++ b/stdio-common/tst-sscanf.c
@@ -124,8 +124,8 @@  struct test2
   { L("0x.e+0"), L("%g%c"), 2, '+' },
 };
 
-int
-main (void)
+static int
+do_test (void)
 {
   double d[6];
   long l[6];
@@ -235,3 +235,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-swprintf.c b/stdio-common/tst-swprintf.c
index e65234b..ce62c6b 100644
--- a/stdio-common/tst-swprintf.c
+++ b/stdio-common/tst-swprintf.c
@@ -12,8 +12,8 @@ 
 
 const char input[] = "\x8e\xa1g\x8e\xa2h\x8e\xa3i\x8e\xa4j";
 
-int
-main (void)
+static int
+do_test (void)
 {
   wchar_t buf[1000];
 #define nbuf (sizeof (buf) / sizeof (buf[0]))
@@ -54,3 +54,6 @@  swprintf (.., .., L\"%ls\", \"%ls\") produced \"%ls\", not \"%ls\"\n",	      \
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-tmpnam.c b/stdio-common/tst-tmpnam.c
index a3bd9fb..3b97064 100644
--- a/stdio-common/tst-tmpnam.c
+++ b/stdio-common/tst-tmpnam.c
@@ -19,8 +19,8 @@ 
 #include <stdlib.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   const char *name;
   int retval = 0;
@@ -48,3 +48,6 @@  main (void)
 
   return retval;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-unbputc.c b/stdio-common/tst-unbputc.c
index bbd8622..7200a82 100644
--- a/stdio-common/tst-unbputc.c
+++ b/stdio-common/tst-unbputc.c
@@ -1,11 +1,14 @@ 
 #include <stdio.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   putc ('1', stderr);
   putc ('2', stderr);
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-wc-printf.c b/stdio-common/tst-wc-printf.c
index abbeeb5..2a2acb5 100644
--- a/stdio-common/tst-wc-printf.c
+++ b/stdio-common/tst-wc-printf.c
@@ -4,8 +4,8 @@ 
 #include <string.h>
 #include <wctype.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   wchar_t tmp[3];
   tmp[0] = '8';
@@ -20,3 +20,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-environ.c b/stdlib/tst-environ.c
index 3316d7e..b1de2f9 100644
--- a/stdlib/tst-environ.c
+++ b/stdlib/tst-environ.c
@@ -25,8 +25,8 @@ 
 
 char putenv_val[100] = VAR "=some longer value";
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   const char *valp;
@@ -219,3 +219,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-fmtmsg.c b/stdlib/tst-fmtmsg.c
index c3748d6..b7948c5 100644
--- a/stdlib/tst-fmtmsg.c
+++ b/stdlib/tst-fmtmsg.c
@@ -7,8 +7,8 @@ 
 
 #define MM_TEST 10
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -80,3 +80,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-limits.c b/stdlib/tst-limits.c
index 265b9db..6e51dca 100644
--- a/stdlib/tst-limits.c
+++ b/stdlib/tst-limits.c
@@ -16,8 +16,8 @@  bitval (int bits)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -67,3 +67,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-makecontext3.c b/stdlib/tst-makecontext3.c
index 545b865..dc1bfff 100644
--- a/stdlib/tst-makecontext3.c
+++ b/stdlib/tst-makecontext3.c
@@ -115,8 +115,8 @@  check_called (void)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   atexit (check_called);
 
@@ -218,3 +218,6 @@  main (void)
   puts ("test succeeded");
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-rand48-2.c b/stdlib/tst-rand48-2.c
index 3079b98..8b8fef4 100644
--- a/stdlib/tst-rand48-2.c
+++ b/stdlib/tst-rand48-2.c
@@ -3,8 +3,8 @@ 
 #include <stdlib.h>
 #include <time.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   time_t t = time (NULL);
   int i, ret = 0;
@@ -111,3 +111,6 @@  main (void)
 
   return ret;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-rand48.c b/stdlib/tst-rand48.c
index 52e1b96..973c62e 100644
--- a/stdlib/tst-rand48.c
+++ b/stdlib/tst-rand48.c
@@ -8,8 +8,8 @@ 
 #endif
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   unsigned short int xs[3] = { 0x0001, 0x0012, 0x0123 };
   unsigned short int lxs[7];
@@ -388,3 +388,6 @@  drand48() and erand48 in lines %d and %d produce different results\n",
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-random.c b/stdlib/tst-random.c
index 47195d6..8fe0993 100644
--- a/stdlib/tst-random.c
+++ b/stdlib/tst-random.c
@@ -46,8 +46,8 @@  const unsigned int seed[3] = { 0x12344321U, 0xEE11DD22U, 0xFEDCBA98 };
 
 void fail (const char *msg, int s, int i) __attribute__ ((__noreturn__));
 
-int
-main (void)
+static int
+do_test (void)
 {
   long int rnd[nseq][nrnd];	/* pseudorandom numbers */
   char* state[nseq];		/* state for PRNG */
@@ -117,3 +117,6 @@  fail (const char *msg, int s, int i)
   printf ("%s (seq %d, pos %d).\n", msg, s, i);
   exit (1);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-random2.c b/stdlib/tst-random2.c
index 0553b62..da840f3 100644
--- a/stdlib/tst-random2.c
+++ b/stdlib/tst-random2.c
@@ -20,8 +20,8 @@ 
 #include <stdio.h>
 #include <stdlib.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   int pass;
   int ret = 0;
@@ -56,3 +56,6 @@  main (void)
     }
   return ret;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-setcontext.c b/stdlib/tst-setcontext.c
index 74d5133..e05ed6b 100644
--- a/stdlib/tst-setcontext.c
+++ b/stdlib/tst-setcontext.c
@@ -139,8 +139,8 @@  check_called (void)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   atexit (check_called);
 
@@ -242,3 +242,6 @@  main (void)
   puts ("test succeeded");
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtol.c b/stdlib/tst-strtol.c
index eebd8f7..448102a 100644
--- a/stdlib/tst-strtol.c
+++ b/stdlib/tst-strtol.c
@@ -534,8 +534,8 @@  static const struct ltest tests[] =
 /* Prototypes for local functions.  */
 static void expand (char *dst, int c);
 
-int
-main (void)
+static int
+do_test (void)
 {
   const struct ltest *lt;
   char *ep;
@@ -623,3 +623,6 @@  expand (dst, c)
   else
     (void) sprintf (dst, "%#.3o", (unsigned int) c);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtoll.c b/stdlib/tst-strtoll.c
index 0c77254..93f1a56 100644
--- a/stdlib/tst-strtoll.c
+++ b/stdlib/tst-strtoll.c
@@ -309,8 +309,8 @@  static const struct ltest tests[] =
 /* Prototypes for local functions.  */
 static void expand (char *dst, int c);
 
-int
-main (void)
+static int
+do_test (void)
 {
   const struct ltest *lt;
   char *ep;
@@ -398,3 +398,6 @@  expand (dst, c)
   else
     (void) sprintf (dst, "%#.3o", (unsigned int) c);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-tls-atexit.c b/stdlib/tst-tls-atexit.c
index 1ba3fae..c03a3e5 100644
--- a/stdlib/tst-tls-atexit.c
+++ b/stdlib/tst-tls-atexit.c
@@ -60,8 +60,8 @@  load (void *u)
   return NULL;
 }
 
-int
-main (void)
+static int
+do_test (void)
 {
   pthread_t t;
   int ret;
@@ -109,3 +109,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-xpg-basename.c b/stdlib/tst-xpg-basename.c
index 61e2e4b..facc783 100644
--- a/stdlib/tst-xpg-basename.c
+++ b/stdlib/tst-xpg-basename.c
@@ -37,8 +37,8 @@  static struct
 };
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   size_t i = 0;
   int errors = 0;
@@ -64,3 +64,6 @@  main (void)
 
   return errors;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/string/test-ffs.c b/string/test-ffs.c
index 7ac1dd6..a64a1cc 100644
--- a/string/test-ffs.c
+++ b/string/test-ffs.c
@@ -21,8 +21,8 @@ 
 #include <stdio.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   int failures = 0;
   int i;
@@ -61,3 +61,6 @@  main (void)
 
   return failures;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/string/tst-bswap.c b/string/tst-bswap.c
index cca704c..6c1c911 100644
--- a/string/tst-bswap.c
+++ b/string/tst-bswap.c
@@ -21,8 +21,8 @@ 
 
 extern unsigned long long int wash (unsigned long long int a);
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -71,3 +71,6 @@  wash (unsigned long long int a)
      regards the argument to the bswap_*() functions as constant.  */
   return a + 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/string/tst-inlcall.c b/string/tst-inlcall.c
index 32d8863..0f8b1bd 100644
--- a/string/tst-inlcall.c
+++ b/string/tst-inlcall.c
@@ -31,8 +31,8 @@ 
 #include <fcntl.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int status;
   int errors = 0;
@@ -80,3 +80,6 @@  main (void)
     }
   return status;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/string/tst-strtok.c b/string/tst-strtok.c
index 7e34aee..6fbef9f 100644
--- a/string/tst-strtok.c
+++ b/string/tst-strtok.c
@@ -2,8 +2,8 @@ 
 #include <stdio.h>
 #include <string.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   char buf[1] = { 0 };
   int result = 0;
@@ -21,3 +21,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/string/tst-strxfrm.c b/string/tst-strxfrm.c
index 2ae2e29..f48cfc0 100644
--- a/string/tst-strxfrm.c
+++ b/string/tst-strxfrm.c
@@ -58,8 +58,8 @@  test (const char *locale)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -69,3 +69,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/sysdeps/pthread/tst-timer.c b/sysdeps/pthread/tst-timer.c
index 16adf3c..81f3efd 100644
--- a/sysdeps/pthread/tst-timer.c
+++ b/sysdeps/pthread/tst-timer.c
@@ -62,8 +62,8 @@  intr_sleep (int sec)
 #define ZSIGALRM 14
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct timespec ts;
   timer_t timer_sig, timer_thr1, timer_thr2;
@@ -157,3 +157,7 @@  main (void)
 
   return 0;
 }
+
+#define TIMEOUT 8
+#define TEST_FUNCTION do_test ()
+#include "../../test-skeleton.c"
diff --git a/sysdeps/x86_64/tst-audit10.c b/sysdeps/x86_64/tst-audit10.c
index 24c9696..8d6721a 100644
--- a/sysdeps/x86_64/tst-audit10.c
+++ b/sysdeps/x86_64/tst-audit10.c
@@ -45,8 +45,8 @@  avx512_enabled (void)
 
 extern __m512i audit_test (__m512i, __m512i, __m512i, __m512i,
 			   __m512i, __m512i, __m512i, __m512i);
-int
-main (void)
+static int
+do_test (void)
 {
   /* Run AVX512 test only if AVX512 is supported.  */
   if (avx512_enabled ())
@@ -62,9 +62,12 @@  main (void)
   return 0;
 }
 #else
-int
-main (void)
+static int
+do_test (void)
 {
   return 0;
 }
 #endif
+
+#define TEST_FUNCTION do_test ()
+#include "../../test-skeleton.c"
diff --git a/sysdeps/x86_64/tst-audit3.c b/sysdeps/x86_64/tst-audit3.c
index d00db99..0602aa2 100644
--- a/sysdeps/x86_64/tst-audit3.c
+++ b/sysdeps/x86_64/tst-audit3.c
@@ -7,8 +7,8 @@ 
 
 extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i,
 			   __m128i, __m128i, __m128i, __m128i);
-int
-main (void)
+static int
+do_test (void)
 {
   __m128i xmm = _mm_setzero_si128 ();
   __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm);
@@ -18,3 +18,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../../test-skeleton.c"
diff --git a/sysdeps/x86_64/tst-audit4.c b/sysdeps/x86_64/tst-audit4.c
index c4f1d5b..44d5123 100644
--- a/sysdeps/x86_64/tst-audit4.c
+++ b/sysdeps/x86_64/tst-audit4.c
@@ -25,8 +25,8 @@  avx_enabled (void)
 
 extern __m256i audit_test (__m256i, __m256i, __m256i, __m256i,
 			   __m256i, __m256i, __m256i, __m256i);
-int
-main (void)
+static int
+do_test (void)
 {
   /* Run AVX test only if AVX is supported.  */
   if (avx_enabled ())
@@ -41,9 +41,12 @@  main (void)
   return 0;
 }
 #else
-int
-main (void)
+static int
+do_test (void)
 {
   return 0;
 }
 #endif
+
+#define TEST_FUNCTION do_test ()
+#include "../../test-skeleton.c"
diff --git a/sysdeps/x86_64/tst-audit5.c b/sysdeps/x86_64/tst-audit5.c
index 0094fee..225b4c8 100644
--- a/sysdeps/x86_64/tst-audit5.c
+++ b/sysdeps/x86_64/tst-audit5.c
@@ -7,8 +7,8 @@ 
 
 extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i,
 			   __m128i, __m128i, __m128i, __m128i);
-int
-main (void)
+static int
+do_test (void)
 {
   __m128i xmm = _mm_setzero_si128 ();
   __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm);
@@ -19,3 +19,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../../test-skeleton.c"
diff --git a/sysdeps/x86_64/tst-audit6.c b/sysdeps/x86_64/tst-audit6.c
index 64209a1..f2f6a48 100644
--- a/sysdeps/x86_64/tst-audit6.c
+++ b/sysdeps/x86_64/tst-audit6.c
@@ -25,8 +25,8 @@  avx_enabled (void)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   /* Run AVX test only if AVX is supported.  */
   if (avx_enabled ())
@@ -40,3 +40,6 @@  main (void)
     }
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../../test-skeleton.c"
diff --git a/time/tst-ftime_l.c b/time/tst-ftime_l.c
index fc3d78d..6690efe 100644
--- a/time/tst-ftime_l.c
+++ b/time/tst-ftime_l.c
@@ -6,8 +6,8 @@ 
 #include <wchar.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   locale_t l;
   locale_t old;
@@ -124,3 +124,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/time/tst-getdate.c b/time/tst-getdate.c
index fd87923..b3377ee 100644
--- a/time/tst-getdate.c
+++ b/time/tst-getdate.c
@@ -76,8 +76,8 @@  report_date_error (int err)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int errors = 0;
   size_t i;
@@ -121,3 +121,6 @@  main (void)
     printf ("No errors found.\n");
   return errors != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/time/tst-mktime.c b/time/tst-mktime.c
index 416a856..c147360 100644
--- a/time/tst-mktime.c
+++ b/time/tst-mktime.c
@@ -3,8 +3,8 @@ 
 #include <string.h>
 #include <time.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   struct tm time_str, *tm;
   time_t t;
@@ -68,3 +68,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/time/tst-mktime3.c b/time/tst-mktime3.c
index 60d0e0b..c738e53 100644
--- a/time/tst-mktime3.c
+++ b/time/tst-mktime3.c
@@ -17,8 +17,8 @@  struct tm expected[] =
   { .tm_sec = 5, .tm_mday = 1, .tm_year = 102, .tm_wday = 2 }
 };
 
-int
-main (void)
+static int
+do_test (void)
 {
   setenv ("TZ", "UTC", 1);
   int i;
@@ -48,3 +48,6 @@  main (void)
     }
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/time/tst-posixtz.c b/time/tst-posixtz.c
index 019d92a..c1ea267 100644
--- a/time/tst-posixtz.c
+++ b/time/tst-posixtz.c
@@ -28,8 +28,8 @@  struct
     "1999/02/25 15:18:12 dst=0 zone=EST" },
 };
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   size_t cnt;
@@ -116,3 +116,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/time/tst-strptime2.c b/time/tst-strptime2.c
index 73552bb..bcd6cc8 100644
--- a/time/tst-strptime2.c
+++ b/time/tst-strptime2.c
@@ -26,8 +26,8 @@  static const struct
 #define ntests (sizeof (tests) / sizeof (tests[0]))
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -57,3 +57,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/time/tst-strptime3.c b/time/tst-strptime3.c
index 9a8c648..75b57c1 100644
--- a/time/tst-strptime3.c
+++ b/time/tst-strptime3.c
@@ -4,8 +4,8 @@ 
 #include <time.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   struct tm tm;
@@ -53,3 +53,6 @@  main (void)
 
   return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/wcsmbs/tst-btowc.c b/wcsmbs/tst-btowc.c
index d793622..dc34f2b 100644
--- a/wcsmbs/tst-btowc.c
+++ b/wcsmbs/tst-btowc.c
@@ -74,8 +74,8 @@  eof_test (void)
 
 
 /* Test the btowc() function for a few locales with known character sets.  */
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -172,3 +172,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/wcsmbs/tst-mbrtowc.c b/wcsmbs/tst-mbrtowc.c
index 3e1eb72..a30b619 100644
--- a/wcsmbs/tst-mbrtowc.c
+++ b/wcsmbs/tst-mbrtowc.c
@@ -151,8 +151,8 @@  utf8_test (void)
 }
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -230,3 +230,6 @@  check_ascii (const char *locname)
 
   return res != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/wcsmbs/tst-mbsrtowcs.c b/wcsmbs/tst-mbsrtowcs.c
index 8d7e2cb..405534d 100644
--- a/wcsmbs/tst-mbsrtowcs.c
+++ b/wcsmbs/tst-mbsrtowcs.c
@@ -21,8 +21,8 @@ 
 #include <string.h>
 #include <wchar.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   const unsigned char buf[] = { 'a', 'b', '\0', 'c', 'd', '\0', 'e' };
   wchar_t out[sizeof (buf)];
@@ -62,3 +62,6 @@  main (void)
     }
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/wcsmbs/tst-wchar-h.c b/wcsmbs/tst-wchar-h.c
index 4cf2dd0..fd2ad56 100644
--- a/wcsmbs/tst-wchar-h.c
+++ b/wcsmbs/tst-wchar-h.c
@@ -1,9 +1,12 @@ 
 #include <stdlib.h>
 #include <wchar.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   mbstate_t x;
   return sizeof (x) - sizeof (mbstate_t);
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/wcsmbs/tst-wcpncpy.c b/wcsmbs/tst-wcpncpy.c
index 74765e7..4cf4aec 100644
--- a/wcsmbs/tst-wcpncpy.c
+++ b/wcsmbs/tst-wcpncpy.c
@@ -20,8 +20,8 @@ 
 #include <wchar.h>
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -74,3 +74,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/wcsmbs/tst-wcrtomb.c b/wcsmbs/tst-wcrtomb.c
index 3f052f3..cad343e 100644
--- a/wcsmbs/tst-wcrtomb.c
+++ b/wcsmbs/tst-wcrtomb.c
@@ -26,8 +26,8 @@ 
 static int check_ascii (const char *locname);
 
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
 
@@ -92,3 +92,6 @@  check_ascii (const char *locname)
 
   return res != 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/wcsmbs/tst-wcsnlen.c b/wcsmbs/tst-wcsnlen.c
index 60e64ad..8d4b8b5 100644
--- a/wcsmbs/tst-wcsnlen.c
+++ b/wcsmbs/tst-wcsnlen.c
@@ -27,8 +27,8 @@ 
       printf ("wcsnlen (L\"%s\", %d) = %d, not %d\n", Str, Max, n, Exp);      \
     }
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   int n;
@@ -48,3 +48,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/wcsmbs/tst-wcstof.c b/wcsmbs/tst-wcstof.c
index 197cb5c..576a58c 100644
--- a/wcsmbs/tst-wcstof.c
+++ b/wcsmbs/tst-wcstof.c
@@ -4,8 +4,8 @@ 
 #include <string.h>
 #include <wctype.h>
 
-int
-main (void)
+static int
+do_test (void)
 {
   int result = 0;
   char buf[100];
@@ -21,3 +21,6 @@  main (void)
 
   return result;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"