#include <dlfcn.h>
#include <stdio.h>

static int
do_test (void)
{
  char modname[sizeof "tst-tlsmod18aXX.so"];
  void *h[20];
  for (int i = 0; i < 20; i++)
    {
      snprintf (modname, sizeof modname, "tst-tlsmod18a%d.so", i);
      h[i] = dlopen (modname, RTLD_LAZY);
      if (h[i] == NULL)
	{
	  printf ("unexpectedly failed to open %s", modname);
	  exit (1);
	}
    }

  for (int i = 0; i < 20; i++)
    {
      int (*fp) (void) = (int (*) (void)) dlsym (h[i], "test");
      if (fp == NULL)
	{
	  printf ("cannot find test in tst-tlsmod18a%d.so", i);
	  exit (1);
	}

      if (fp ())
	exit (1);
    }

  return 0;
}

#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
