[PATCH] nss: Remove --enable-static-nss configure option
fanquake
fanquake@gmail.com
Wed Jun 24 14:20:52 GMT 2026
From: Michael Ford <fanquake@gmail.com>
Since the NSS reorganization in glibc 2.33 (bug 27959) the
--enable-static-nss option no longer changes the build: the files and
dns services are built into libc unconditionally, and there is no longer
any mechanism to bake the remaining services into libc.a. After removing
the dead -DSTATIC_NSS define <gnu/lib-names.h> include (commits
82b710c1900944ea122a3880f542215948fc023d and
21694014388ad278aa03241800d1f0c0a7127ad1), the option's only remaining
effect was to define DO_STATIC_NSS, which suppresses the static link
warnings on the NSS interface functions in libc.a.
DO_STATIC_NSS was also defined for --disable-shared builds. With the
macro gone, nss_interface_function unconditionally emits the static link
warning, so --disable-shared builds now carry the same NSS link warnings
in libc.a that a default build already produces. static_nss and
build-static-nss are removed along with the configure option.
tst-nss-static, previously built only when build-static-nss was set, is
now added to tests-static unconditionally so the static NSS path retains
test coverage.
Signed-off-by: Michael Ford <fanquake@gmail.com>
---
INSTALL | 6 ------
NEWS | 6 ++++++
config.h.in | 3 ---
config.make.in | 1 -
configure | 19 -------------------
configure.ac | 14 --------------
manual/install.texi | 6 ------
nss/Makefile | 3 ---
nss/nsswitch.h | 12 +++++-------
9 files changed, 11 insertions(+), 59 deletions(-)
diff --git a/INSTALL b/INSTALL
index b67da640..cd4b6e5c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -158,12 +158,6 @@ passed to 'configure'. For example:
Don't build libraries with profiling information. You may want to
use this option if you don't plan to do profiling.
-'--enable-static-nss'
- Compile static versions of the NSS (Name Service Switch) libraries.
- This is not recommended because it defeats the purpose of NSS; a
- program linked statically with the NSS libraries cannot be
- dynamically reconfigured to use a different name database.
-
'--enable-hardcoded-path-in-tests'
By default, dynamic tests are linked to run with the installed C
library. This option hardcodes the newly built C library path in
diff --git a/NEWS b/NEWS
index 6190ac43..9c90e25b 100644
--- a/NEWS
+++ b/NEWS
@@ -43,6 +43,12 @@ Deprecated and removed features, and other changes affecting compatibility:
The corresponding AArch64-specific functionality that was previously
activated by this flag has been removed as well.
+* The --enable-static-nss configure option has been removed. It had no
+ effect on the build since the NSS reorganization in glibc 2.33; its only
+ remaining behavior was to suppress the link-time warnings on the NSS
+ interface functions in libc.a. Those warnings are now emitted
+ unconditionally, including for --disable-shared builds (bug 27959).
+
Changes to build and runtime requirements:
[Add changes to build and runtime requirements here]
diff --git a/config.h.in b/config.h.in
index 40854de9..17bdd305 100644
--- a/config.h.in
+++ b/config.h.in
@@ -32,9 +32,6 @@
/* Define if _Unwind_Find_FDE should be exported from glibc. */
#undef EXPORT_UNWIND_FIND_FDE
-/* Define if static NSS modules are wanted. */
-#undef DO_STATIC_NSS
-
/* Assume that the compiler supports __builtin_expect.
This macro is necessary for proper compilation of code
shared between GNU libc and GNU gettext projects. */
diff --git a/config.make.in b/config.make.in
index 12ccb55e..0ddc24a5 100644
--- a/config.make.in
+++ b/config.make.in
@@ -81,7 +81,6 @@ mach-interface-list = @mach_interface_list@
# Configuration options.
build-shared = @shared@
build-profile = @profile@
-build-static-nss = @static_nss@
cross-compiling = @cross_compiling@
force-install = @force_install@
build-nscd = @build_nscd@
diff --git a/configure b/configure
index 90c4b4f8..60427953 100755
--- a/configure
+++ b/configure
@@ -616,7 +616,6 @@ RELEASE
VERSION
mach_interface_list
DEFINES
-static_nss
profile
libc_cv_multidir
test_enable_cet
@@ -804,7 +803,6 @@ enable_hardcoded_path_in_tests
enable_hidden_plt
enable_bind_now
enable_stack_protector
-enable_static_nss
enable_force_install
enable_maintainer_mode
enable_kernel
@@ -1477,7 +1475,6 @@ Optional Features:
--enable-stack-protector=[yes|no|all|strong]
Use -fstack-protector[-all|-strong] to detect glibc
buffer overflows
- --enable-static-nss build static NSS modules [default=no]
--disable-force-install don't force installation of files from this package,
even if they are older than the installed files
--enable-maintainer-mode
@@ -4614,21 +4611,6 @@ all|yes|no|strong) ;;
*) as_fn_error $? "Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"" "$LINENO" 5;;
esac
-# Check whether --enable-static-nss was given.
-if test ${enable_static_nss+y}
-then :
- enableval=$enable_static_nss; static_nss=$enableval
-else case e in #(
- e) static_nss=no ;;
-esac
-fi
-
-if test x"$static_nss" = xyes || test x"$shared" = xno; then
- static_nss=yes
- printf "%s\n" "#define DO_STATIC_NSS 1" >>confdefs.h
-
-fi
-
# Check whether --enable-force-install was given.
if test ${enable_force_install+y}
then :
@@ -9595,7 +9577,6 @@ libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
-
VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
diff --git a/configure.ac b/configure.ac
index 2a788c13..2fe7980f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -272,19 +272,6 @@ all|yes|no|strong) ;;
*) AC_MSG_ERROR([Not a valid argument for --enable-stack-protector: "$enable_stack_protector"]);;
esac
-dnl On some platforms we cannot use dynamic loading. We must provide
-dnl static NSS modules.
-AC_ARG_ENABLE([static-nss],
- AS_HELP_STRING([--enable-static-nss],
- [build static NSS modules @<:@default=no@:>@]),
- [static_nss=$enableval],
- [static_nss=no])
-dnl Enable static NSS also if we build no shared objects.
-if test x"$static_nss" = xyes || test x"$shared" = xno; then
- static_nss=yes
- AC_DEFINE(DO_STATIC_NSS)
-fi
-
AC_ARG_ENABLE([force-install],
AS_HELP_STRING([--disable-force-install],
[don't force installation of files from this package, even if they are older than the installed files]),
@@ -2200,7 +2187,6 @@ libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
AC_SUBST(libc_cv_multidir)
AC_SUBST(profile)
-AC_SUBST(static_nss)
AC_SUBST(DEFINES)
diff --git a/manual/install.texi b/manual/install.texi
index 4094baa2..48604a31 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -189,12 +189,6 @@ NOTE: @option{--enable-cet} is only supported on x86_64 and x32.
Don't build libraries with profiling information. You may want to use
this option if you don't plan to do profiling.
-@item --enable-static-nss
-Compile static versions of the NSS (Name Service Switch) libraries.
-This is not recommended because it defeats the purpose of NSS; a program
-linked statically with the NSS libraries cannot be dynamically
-reconfigured to use a different name database.
-
@item --enable-hardcoded-path-in-tests
By default, dynamic tests are linked to run with the installed C library.
This option hardcodes the newly built C library path in dynamic tests
diff --git a/nss/Makefile b/nss/Makefile
index 54389ced..b1f25f0d 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -427,12 +427,9 @@ libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) \
install-others += $(inst_vardbdir)/Makefile
-# Build static module into libc if requested
libnss_db-inhibit-o = $(filter-out .os,$(object-suffixes))
libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes))
-ifeq ($(build-static-nss),yes)
tests-static += tst-nss-static
-endif
extra-test-objs += nss_test1.os nss_test2.os nss_test_errno.os \
nss_test_gai_hv2_canonname.os
diff --git a/nss/nsswitch.h b/nss/nsswitch.h
index 1b18794f..e3191df1 100644
--- a/nss/nsswitch.h
+++ b/nss/nsswitch.h
@@ -77,13 +77,11 @@ enum
extern bool __nss_database_custom[NSS_DBSIDX_max] attribute_hidden;
#endif
-/* Warning for NSS functions, which don't require dlopen if glibc
- was built with --enable-static-nss. */
-#ifdef DO_STATIC_NSS
-# define nss_interface_function(name)
-#else
-# define nss_interface_function(name) static_link_warning (name)
-#endif
+/* NSS lookups can load service modules via dlopen at runtime, so a
+ statically linked program still depends on the shared NSS modules
+ matching the libc it was built against. Emit the static link
+ warning on the NSS interface functions accordingly. */
+#define nss_interface_function(name) static_link_warning (name)
/* Interface functions for NSS. */
--
2.43.0
More information about the Libc-alpha
mailing list