Message ID | 874llxjgxa.fsf@linux-m68k.org |
---|---|
State | New |
Headers | show |
Series | Fix multiple definitions of __nss_*_database (bug 22918) | expand |
On 03/03/2018 07:51 AM, Andreas Schwab wrote: > [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. LGTM. Reviewed-by: Carlos O'Donell <carlos@redhat.com> > --- > nscd/gai.c | 3 +++ > nss/nsswitch.c | 2 +- > nss/nsswitch.h | 8 ++++---- > posix/tst-rfc3484-2.c | 1 + > posix/tst-rfc3484-3.c | 1 + > posix/tst-rfc3484.c | 1 + > 6 files changed, 11 insertions(+), 5 deletions(-) > > diff --git a/nscd/gai.c b/nscd/gai.c > index d081747797..576fd0045b 100644 > --- a/nscd/gai.c > +++ b/nscd/gai.c > @@ -45,3 +45,6 @@ > #ifdef HAVE_LIBIDN > # include <libidn/idn-stub.c> > #endif > + > +/* Some variables normally defined in libc. */ > +service_user *__nss_hosts_database attribute_hidden; > diff --git a/nss/nsswitch.c b/nss/nsswitch.c > index 4b8deedabf..ee46f24424 100644 > --- a/nss/nsswitch.c > +++ b/nss/nsswitch.c > @@ -62,7 +62,7 @@ static service_library *nss_new_service (name_database *database, > > /* 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 > diff --git a/nss/nsswitch.h b/nss/nsswitch.h > index eccb535ef5..63573b9ebc 100644 > --- a/nss/nsswitch.h > +++ b/nss/nsswitch.h > @@ -226,10 +226,10 @@ libc_hidden_proto (__nss_hostname_digits_dots) > #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 > diff --git a/posix/tst-rfc3484-2.c b/posix/tst-rfc3484-2.c > index f509534ca9..8c64ac59ff 100644 > --- a/posix/tst-rfc3484-2.c > +++ b/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. */ > diff --git a/posix/tst-rfc3484-3.c b/posix/tst-rfc3484-3.c > index ae44087a10..1c61aaf844 100644 > --- a/posix/tst-rfc3484-3.c > +++ b/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. */ > diff --git a/posix/tst-rfc3484.c b/posix/tst-rfc3484.c > index 7f191abbbc..8f45848e44 100644 > --- a/posix/tst-rfc3484.c > +++ b/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. */ >
diff --git a/nscd/gai.c b/nscd/gai.c index d081747797..576fd0045b 100644 --- a/nscd/gai.c +++ b/nscd/gai.c @@ -45,3 +45,6 @@ #ifdef HAVE_LIBIDN # include <libidn/idn-stub.c> #endif + +/* Some variables normally defined in libc. */ +service_user *__nss_hosts_database attribute_hidden; diff --git a/nss/nsswitch.c b/nss/nsswitch.c index 4b8deedabf..ee46f24424 100644 --- a/nss/nsswitch.c +++ b/nss/nsswitch.c @@ -62,7 +62,7 @@ static service_library *nss_new_service (name_database *database, /* 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 diff --git a/nss/nsswitch.h b/nss/nsswitch.h index eccb535ef5..63573b9ebc 100644 --- a/nss/nsswitch.h +++ b/nss/nsswitch.h @@ -226,10 +226,10 @@ libc_hidden_proto (__nss_hostname_digits_dots) #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 diff --git a/posix/tst-rfc3484-2.c b/posix/tst-rfc3484-2.c index f509534ca9..8c64ac59ff 100644 --- a/posix/tst-rfc3484-2.c +++ b/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. */ diff --git a/posix/tst-rfc3484-3.c b/posix/tst-rfc3484-3.c index ae44087a10..1c61aaf844 100644 --- a/posix/tst-rfc3484-3.c +++ b/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. */ diff --git a/posix/tst-rfc3484.c b/posix/tst-rfc3484.c index 7f191abbbc..8f45848e44 100644 --- a/posix/tst-rfc3484.c +++ b/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. */