From 805d2e7d47affd899bd5103049fd154a0b2302c7 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 15 Aug 2000 08:23:49 +0000 Subject: [PATCH] Update. * elf/constload1.c: Call mtrace. Check return value of dlclose call. * elf/constload2.c: Add destructor to unload constload3. --- ChangeLog | 3 +++ elf/constload1.c | 9 ++++++++- elf/constload2.c | 22 ++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 963b03b..4dcd263 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2000-08-15 Ulrich Drepper + * elf/constload1.c: Call mtrace. Check return value of dlclose call. + * elf/constload2.c: Add destructor to unload constload3. + * include/link.h: Include sysd-link.h. * sysdeps/generic/sysd-link.h: New file. * sysdeps/unix/sysv/linux/sysd-link.h: New file. diff --git a/elf/constload1.c b/elf/constload1.c index 1435284..4640b77 100644 --- a/elf/constload1.c +++ b/elf/constload1.c @@ -1,6 +1,7 @@ #include #include #include +#include #include int @@ -10,11 +11,17 @@ main (void) void *h; int ret; + mtrace (); + h = dlopen ("constload2.so", RTLD_LAZY | RTLD_GLOBAL); if (h == NULL) error (EXIT_FAILURE, errno, "cannot load module \"constload2.so\""); foo = dlsym (h, "foo"); ret = foo (); - dlclose (h); + if (dlclose (h) != 0) + { + puts ("failed to close"); + exit (EXIT_FAILURE); + } return ret; } diff --git a/elf/constload2.c b/elf/constload2.c index f109838..d20e6dc 100644 --- a/elf/constload2.c +++ b/elf/constload2.c @@ -1,4 +1,6 @@ #include +#include +#include extern int bar (void); @@ -21,4 +23,24 @@ __attribute__ ((__constructor__)) init (void) { h = dlopen ("constload3.so", RTLD_GLOBAL | RTLD_LAZY); + if (h == NULL) + { + puts ("failed to load constload3"); + exit (1); + } + else + puts ("succeeded loading constload3"); +} + +static void +__attribute__ ((__destructor__)) +fini (void) +{ + if (dlclose (h) != 0) + { + puts ("failed to unload constload3"); + exit (1); + } + else + puts ("succeeded unloading constload3"); } -- 2.7.4