2011-06-05 08:21:31

by Josh Triplett

[permalink] [raw]
Subject: [PATCH] Disable CONFIG_CONSTRUCTORS when not needed by CONFIG_GCOV_KERNEL

CONFIG_CONSTRUCTORS controls support for running constructor functions
at kernel init time. According to commit
b99b87f70c7785ab1e253c6220f4b0b57ce3a7f7, gcov (CONFIG_GCOV_KERNEL)
needs this. However, CONFIG_CONSTRUCTORS currently defaults to y, with
no option to disable it, and CONFIG_GCOV_KERNEL depends on it. Instead,
default it to n and have CONFIG_GCOV_KERNEL select it, so that the
normal case of CONFIG_GCOV_KERNEL=n will result in
CONFIG_CONSTRUCTORS=n.

Observed in the short list of =y values in a minimal kernel
configuration.

Signed-off-by: Josh Triplett <[email protected]>
---
CCing people copied on the original commit
b99b87f70c7785ab1e253c6220f4b0b57ce3a7f7.

init/Kconfig | 1 -
kernel/gcov/Kconfig | 3 ++-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/init/Kconfig b/init/Kconfig
index ebafac4..e9bf65f 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -19,7 +19,6 @@ config DEFCONFIG_LIST
config CONSTRUCTORS
bool
depends on !UML
- default y

config HAVE_IRQ_WORK
bool
diff --git a/kernel/gcov/Kconfig b/kernel/gcov/Kconfig
index b8cadf7..5bf924d 100644
--- a/kernel/gcov/Kconfig
+++ b/kernel/gcov/Kconfig
@@ -2,7 +2,8 @@ menu "GCOV-based kernel profiling"

config GCOV_KERNEL
bool "Enable gcov-based kernel profiling"
- depends on DEBUG_FS && CONSTRUCTORS
+ depends on DEBUG_FS
+ select CONSTRUCTORS
default n
---help---
This option enables gcov-based code profiling (e.g. for code coverage
--
1.7.5.3


2011-06-06 10:57:16

by Peter Oberparleiter

[permalink] [raw]
Subject: Re: [PATCH] Disable CONFIG_CONSTRUCTORS when not needed by CONFIG_GCOV_KERNEL

On 05.06.2011 10:21, Josh Triplett wrote:
> CONFIG_CONSTRUCTORS controls support for running constructor functions
> at kernel init time. According to commit
> b99b87f70c7785ab1e253c6220f4b0b57ce3a7f7, gcov (CONFIG_GCOV_KERNEL)
> needs this. However, CONFIG_CONSTRUCTORS currently defaults to y, with
> no option to disable it, and CONFIG_GCOV_KERNEL depends on it. Instead,
> default it to n and have CONFIG_GCOV_KERNEL select it, so that the
> normal case of CONFIG_GCOV_KERNEL=n will result in
> CONFIG_CONSTRUCTORS=n.
>
> Observed in the short list of =y values in a minimal kernel
> configuration.
>
> Signed-off-by: Josh Triplett<[email protected]>
> ---

I tested this patch and GCOV profiling still works with it applied. To
my knowledge, GCOV profiling is the only kernel mechanism using GCC's
constructors and this may save some bytes.

Acked-by: Peter Oberparleiter <[email protected]>


Regards,
Peter

2011-06-06 15:52:32

by Cong Wang

[permalink] [raw]
Subject: Re: [PATCH] Disable CONFIG_CONSTRUCTORS when not needed by CONFIG_GCOV_KERNEL

On Sun, Jun 5, 2011 at 4:21 PM, Josh Triplett <[email protected]> wrote:
> CONFIG_CONSTRUCTORS controls support for running constructor functions
> at kernel init time.  According to commit
> b99b87f70c7785ab1e253c6220f4b0b57ce3a7f7, gcov (CONFIG_GCOV_KERNEL)
> needs this.  However, CONFIG_CONSTRUCTORS currently defaults to y, with
> no option to disable it, and CONFIG_GCOV_KERNEL depends on it.  Instead,
> default it to n and have CONFIG_GCOV_KERNEL select it, so that the
> normal case of CONFIG_GCOV_KERNEL=n will result in
> CONFIG_CONSTRUCTORS=n.
>
> Observed in the short list of =y values in a minimal kernel
> configuration.
>
> Signed-off-by: Josh Triplett <[email protected]>

Yeah, this is reasonable, so,

Acked-by: WANG Cong <[email protected]>

Thanks!

2011-06-06 22:11:16

by Josh Triplett

[permalink] [raw]
Subject: Re: [PATCH] Disable CONFIG_CONSTRUCTORS when not needed by CONFIG_GCOV_KERNEL

On Mon, Jun 06, 2011 at 12:56:33PM +0200, Peter Oberparleiter wrote:
> On 05.06.2011 10:21, Josh Triplett wrote:
> >CONFIG_CONSTRUCTORS controls support for running constructor functions
> >at kernel init time. According to commit
> >b99b87f70c7785ab1e253c6220f4b0b57ce3a7f7, gcov (CONFIG_GCOV_KERNEL)
> >needs this. However, CONFIG_CONSTRUCTORS currently defaults to y, with
> >no option to disable it, and CONFIG_GCOV_KERNEL depends on it. Instead,
> >default it to n and have CONFIG_GCOV_KERNEL select it, so that the
> >normal case of CONFIG_GCOV_KERNEL=n will result in
> >CONFIG_CONSTRUCTORS=n.
> >
> >Observed in the short list of =y values in a minimal kernel
> >configuration.
> >
> >Signed-off-by: Josh Triplett<[email protected]>
> >---
>
> I tested this patch and GCOV profiling still works with it applied.
> To my knowledge, GCOV profiling is the only kernel mechanism using
> GCC's constructors and this may save some bytes.
>
> Acked-by: Peter Oberparleiter <[email protected]>

Excellent, thanks for testing and acking.

What tree should this patch go through?

- Josh Triplett

2011-06-07 02:39:41

by Cong Wang

[permalink] [raw]
Subject: Re: [PATCH] Disable CONFIG_CONSTRUCTORS when not needed by CONFIG_GCOV_KERNEL

On Tue, Jun 7, 2011 at 6:11 AM, Josh Triplett <[email protected]> wrote:
> On Mon, Jun 06, 2011 at 12:56:33PM +0200, Peter Oberparleiter wrote:
>> On 05.06.2011 10:21, Josh Triplett wrote:
>> >CONFIG_CONSTRUCTORS controls support for running constructor functions
>> >at kernel init time.  According to commit
>> >b99b87f70c7785ab1e253c6220f4b0b57ce3a7f7, gcov (CONFIG_GCOV_KERNEL)
>> >needs this.  However, CONFIG_CONSTRUCTORS currently defaults to y, with
>> >no option to disable it, and CONFIG_GCOV_KERNEL depends on it.  Instead,
>> >default it to n and have CONFIG_GCOV_KERNEL select it, so that the
>> >normal case of CONFIG_GCOV_KERNEL=n will result in
>> >CONFIG_CONSTRUCTORS=n.
>> >
>> >Observed in the short list of =y values in a minimal kernel
>> >configuration.
>> >
>> >Signed-off-by: Josh Triplett<[email protected]>
>> >---
>>
>> I tested this patch and GCOV profiling still works with it applied.
>> To my knowledge, GCOV profiling is the only kernel mechanism using
>> GCC's constructors and this may save some bytes.
>>
>> Acked-by: Peter Oberparleiter <[email protected]>
>
> Excellent, thanks for testing and acking.
>
> What tree should this patch go through?
>

Andrew is supposed to take this. :)