Blame elf/ltglobmod2.c

Packit 6c4009
#include <dlfcn.h>
Packit 6c4009
#include <stdio.h>
Packit 6c4009
#include <stdlib.h>
Packit 6c4009
Packit 6c4009
extern int bar (void);
Packit 6c4009
extern int foo (void);
Packit 6c4009
Packit 6c4009
int
Packit 6c4009
foo (void)
Packit 6c4009
{
Packit 6c4009
  void *h;
Packit 6c4009
  int res;
Packit 6c4009
Packit 6c4009
  /* Load ltglobalmod1 in the global namespace.  */
Packit 6c4009
  h = dlopen ("ltglobmod1.so", RTLD_GLOBAL | RTLD_LAZY);
Packit 6c4009
  if (h == NULL)
Packit 6c4009
    {
Packit 6c4009
      printf ("%s: cannot open %s: %s",
Packit 6c4009
	      __FUNCTION__, "ltglobmod1.so", dlerror ());
Packit 6c4009
      exit (EXIT_FAILURE);
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  /* Call bar.  This is undefined in the DSO.  */
Packit 6c4009
  puts ("about to call `bar'");
Packit 6c4009
  fflush (stdout);
Packit 6c4009
  res = bar ();
Packit 6c4009
Packit 6c4009
  printf ("bar returned %d\n", res);
Packit 6c4009
Packit 6c4009
  dlclose (h);
Packit 6c4009
Packit 6c4009
  return res != 42;
Packit 6c4009
}