2015-11-27 11:14:37

by Riku Voipio

[permalink] [raw]
Subject: [PATCH v2] uselib: default depending if libc5 was used

uselib hasn't been used since libc5; glibc does not use it.
Deprecate uselib a bit more, by making the default y only
if libc5 was widely used on the plaform.

This makes arm64 kernel built with defconfig slighly smaller

bloat-o-meter:
add/remove: 0/3 grow/shrink: 0/2 up/down: 0/-1390 (-1390)
function old new delta
kernel_config_data 18164 18162 -2
uselib_flags 20 - -20
padzero 216 192 -24
sys_uselib 380 - -380
load_elf_library 964 - -964

Signed-off-by: Riku Voipio <[email protected]>
Cc: Josh Triplett <[email protected]>
---
v2: Disable on X86_64 if no 32bit support
init/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/init/Kconfig b/init/Kconfig
index c24b6f7..a4bc657 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -285,7 +285,7 @@ config FHANDLE

config USELIB
bool "uselib syscall"
- default y
+ def_bool ALPHA || M68K || SPARC || X86_32 || (X86_64 && IA32_EMULATION)
help
This option enables the uselib syscall, a system call used in the
dynamic linker from libc5 and earlier. glibc does not use this
--
2.6.2


2015-11-27 20:07:23

by Josh Triplett

[permalink] [raw]
Subject: Re: [PATCH v2] uselib: default depending if libc5 was used

On Fri, Nov 27, 2015 at 01:14:20PM +0200, Riku Voipio wrote:
> uselib hasn't been used since libc5; glibc does not use it.
> Deprecate uselib a bit more, by making the default y only
> if libc5 was widely used on the plaform.
>
> This makes arm64 kernel built with defconfig slighly smaller
>
> bloat-o-meter:
> add/remove: 0/3 grow/shrink: 0/2 up/down: 0/-1390 (-1390)
> function old new delta
> kernel_config_data 18164 18162 -2
> uselib_flags 20 - -20
> padzero 216 192 -24
> sys_uselib 380 - -380
> load_elf_library 964 - -964

One question below.

> v2: Disable on X86_64 if no 32bit support
> init/Kconfig | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/init/Kconfig b/init/Kconfig
> index c24b6f7..a4bc657 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -285,7 +285,7 @@ config FHANDLE
>
> config USELIB
> bool "uselib syscall"
> - default y
> + def_bool ALPHA || M68K || SPARC || X86_32 || (X86_64 && IA32_EMULATION)

IA32_EMULATION depends on X86_64, so doesn't that reduce to:
def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION

2015-12-01 00:31:31

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH v2] uselib: default depending if libc5 was used

On Fri, 27 Nov 2015 12:07:10 -0800 Josh Triplett <[email protected]> wrote:

> On Fri, Nov 27, 2015 at 01:14:20PM +0200, Riku Voipio wrote:
> > uselib hasn't been used since libc5; glibc does not use it.
> > Deprecate uselib a bit more, by making the default y only
> > if libc5 was widely used on the plaform.
> >
> > This makes arm64 kernel built with defconfig slighly smaller
> >
> > bloat-o-meter:
> > add/remove: 0/3 grow/shrink: 0/2 up/down: 0/-1390 (-1390)
> > function old new delta
> > kernel_config_data 18164 18162 -2
> > uselib_flags 20 - -20
> > padzero 216 192 -24
> > sys_uselib 380 - -380
> > load_elf_library 964 - -964
>
> One question below.
>
> > v2: Disable on X86_64 if no 32bit support
> > init/Kconfig | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/init/Kconfig b/init/Kconfig
> > index c24b6f7..a4bc657 100644
> > --- a/init/Kconfig
> > +++ b/init/Kconfig
> > @@ -285,7 +285,7 @@ config FHANDLE
> >
> > config USELIB
> > bool "uselib syscall"
> > - default y
> > + def_bool ALPHA || M68K || SPARC || X86_32 || (X86_64 && IA32_EMULATION)
>
> IA32_EMULATION depends on X86_64, so doesn't that reduce to:
> def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION

It's a bit old fashioned to add an expression like this at the
definition site anyway. The cool new thing is to do

def_bool ARCH_WANT_USELIB

then go off and define ARCH_WANT_USELIB in the appropriate places in
the per-arch Kconfig files.

2015-12-01 01:06:34

by Josh Triplett

[permalink] [raw]
Subject: Re: [PATCH v2] uselib: default depending if libc5 was used

On Mon, Nov 30, 2015 at 04:31:29PM -0800, Andrew Morton wrote:
> On Fri, 27 Nov 2015 12:07:10 -0800 Josh Triplett <[email protected]> wrote:
>
> > On Fri, Nov 27, 2015 at 01:14:20PM +0200, Riku Voipio wrote:
> > > uselib hasn't been used since libc5; glibc does not use it.
> > > Deprecate uselib a bit more, by making the default y only
> > > if libc5 was widely used on the plaform.
> > >
> > > This makes arm64 kernel built with defconfig slighly smaller
> > >
> > > bloat-o-meter:
> > > add/remove: 0/3 grow/shrink: 0/2 up/down: 0/-1390 (-1390)
> > > function old new delta
> > > kernel_config_data 18164 18162 -2
> > > uselib_flags 20 - -20
> > > padzero 216 192 -24
> > > sys_uselib 380 - -380
> > > load_elf_library 964 - -964
> >
> > One question below.
> >
> > > v2: Disable on X86_64 if no 32bit support
> > > init/Kconfig | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/init/Kconfig b/init/Kconfig
> > > index c24b6f7..a4bc657 100644
> > > --- a/init/Kconfig
> > > +++ b/init/Kconfig
> > > @@ -285,7 +285,7 @@ config FHANDLE
> > >
> > > config USELIB
> > > bool "uselib syscall"
> > > - default y
> > > + def_bool ALPHA || M68K || SPARC || X86_32 || (X86_64 && IA32_EMULATION)
> >
> > IA32_EMULATION depends on X86_64, so doesn't that reduce to:
> > def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION
>
> It's a bit old fashioned to add an expression like this at the
> definition site anyway. The cool new thing is to do
>
> def_bool ARCH_WANT_USELIB
>
> then go off and define ARCH_WANT_USELIB in the appropriate places in
> the per-arch Kconfig files.

Good point; that does seem cleaner.

- Josh Triplett

2015-12-01 08:46:08

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH v2] uselib: default depending if libc5 was used

Hi Andrew,

On Tue, Dec 1, 2015 at 1:31 AM, Andrew Morton <[email protected]> wrote:
> On Fri, 27 Nov 2015 12:07:10 -0800 Josh Triplett <[email protected]> wrote:
>> On Fri, Nov 27, 2015 at 01:14:20PM +0200, Riku Voipio wrote:
>> > uselib hasn't been used since libc5; glibc does not use it.
>> > Deprecate uselib a bit more, by making the default y only
>> > if libc5 was widely used on the plaform.
>> >
>> > This makes arm64 kernel built with defconfig slighly smaller
>> >
>> > bloat-o-meter:
>> > add/remove: 0/3 grow/shrink: 0/2 up/down: 0/-1390 (-1390)
>> > function old new delta
>> > kernel_config_data 18164 18162 -2
>> > uselib_flags 20 - -20
>> > padzero 216 192 -24
>> > sys_uselib 380 - -380
>> > load_elf_library 964 - -964
>>
>> One question below.
>>
>> > v2: Disable on X86_64 if no 32bit support
>> > init/Kconfig | 2 +-
>> > 1 file changed, 1 insertion(+), 1 deletion(-)
>> >
>> > diff --git a/init/Kconfig b/init/Kconfig
>> > index c24b6f7..a4bc657 100644
>> > --- a/init/Kconfig
>> > +++ b/init/Kconfig
>> > @@ -285,7 +285,7 @@ config FHANDLE
>> >
>> > config USELIB
>> > bool "uselib syscall"
>> > - default y
>> > + def_bool ALPHA || M68K || SPARC || X86_32 || (X86_64 && IA32_EMULATION)
>>
>> IA32_EMULATION depends on X86_64, so doesn't that reduce to:
>> def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION
>
> It's a bit old fashioned to add an expression like this at the
> definition site anyway. The cool new thing is to do
>
> def_bool ARCH_WANT_USELIB
>
> then go off and define ARCH_WANT_USELIB in the appropriate places in
> the per-arch Kconfig files.

That's useful for new to-be-implemented features, but this dependency list is
(hopefully) cast in stone. No new architecture should need this.
So I see no reason to clutter up more Kconfig files.

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

2015-12-01 12:35:27

by Riku Voipio

[permalink] [raw]
Subject: Re: [PATCH v2] uselib: default depending if libc5 was used

On 1 December 2015 at 10:46, Geert Uytterhoeven <[email protected]> wrote:
> On Tue, Dec 1, 2015 at 1:31 AM, Andrew Morton <[email protected]> wrote:
>> On Fri, 27 Nov 2015 12:07:10 -0800 Josh Triplett <[email protected]> wrote:
>>> IA32_EMULATION depends on X86_64, so doesn't that reduce to:
>>> def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION

Ok. looks cleaner to me.

>> It's a bit old fashioned to add an expression like this at the
>> definition site anyway. The cool new thing is to do
>>
>> def_bool ARCH_WANT_USELIB
>>
>> then go off and define ARCH_WANT_USELIB in the appropriate places in
>> the per-arch Kconfig files.
>
> That's useful for new to-be-implemented features, but this dependency list is
> (hopefully) cast in stone. No new architecture should need this.
> So I see no reason to clutter up more Kconfig files.

I agree. Splitting oneline patch to a patch that changes 5 files around kernel
tree only risks merge conflicts in this case.

Riku

2015-12-01 16:23:11

by Josh Triplett

[permalink] [raw]
Subject: Re: [PATCH v2] uselib: default depending if libc5 was used

On Tue, Dec 01, 2015 at 02:35:24PM +0200, Riku Voipio wrote:
> On 1 December 2015 at 10:46, Geert Uytterhoeven <[email protected]> wrote:
> > On Tue, Dec 1, 2015 at 1:31 AM, Andrew Morton <[email protected]> wrote:
> >> On Fri, 27 Nov 2015 12:07:10 -0800 Josh Triplett <[email protected]> wrote:
> >>> IA32_EMULATION depends on X86_64, so doesn't that reduce to:
> >>> def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION
>
> Ok. looks cleaner to me.
>
> >> It's a bit old fashioned to add an expression like this at the
> >> definition site anyway. The cool new thing is to do
> >>
> >> def_bool ARCH_WANT_USELIB
> >>
> >> then go off and define ARCH_WANT_USELIB in the appropriate places in
> >> the per-arch Kconfig files.
> >
> > That's useful for new to-be-implemented features, but this dependency list is
> > (hopefully) cast in stone. No new architecture should need this.
> > So I see no reason to clutter up more Kconfig files.
>
> I agree. Splitting oneline patch to a patch that changes 5 files around kernel
> tree only risks merge conflicts in this case.

True; I take back what I said about that approach being cleaner. It
does ease maintenance in cases where the list may change, but in this
case, the list should never change again.