[v3] uml: make CONFIG_STATIC_LINK actually static
diff mbox series

Message ID 20200124221401.210449-1-brendanhiggins@google.com
State New
Headers show
Series
  • [v3] uml: make CONFIG_STATIC_LINK actually static
Related show

Commit Message

Brendan Higgins Jan. 24, 2020, 10:14 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>
---
 arch/um/Kconfig         | 8 +++++++-
 arch/um/drivers/Kconfig | 3 +++
 2 files changed, 10 insertions(+), 1 deletion(-)

Comments

Brendan Higgins Feb. 8, 2020, 1:07 a.m. UTC | #1
On Fri, Jan 24, 2020 at 2:14 PM 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>
> ---

Ping.

>  arch/um/Kconfig         | 8 +++++++-
>  arch/um/drivers/Kconfig | 3 +++
>  2 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/arch/um/Kconfig b/arch/um/Kconfig
> index 0917f8443c285..28d62151fb2ed 100644
> --- a/arch/um/Kconfig
> +++ b/arch/um/Kconfig
> @@ -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
> 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
> --
> 2.25.0.341.g760bfbb309-goog
>
Anton Ivanov Feb. 8, 2020, 7:56 a.m. UTC | #2
On 08/02/2020 01:07, Brendan Higgins wrote:
> On Fri, Jan 24, 2020 at 2:14 PM 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>
>> ---
> 
> Ping.

ICMP echo reply,

I thought I acked it :)

If not - apologies.

A.

> 
>>   arch/um/Kconfig         | 8 +++++++-
>>   arch/um/drivers/Kconfig | 3 +++
>>   2 files changed, 10 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/um/Kconfig b/arch/um/Kconfig
>> index 0917f8443c285..28d62151fb2ed 100644
>> --- a/arch/um/Kconfig
>> +++ b/arch/um/Kconfig
>> @@ -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
>> 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
>> --
>> 2.25.0.341.g760bfbb309-goog
>>
> 
> _______________________________________________
> linux-um mailing list
> linux-um@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-um
>
Anton Ivanov Feb. 10, 2020, 2:56 p.m. UTC | #3
On 24/01/2020 22:14, Brendan Higgins 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>
> ---
>   arch/um/Kconfig         | 8 +++++++-
>   arch/um/drivers/Kconfig | 3 +++
>   2 files changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/um/Kconfig b/arch/um/Kconfig
> index 0917f8443c285..28d62151fb2ed 100644
> --- a/arch/um/Kconfig
> +++ b/arch/um/Kconfig
> @@ -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
> 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
> 

Acked-By: Anton Ivanov <anton.ivanov@cambridgegreys.com>

Patch
diff mbox series

diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index 0917f8443c285..28d62151fb2ed 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -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
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