um: Make CONFIG_STATIC_LINK actually static
authorBrendan Higgins <brendanhiggins@google.com>
Fri, 24 Jan 2020 22:14:01 +0000 (14:14 -0800)
committerRichard Weinberger <richard@nod.at>
Sun, 29 Mar 2020 21:51:24 +0000 (23:51 +0200)
Currently, CONFIG_STATIC_LINK can be enabled with options which cannot
be statically linked, namely UML_NET_VECTOR, UML_NET_VDE, and
UML_NET_PCAP; this is because glibc tries to load NSS which does not
support being statically linked. So make CONFIG_STATIC_LINK depend on
!UML_NET_VECTOR && !UML_NET_VDE && !UML_NET_PCAP.

Link: https://lore.kernel.org/lkml/f658f317-be54-ed75-8296-c373c2dcc697@cambridgegreys.com/#t
Signed-off-by: Brendan Higgins <brendanhiggins@google.com>
Acked-By: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
arch/um/Kconfig
arch/um/drivers/Kconfig

index 817a4c838a06c7e91cd89f6cb66ce28e4ecc2b7a..96ab7026b037d490e933cad5ef42b016ea67fd89 100644 (file)
@@ -62,9 +62,12 @@ config NR_CPUS
 
 source "arch/$(HEADER_ARCH)/um/Kconfig"
 
+config FORBID_STATIC_LINK
+       bool
+
 config STATIC_LINK
        bool "Force a static link"
-       default n
+       depends on !FORBID_STATIC_LINK
        help
          This option gives you the ability to force a static link of UML.
          Normally, UML is linked as a shared binary.  This is inconvenient for
@@ -73,6 +76,9 @@ config STATIC_LINK
          Additionally, this option enables using higher memory spaces (up to
          2.75G) for UML.
 
+         NOTE: This option is incompatible with some networking features which
+         depend on features that require being dynamically loaded (like NSS).
+
 config LD_SCRIPT_STATIC
        bool
        default y
index 72d4170557820f29d1b951a136d7399e401238e4..9160ead56e33ceeea6163eb81ebce384f357eb82 100644 (file)
@@ -234,6 +234,7 @@ config UML_NET_DAEMON
 config UML_NET_VECTOR
        bool "Vector I/O high performance network devices"
        depends on UML_NET
+       select FORBID_STATIC_LINK
        help
        This User-Mode Linux network driver uses multi-message send
        and receive functions. The host running the UML guest must have
@@ -245,6 +246,7 @@ config UML_NET_VECTOR
 config UML_NET_VDE
        bool "VDE transport (obsolete)"
        depends on UML_NET
+       select FORBID_STATIC_LINK
        help
        This User-Mode Linux network transport allows one or more running
        UMLs on a single host to communicate with each other and also
@@ -292,6 +294,7 @@ config UML_NET_MCAST
 config UML_NET_PCAP
        bool "pcap transport (obsolete)"
        depends on UML_NET
+       select FORBID_STATIC_LINK
        help
        The pcap transport makes a pcap packet stream on the host look
        like an ethernet device inside UML.  This is useful for making