Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
glibc/elf/tst-nodelete.cc
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
51 lines (44 sloc)
1.71 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "../dlfcn/dlfcn.h" | |
#include <stdio.h> | |
#include <stdlib.h> | |
static int | |
do_test (void) | |
{ | |
int result = 0; | |
/* This is a test for correct handling of dlopen failures for library that | |
is loaded with RTLD_NODELETE flag. The first dlopen should fail because | |
of undefined symbols in shared library. The second dlopen then verifies | |
that library was properly unloaded. */ | |
if (dlopen ("tst-nodelete-rtldmod.so", RTLD_NOW | RTLD_NODELETE) != NULL | |
|| dlopen ("tst-nodelete-rtldmod.so", RTLD_LAZY | RTLD_NOLOAD) != NULL) | |
{ | |
printf ("RTLD_NODELETE test failed\n"); | |
result = 1; | |
} | |
/* This is a test for correct handling of dlopen failures for library that | |
is linked with '-z nodelete' option and hence has DF_1_NODELETE flag. | |
The first dlopen should fail because of undefined symbols in shared | |
library. The second dlopen then verifies that library was properly | |
unloaded. */ | |
if (dlopen ("tst-nodelete-zmod.so", RTLD_NOW) != NULL | |
|| dlopen ("tst-nodelete-zmod.so", RTLD_LAZY | RTLD_NOLOAD) != NULL) | |
{ | |
printf ("-z nodelete test failed\n"); | |
result = 1; | |
} | |
/* This is a test for correct handling of dlopen failures for library | |
with unique symbols. The first dlopen should fail because of undefined | |
symbols in shared library. The second dlopen then verifies that library | |
was properly unloaded. */ | |
if (dlopen ("tst-nodelete-uniquemod.so", RTLD_NOW) != NULL | |
|| dlopen ("tst-nodelete-uniquemod.so", RTLD_LAZY | RTLD_NOLOAD) != NULL) | |
{ | |
printf ("Unique symbols test failed\n"); | |
result = 1; | |
} | |
if (result == 0) | |
printf ("SUCCESS\n"); | |
return result; | |
} | |
#define TEST_FUNCTION do_test () | |
#include "../test-skeleton.c" |