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"
