1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00
2000-08-25  Ulrich Drepper  <drepper@redhat.com>

	* elf/Makefile (LDFLAGS-nodelete): Add -rdynamic.
	* elf/nodelete.c (fini_ran): New global variable.
	(do_test): Before every dlclose call clear fini_ran and test
	afterwards that it is not set by the destructors.
	* elf/nodelmod1.c: Add destructor which sets fini_ran.
	* elf/nodelmod2.c: Likewise.
	* elf/nodelmod4.c: Likewise.
This commit is contained in:
Ulrich Drepper
2000-08-25 19:33:19 +00:00
parent bb8d0fd5b1
commit ad7534c8f0
9 changed files with 114 additions and 2 deletions

View File

@ -7,6 +7,9 @@
static sigjmp_buf jmpbuf;
int fini_ran;
static void
handler (int sig)
{
@ -60,6 +63,7 @@ do_test (void)
*varp = 20000720;
/* Now close the object. */
fini_ran = 0;
if (dlclose (p) != 0)
{
puts ("failed to close \"nodelmod1.so\"");
@ -73,6 +77,11 @@ do_test (void)
puts ("\"var1\" value not correct");
result = 1;
}
else if (fini_ran != 0)
{
puts ("destructor of \"nodelmod1.so\" ran");
result = 1;
}
else
puts ("-z nodelete test succeeded");
}
@ -108,6 +117,7 @@ do_test (void)
*varp = 42;
/* Now close the object. */
fini_ran = 0;
if (dlclose (p) != 0)
{
puts ("failed to close \"nodelmod2.so\"");
@ -121,6 +131,11 @@ do_test (void)
puts ("\"var2\" value not correct");
result = 1;
}
else if (fini_ran != 0)
{
puts ("destructor of \"nodelmod2.so\" ran");
result = 1;
}
else
puts ("RTLD_NODELETE test succeeded");
}
@ -158,6 +173,7 @@ do_test (void)
*varp = -1;
/* Now close the object. */
fini_ran = 0;
if (dlclose (p) != 0)
{
puts ("failed to close \"nodelmod3.so\"");
@ -171,6 +187,11 @@ do_test (void)
puts ("\"var_in_mod4\" value not correct");
result = 1;
}
else if (fini_ran != 0)
{
puts ("destructor of \"nodelmod4.so\" ran");
result = 1;
}
else
puts ("-z nodelete in dependency succeeded");
}