2018-03-03 Andreas Schwab [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. Index: glibc-2.27/nscd/gai.c =================================================================== --- glibc-2.27.orig/nscd/gai.c +++ glibc-2.27/nscd/gai.c @@ -45,3 +45,6 @@ #ifdef HAVE_LIBIDN # include #endif + +/* Some variables normally defined in libc. */ +service_user *__nss_hosts_database attribute_hidden; Index: glibc-2.27/nss/nsswitch.c =================================================================== --- glibc-2.27.orig/nss/nsswitch.c +++ glibc-2.27/nss/nsswitch.c @@ -62,7 +62,7 @@ static service_library *nss_new_service /* Declare external database variables. */ #define DEFINE_DATABASE(name) \ - extern service_user *__nss_##name##_database attribute_hidden; \ + service_user *__nss_##name##_database attribute_hidden; \ weak_extern (__nss_##name##_database) #include "databases.def" #undef DEFINE_DATABASE Index: glibc-2.27/nss/nsswitch.h =================================================================== --- glibc-2.27.orig/nss/nsswitch.h +++ glibc-2.27/nss/nsswitch.h @@ -226,10 +226,10 @@ libc_hidden_proto (__nss_hostname_digits #define MAX_NR_ADDRS 48 /* Prototypes for __nss_*_lookup2 functions. */ -#define DEFINE_DATABASE(arg) \ - service_user *__nss_##arg##_database attribute_hidden; \ - int __nss_##arg##_lookup2 (service_user **, const char *, \ - const char *, void **); \ +#define DEFINE_DATABASE(arg) \ + extern service_user *__nss_##arg##_database attribute_hidden; \ + int __nss_##arg##_lookup2 (service_user **, const char *, \ + const char *, void **); \ libc_hidden_proto (__nss_##arg##_lookup2) #include "databases.def" #undef DEFINE_DATABASE Index: glibc-2.27/posix/tst-rfc3484-2.c =================================================================== --- glibc-2.27.orig/posix/tst-rfc3484-2.c +++ glibc-2.27/posix/tst-rfc3484-2.c @@ -58,6 +58,7 @@ _res_hconf_init (void) #undef USE_NSCD #include "../sysdeps/posix/getaddrinfo.c" +service_user *__nss_hosts_database attribute_hidden; /* This is the beginning of the real test code. The above defines (among other things) the function rfc3484_sort. */ Index: glibc-2.27/posix/tst-rfc3484-3.c =================================================================== --- glibc-2.27.orig/posix/tst-rfc3484-3.c +++ glibc-2.27/posix/tst-rfc3484-3.c @@ -58,6 +58,7 @@ _res_hconf_init (void) #undef USE_NSCD #include "../sysdeps/posix/getaddrinfo.c" +service_user *__nss_hosts_database attribute_hidden; /* This is the beginning of the real test code. The above defines (among other things) the function rfc3484_sort. */ Index: glibc-2.27/posix/tst-rfc3484.c =================================================================== --- glibc-2.27.orig/posix/tst-rfc3484.c +++ glibc-2.27/posix/tst-rfc3484.c @@ -58,6 +58,7 @@ _res_hconf_init (void) #undef USE_NSCD #include "../sysdeps/posix/getaddrinfo.c" +service_user *__nss_hosts_database attribute_hidden; /* This is the beginning of the real test code. The above defines (among other things) the function rfc3484_sort. */