/* Derived from a test case in
   http://sourceware.org/bugzilla/show_bug.cgi?id=1158.  */
#include <dlfcn.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

static int next = 3;

static void
f1 (void)
{
  puts ("f1");
  if (next-- != 1)
    _exit (1);
}

static void
f2 (void)
{
  puts ("f2");
  if (next-- != 2)
    _exit (1);
}

static void
f3 (void)
{
  puts ("f3");
  if (next-- != 3)
    _exit (1);
}

static int
do_test (void)
{
  atexit (f1);

  void *dso = dlopen ("$ORIGIN/bug-atexit2-lib.so", RTLD_NOW);
  void (*fn) (void) = (void (*) (void)) dlsym (dso, "foo");
  fn ();

  atexit (f2);

  dlclose (dso);

  atexit (f3);

  return 0;
}

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