Blame elf/constload1.c

Packit Service 82fcde
#include <dlfcn.h>
Packit Service 82fcde
#include <errno.h>
Packit Service 82fcde
#include <error.h>
Packit Service 82fcde
#include <mcheck.h>
Packit Service 82fcde
#include <stdio.h>
Packit Service 82fcde
#include <stdlib.h>
Packit Service 82fcde
Packit Service 82fcde
int
Packit Service 82fcde
main (void)
Packit Service 82fcde
{
Packit Service 82fcde
  int (*foo) (void);
Packit Service 82fcde
  void *h;
Packit Service 82fcde
  int ret;
Packit Service 82fcde
Packit Service 82fcde
  mtrace ();
Packit Service 82fcde
Packit Service 82fcde
  h = dlopen ("constload2.so", RTLD_LAZY | RTLD_GLOBAL);
Packit Service 82fcde
  if (h == NULL)
Packit Service 82fcde
    error (EXIT_FAILURE, errno, "cannot load module \"constload2.so\"");
Packit Service 82fcde
  foo = dlsym (h, "foo");
Packit Service 82fcde
  ret = foo ();
Packit Service 82fcde
  /* Note that the following dlclose() call cannot unload the objects.
Packit Service 82fcde
     Due to the introduced relocation dependency constload2.so depends
Packit Service 82fcde
     on constload3.so and the dependencies of constload2.so on constload3.so
Packit Service 82fcde
     is not visible to ld.so since it's done using dlopen().  */
Packit Service 82fcde
  if (dlclose (h) != 0)
Packit Service 82fcde
    {
Packit Service 82fcde
      puts ("failed to close");
Packit Service 82fcde
      exit (EXIT_FAILURE);
Packit Service 82fcde
    }
Packit Service 82fcde
  return ret;
Packit Service 82fcde
}