diff options
author | Florian Weimer <fweimer@redhat.com> | 2019-03-14 15:02:52 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2019-03-14 15:38:00 +0100 |
commit | 081bdf942126b7d4a368d09438a06fd831c14dad (patch) | |
tree | 0443315f5c94d1b07bb59c29c6c1ac61beb4712a | |
parent | 97f8225d22ef727ae9935cc231643efdc430d530 (diff) | |
download | glibc-081bdf942126b7d4a368d09438a06fd831c14dad.tar.gz glibc-081bdf942126b7d4a368d09438a06fd831c14dad.tar.xz glibc-081bdf942126b7d4a368d09438a06fd831c14dad.zip |
nss: Fix tst-nss-files-alias-truncated for default --as-needed linking
Linking to the NSS module directly does not work if the linker defaults to --as-needed because it will remove the apparently unused DSO reference and not generate a DT_NEEDED entry. Use an explicit dlopen call, like in the other chroot tests involving NSS modules.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | nss/Makefile | 3 | ||||
-rw-r--r-- | nss/tst-nss-files-alias-truncated.c | 7 |
3 files changed, 15 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index f0281e5d10..72a1495137 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2019-03-14 Florian Weimer <fweimer@redhat.com> + + * nss/tst-nss-files-alias-truncated.c (do_test): Load + libnss_files. + * nss/Makefile (tst-nss-files-alias-truncated): Link with -ldl, + but not with libnss_files. + (tst-nss-files-alias-truncated.out): Depend on libnss_files. + 2019-03-14 Zack Weinberg <zackw@panix.com> * scripts/check-obsolete-constructs.py (HeaderChecker.check): diff --git a/nss/Makefile b/nss/Makefile index a8caa8af38..95081bddc5 100644 --- a/nss/Makefile +++ b/nss/Makefile @@ -178,4 +178,5 @@ $(objpfx)tst-nss-files-hosts-multi: $(libdl) $(objpfx)tst-nss-files-hosts-getent: $(libdl) $(objpfx)tst-nss-files-alias-leak: $(libdl) $(objpfx)tst-nss-files-alias-leak.out: $(objpfx)/libnss_files.so -$(objpfx)tst-nss-files-alias-truncated: $(objpfx)/libnss_files.so +$(objpfx)tst-nss-files-alias-truncated: $(libdl) +$(objpfx)tst-nss-files-alias-truncated.out: $(objpfx)/libnss_files.so diff --git a/nss/tst-nss-files-alias-truncated.c b/nss/tst-nss-files-alias-truncated.c index 2d6aba3c0e..029ae6a2a7 100644 --- a/nss/tst-nss-files-alias-truncated.c +++ b/nss/tst-nss-files-alias-truncated.c @@ -17,11 +17,13 @@ <http://www.gnu.org/licenses/>. */ #include <aliases.h> +#include <gnu/lib-names.h> #include <nss.h> #include <stddef.h> #include <support/check.h> #include <support/namespace.h> #include <support/test-driver.h> +#include <support/xdlfcn.h> #include <support/xunistd.h> static void @@ -42,8 +44,9 @@ in_chroot (void *closure) static int do_test (void) { - /* nss_files has already been loaded via DT_NEEDED, outside the - chroot. */ + /* Make sure we don't try to load the module in the chroot. */ + xdlopen (LIBNSS_FILES_SO, RTLD_NOW); + __nss_configure_lookup ("aliases", "files"); support_become_root (); |