This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Fix multiple definitions of __nss_*_database (bug 22918)
- From: Carlos O'Donell <carlos at redhat dot com>
- To: Andreas Schwab <schwab at linux-m68k dot org>, libc-alpha at sourceware dot org
- Date: Sat, 3 Mar 2018 08:00:48 -0800
- Subject: Re: [PATCH] Fix multiple definitions of __nss_*_database (bug 22918)
- Authentication-results: sourceware.org; auth=none
- References: <874llxjgxa.fsf@linux-m68k.org>
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. */
>
--
Cheers,
Carlos.