1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-08 17:42:12 +03:00
This commit is contained in:
Jakub Jelinek
2007-07-12 18:26:36 +00:00
parent 7d58530341
commit 0ecb606cb6
6215 changed files with 494638 additions and 305010 deletions

View File

@@ -5,6 +5,8 @@
#include <stdlib.h>
#include <string.h>
#define MAPS ((struct link_map *) _r_debug.r_map)
static int
check_loaded_objects (const char **loaded)
{
@@ -24,10 +26,10 @@ check_loaded_objects (const char **loaded)
printf(" Name\n");
printf(" --------------------------------------------------------\n");
for (lm = _r_debug.r_map; lm; lm = lm->l_next)
for (lm = MAPS; lm; lm = lm->l_next)
{
if (lm->l_name && lm->l_name[0])
printf(" %s, count = %d\n", lm->l_name, (int) lm->l_opencount);
printf(" %s, count = %d\n", lm->l_name, (int) lm->l_direct_opencount);
if (lm->l_type == lt_loaded && lm->l_name)
{
int match = 0;
@@ -72,9 +74,9 @@ load_dso (const char **loading, int undef, int flag)
printf ("\nThis is what is in memory now:\n");
errors += check_loaded_objects (loaded);
printf ("Loading shared object %s: %s\n", loading [0],
printf ("Loading shared object %s: %s\n", loading[0],
flag == RTLD_LAZY ? "RTLD_LAZY" : "RTLD_NOW");
obj = dlopen (loading [0], flag);
obj = dlopen (loading[0], flag);
if (obj == NULL)
{
if (flag == RTLD_LAZY)
@@ -120,15 +122,15 @@ load_dso (const char **loading, int undef, int flag)
}
}
loaded[0] = loading [0];
loaded[1] = loading [1];
loaded[2] = loading [2];
loaded[0] = loading[0];
loaded[1] = loading[1];
loaded[2] = loading[2];
}
errors += check_loaded_objects (loaded);
if (obj)
{
printf ("UnLoading shared object %s\n", loading [0]);
printf ("UnLoading shared object %s\n", loading[0]);
dlclose (obj);
loaded[0] = NULL;
loaded[1] = NULL;
@@ -145,15 +147,15 @@ main (void)
int errors = 0;
const char *loading[3];
loading [0] = "circlemod1a.so";
loading [1] = "circlemod2a.so";
loading [2] = "circlemod3a.so";
loading[0] = "circlemod1a.so";
loading[1] = "circlemod2a.so";
loading[2] = "circlemod3a.so";
errors += load_dso (loading, 0, RTLD_LAZY);
errors += load_dso (loading, 0, RTLD_NOW);
loading [0] = "circlemod1.so";
loading [1] = "circlemod2.so";
loading [2] = "circlemod3.so";
loading[0] = "circlemod1.so";
loading[1] = "circlemod2.so";
loading[2] = "circlemod3.so";
errors += load_dso (loading, 1, RTLD_LAZY);
errors += load_dso (loading, 1, RTLD_NOW);