diff options
Diffstat (limited to 'test/tls/tst-tls18.c')
| -rw-r--r-- | test/tls/tst-tls18.c | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/test/tls/tst-tls18.c b/test/tls/tst-tls18.c new file mode 100644 index 000000000..00dcdff4e --- /dev/null +++ b/test/tls/tst-tls18.c @@ -0,0 +1,38 @@ +#include <dlfcn.h> +#include <stdio.h> +#include <stdlib.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" | 
