2019-12-10 21:22:17

by Brendan Higgins

[permalink] [raw]
Subject: [PATCH v1] uml: make CONFIG_STATIC_LINK actually static

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/[email protected]/#t
Signed-off-by: Brendan Higgins <[email protected]>
---
arch/um/Kconfig | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index 2a6d04fcb3e91..1ddc8745123f2 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -63,6 +63,7 @@ source "arch/$(HEADER_ARCH)/um/Kconfig"

config STATIC_LINK
bool "Force a static link"
+ depends on !UML_NET_VECTOR && !UML_NET_VDE && !UML_NET_PCAP
default n
help
This option gives you the ability to force a static link of UML.
@@ -72,6 +73,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
--
2.24.0.525.g8f36a354ae-goog


2019-12-11 08:40:40

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH v1] uml: make CONFIG_STATIC_LINK actually static

Hi Brendan,

On Tue, Dec 10, 2019 at 10:21 PM Brendan Higgins
<[email protected]> 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/[email protected]/#t
> Signed-off-by: Brendan Higgins <[email protected]>
> ---
> arch/um/Kconfig | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/um/Kconfig b/arch/um/Kconfig
> index 2a6d04fcb3e91..1ddc8745123f2 100644
> --- a/arch/um/Kconfig
> +++ b/arch/um/Kconfig
> @@ -63,6 +63,7 @@ source "arch/$(HEADER_ARCH)/um/Kconfig"
>
> config STATIC_LINK
> bool "Force a static link"
> + depends on !UML_NET_VECTOR && !UML_NET_VDE && !UML_NET_PCAP

"depends on !FORBID_STATIC_LINK"?

Then all the drivers that are incompatible with static linking can just
select FORBID_STATIC_LINK in their own Kconfig block.

> default n
> help
> This option gives you the ability to force a static link of UML.
> @@ -72,6 +73,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
> --
> 2.24.0.525.g8f36a354ae-goog

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2020-01-19 21:41:28

by Richard Weinberger

[permalink] [raw]
Subject: Re: [PATCH v1] uml: make CONFIG_STATIC_LINK actually static

On Wed, Dec 11, 2019 at 9:40 AM Geert Uytterhoeven <[email protected]> wrote:
>
> Hi Brendan,
>
> On Tue, Dec 10, 2019 at 10:21 PM Brendan Higgins
> <[email protected]> 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/[email protected]/#t
> > Signed-off-by: Brendan Higgins <[email protected]>
> > ---
> > arch/um/Kconfig | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/arch/um/Kconfig b/arch/um/Kconfig
> > index 2a6d04fcb3e91..1ddc8745123f2 100644
> > --- a/arch/um/Kconfig
> > +++ b/arch/um/Kconfig
> > @@ -63,6 +63,7 @@ source "arch/$(HEADER_ARCH)/um/Kconfig"
> >
> > config STATIC_LINK
> > bool "Force a static link"
> > + depends on !UML_NET_VECTOR && !UML_NET_VDE && !UML_NET_PCAP
>
> "depends on !FORBID_STATIC_LINK"?
>
> Then all the drivers that are incompatible with static linking can just
> select FORBID_STATIC_LINK in their own Kconfig block.

Makes sense!

--
Thanks,
//richard

2020-01-24 00:00:37

by Brendan Higgins

[permalink] [raw]
Subject: Re: [PATCH v1] uml: make CONFIG_STATIC_LINK actually static

On Sun, Jan 19, 2020 at 4:30 PM James McMechan
<[email protected]> wrote:
>
> Resent for the mailing list since my webmail decided to try to send html...
>
> I agree that at least the UML_NET_VECTOR is not compatible with static linking at the moment,
> but I was running a statically linked UML with PCAP back in December.
> I was having no problems, but I don't remember if I was using PCAP itself...

I was just going off of what Anton and Johannes said in regard to
PCAP; it seems to have deviated from the libpcap library, so I have
been unable to test it:

http://lists.infradead.org/pipermail/linux-um/2019-December/002548.html

Anton, do you have the fix for PCAP out yet?

> I seem to remember a minor patch I did to fix a symbol conflict but nothing of note.
> I have not played around with UML_NET_VECTOR since I run the normal networking.
> And I did not find any config info with a quick googling the vector version so I just ignored it.

Nevertheless, VDE still causes the linker to complain.

Cheers