Fix multiple definitions of __nss_*_database (bug 22918)

This commit is contained in:
Andreas Schwab 2018-03-02 23:07:14 +01:00
parent 4dc23804a2
commit eaf6753f8a
7 changed files with 21 additions and 5 deletions

View File

@ -1,3 +1,13 @@
2018-03-03 Andreas Schwab <schwab@linux-m68k.org>
[BZ #22918]
* nss/nsswitch.h (DEFINE_DATABASE): Don't define __nss_*_database.
* nss/nsswitch.c (DEFINE_DATABASE): Define __nss_*_database here.
* nscd/gai.c (__nss_hosts_database): Readd definition.
* posix/tst-rfc3484.c (__nss_hosts_database): Likewise.
* posix/tst-rfc3484-3.c (__nss_hosts_database): Likewise.
* posix/tst-rfc3484-2.c (__nss_hosts_database): Likewise.
2018-03-02 Joseph Myers <joseph@codesourcery.com> 2018-03-02 Joseph Myers <joseph@codesourcery.com>
* sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Make always_inline. * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Make always_inline.

View File

@ -45,3 +45,6 @@
#ifdef HAVE_LIBIDN #ifdef HAVE_LIBIDN
# include <libidn/idn-stub.c> # include <libidn/idn-stub.c>
#endif #endif
/* Some variables normally defined in libc. */
service_user *__nss_hosts_database attribute_hidden;

View File

@ -62,7 +62,7 @@ static service_library *nss_new_service (name_database *database,
/* Declare external database variables. */ /* Declare external database variables. */
#define DEFINE_DATABASE(name) \ #define DEFINE_DATABASE(name) \
extern service_user *__nss_##name##_database attribute_hidden; \ service_user *__nss_##name##_database attribute_hidden; \
weak_extern (__nss_##name##_database) weak_extern (__nss_##name##_database)
#include "databases.def" #include "databases.def"
#undef DEFINE_DATABASE #undef DEFINE_DATABASE

View File

@ -227,7 +227,7 @@ libc_hidden_proto (__nss_hostname_digits_dots)
/* Prototypes for __nss_*_lookup2 functions. */ /* Prototypes for __nss_*_lookup2 functions. */
#define DEFINE_DATABASE(arg) \ #define DEFINE_DATABASE(arg) \
service_user *__nss_##arg##_database attribute_hidden; \ extern service_user *__nss_##arg##_database attribute_hidden; \
int __nss_##arg##_lookup2 (service_user **, const char *, \ int __nss_##arg##_lookup2 (service_user **, const char *, \
const char *, void **); \ const char *, void **); \
libc_hidden_proto (__nss_##arg##_lookup2) libc_hidden_proto (__nss_##arg##_lookup2)

View File

@ -58,6 +58,7 @@ _res_hconf_init (void)
#undef USE_NSCD #undef USE_NSCD
#include "../sysdeps/posix/getaddrinfo.c" #include "../sysdeps/posix/getaddrinfo.c"
service_user *__nss_hosts_database attribute_hidden;
/* This is the beginning of the real test code. The above defines /* This is the beginning of the real test code. The above defines
(among other things) the function rfc3484_sort. */ (among other things) the function rfc3484_sort. */

View File

@ -58,6 +58,7 @@ _res_hconf_init (void)
#undef USE_NSCD #undef USE_NSCD
#include "../sysdeps/posix/getaddrinfo.c" #include "../sysdeps/posix/getaddrinfo.c"
service_user *__nss_hosts_database attribute_hidden;
/* This is the beginning of the real test code. The above defines /* This is the beginning of the real test code. The above defines
(among other things) the function rfc3484_sort. */ (among other things) the function rfc3484_sort. */

View File

@ -58,6 +58,7 @@ _res_hconf_init (void)
#undef USE_NSCD #undef USE_NSCD
#include "../sysdeps/posix/getaddrinfo.c" #include "../sysdeps/posix/getaddrinfo.c"
service_user *__nss_hosts_database attribute_hidden;
/* This is the beginning of the real test code. The above defines /* This is the beginning of the real test code. The above defines
(among other things) the function rfc3484_sort. */ (among other things) the function rfc3484_sort. */