Message ID | 20200123235914.223178-1-brendanhiggins@google.com |
---|---|
State | Superseded |
Headers | show |
Series | [v2] uml: make CONFIG_STATIC_LINK actually static | expand |
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
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 --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
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(+)