diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-08-15 20:23:40 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-08-15 20:23:40 +0000 |
commit | 28977c2c1acb789660ad47e0d88e42486059c916 (patch) | |
tree | d1b43dafc0c36dc311a9bbc2177167334ff5354c /elf/tst-dlopenrpath.c | |
parent | 1e6d2101ea891d63c11e8ad096f049fbb7e35242 (diff) | |
download | glibc-28977c2c1acb789660ad47e0d88e42486059c916.tar.gz glibc-28977c2c1acb789660ad47e0d88e42486059c916.tar.xz glibc-28977c2c1acb789660ad47e0d88e42486059c916.zip |
Update.
* sysdeps/posix/getaddrinfo.c (gaih_addrtuple): Change type of addr to avoid casts. (gethosts): Removed. (gethosts2): Renamed to gethosts. Make it usable for family != AF_UNSPEC. Fix AI_V4MAPPED. (gaih_inet): Remove use of old gethosts. Always use what used to be gethosts2. If entry is found, try to use the same NSS module's getcanonname_r function. Use gethostbyaddr for AI_CANONNAME only if getcanonname_r was not available. Fix filtering of AI_V4MAPPED addresses. Numerous cleanups. * resolv/nss_dns/dns-canon.c: New file. * resolv/Makefile (libnss_dns-routines): Add dns-canon. * resolv/Versions (libnss_dns): Add _nss_dns_getcanonname_r. * elf/Makefile: Add rules to build and run tst-dlopenrpath. * elf/tst-dlopenrpath.c: New file. * elf/tst-dlopenrpathmod.c: New file. * intl/tst-gettext.sh: Adjust for change of de.po file to UTF-8.
Diffstat (limited to 'elf/tst-dlopenrpath.c')
-rw-r--r-- | elf/tst-dlopenrpath.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/elf/tst-dlopenrpath.c b/elf/tst-dlopenrpath.c new file mode 100644 index 0000000000..964f103b8c --- /dev/null +++ b/elf/tst-dlopenrpath.c @@ -0,0 +1,74 @@ +/* Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include <dlfcn.h> +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/stat.h> + + +extern int foo (void); + +static const char testsubdir[] = PFX "test-subdir"; + + +static int +do_test (void) +{ + struct stat64 st; + int result = 1; + + if (mkdir (testsubdir, 0777) != 0 + && (errno != EEXIST + || stat64 (testsubdir, &st) != 0 + || !S_ISDIR (st.st_mode))) + { + printf ("cannot create directory %s\n", testsubdir); + return 1; + } + + if (system ("cp " PFX "firstobj.so " PFX "test-subdir/in-subdir.so") != 0) + { + puts ("cannot copy DSO"); + return 1; + } + + void *p = dlopen ("in-subdir.so", RTLD_LAZY|RTLD_LOCAL); + if (p != NULL) + { + puts ("succeeded in opening in-subdir.so from do_test"); + dlclose (p); + goto out; + } + + result = foo (); + + out: +#if 0 + unlink (PFX "test-subdir/in-subdir.so"); + rmdir (testsubdir); +#endif + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |