glibc/elf/tst-dlopenrpath.c
Ulrich Drepper 28977c2c1a 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.
2004-08-15 20:23:40 +00:00

75 lines
1.9 KiB
C

/* 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"