diff mbox series

[v2] uml: make CONFIG_STATIC_LINK actually static

Message ID 20200123235914.223178-1-brendanhiggins@google.com
State Superseded
Headers show
Series [v2] uml: make CONFIG_STATIC_LINK actually static | expand

Commit Message

Brendan Higgins Jan. 23, 2020, 11:59 p.m. UTC
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>
---
Changes since last revision:

Incorporated Geert Uytterhoeven's suggestion of using a separate
FORBID_STATIC_LINK config option that each driver incompatible with
static linking selects.
---
 arch/um/Kconfig         | 7 +++++++
 arch/um/drivers/Kconfig | 3 +++
 2 files changed, 10 insertions(+)

Comments

Geert Uytterhoeven Jan. 24, 2020, 7:50 a.m. UTC | #1
Hi Brendan,

On Fri, Jan 24, 2020 at 12:59 AM Brendan Higgins
<brendanhiggins@google.com> wrote:
> 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>
> ---
> Changes since last revision:
>
> Incorporated Geert Uytterhoeven's suggestion of using a separate
> FORBID_STATIC_LINK config option that each driver incompatible with
> static linking selects.
> ---
>  arch/um/Kconfig         | 7 +++++++
>  arch/um/drivers/Kconfig | 3 +++
>  2 files changed, 10 insertions(+)
>
> diff --git a/arch/um/Kconfig b/arch/um/Kconfig
> index 0917f8443c285..27a51e7dd59c6 100644
> --- a/arch/um/Kconfig
> +++ b/arch/um/Kconfig
> @@ -62,8 +62,12 @@ config NR_CPUS
>
>  source "arch/$(HEADER_ARCH)/um/Kconfig"
>
> +config FORBID_STATIC_LINK
> +       def_bool n

    bool

("n" is the default)

> +
>  config STATIC_LINK
>         bool "Force a static link"
> +       depends on !FORBID_STATIC_LINK
>         default n

"default n" is the default (preexisting)

Gr{oetje,eeting}s,

                        Geert
Brendan Higgins Jan. 24, 2020, 10:03 p.m. UTC | #2
On Thu, Jan 23, 2020 at 11:51 PM Geert Uytterhoeven
<geert@linux-m68k.org> wrote:
>
> Hi Brendan,
>
> On Fri, Jan 24, 2020 at 12:59 AM Brendan Higgins
> <brendanhiggins@google.com> wrote:
> > 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>
> > ---
> > Changes since last revision:
> >
> > Incorporated Geert Uytterhoeven's suggestion of using a separate
> > FORBID_STATIC_LINK config option that each driver incompatible with
> > static linking selects.
> > ---
> >  arch/um/Kconfig         | 7 +++++++
> >  arch/um/drivers/Kconfig | 3 +++
> >  2 files changed, 10 insertions(+)
> >
> > diff --git a/arch/um/Kconfig b/arch/um/Kconfig
> > index 0917f8443c285..27a51e7dd59c6 100644
> > --- a/arch/um/Kconfig
> > +++ b/arch/um/Kconfig
> > @@ -62,8 +62,12 @@ config NR_CPUS
> >
> >  source "arch/$(HEADER_ARCH)/um/Kconfig"
> >
> > +config FORBID_STATIC_LINK
> > +       def_bool n
>
>     bool
>
> ("n" is the default)

Whoops, I always forget that.

Thanks for catching that!

> > +
> >  config STATIC_LINK
> >         bool "Force a static link"
> > +       depends on !FORBID_STATIC_LINK
> >         default n
>
> "default n" is the default (preexisting)

I'll go ahead and fix that too, then.

Thanks!
diff mbox series

Patch

diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index 0917f8443c285..27a51e7dd59c6 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -62,8 +62,12 @@  config NR_CPUS
 
 source "arch/$(HEADER_ARCH)/um/Kconfig"
 
+config FORBID_STATIC_LINK
+	def_bool n
+
 config STATIC_LINK
 	bool "Force a static link"
+	depends on !FORBID_STATIC_LINK
 	default n
 	help
 	  This option gives you the ability to force a static link of UML.
@@ -73,6 +77,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
diff --git a/arch/um/drivers/Kconfig b/arch/um/drivers/Kconfig
index 72d4170557820..9160ead56e33c 100644
--- a/arch/um/drivers/Kconfig
+++ b/arch/um/drivers/Kconfig
@@ -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