summaryrefslogtreecommitdiff
path: root/elf/tst-leaks1.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2018-12-27 19:31:37 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-12-27 19:31:37 +0000
commit74a412373b66a38b6ce8156f027ce26f89a7462f (patch)
treea59ce0af7ffd48641ca9124d697f7a6b57b26931 /elf/tst-leaks1.c
parent2004eeba8fb2a92105bbf95b280fff6dc1d84144 (diff)
parent4cbfda396f7cd9e83116c28965ade73d80c1cb82 (diff)
Merge commit 'refs/top-bases/t/ONSTACK' into t/ONSTACK
Diffstat (limited to 'elf/tst-leaks1.c')
-rw-r--r--elf/tst-leaks1.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/elf/tst-leaks1.c b/elf/tst-leaks1.c
index dcff28dafa..75bc92d25f 100644
--- a/elf/tst-leaks1.c
+++ b/elf/tst-leaks1.c
@@ -6,13 +6,28 @@
static int
do_test (void)
{
+ void *h;
+ int ret = 0;
+ /* Carry out *one* failing call to dlopen before starting mtrace to
+ force any one-time inintialization that may happen to the
+ executable link map e.g. expansion and caching of $ORIGIN. */
+ h = dlopen ("$ORIGIN/tst-leaks1.o", RTLD_LAZY);
+ if (h != NULL)
+ {
+ puts ("dlopen unexpectedly succeeded");
+ ret = 1;
+ dlclose (h);
+ }
+
+ /* Start tracing and run each test 5 times to see if there are any
+ leaks in the failing dlopen. */
mtrace ();
- int ret = 0;
for (int i = 0; i < 10; i++)
{
- void *h = dlopen (i < 5 ? "./tst-leaks1.c"
- : "$ORIGIN/tst-leaks1.o", RTLD_LAZY);
+ h = dlopen (i < 5
+ ? "./tst-leaks1.c"
+ : "$ORIGIN/tst-leaks1.o", RTLD_LAZY);
if (h != NULL)
{
puts ("dlopen unexpectedly succeeded");
@@ -24,5 +39,4 @@ do_test (void)
return ret;
}
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
+#include <support/test-driver.c>