diff mbox series

kbuild: add option to set max level of debug info

Message ID 20220804223504.4739-1-dmitrii.bundin.a@gmail.com (mailing list archive)
State New, archived
Headers show
Series kbuild: add option to set max level of debug info | expand

Commit Message

Dmitrii Bundin Aug. 4, 2022, 10:35 p.m. UTC
When compiling with -g3 option and debugging with gdb it provides some
extra abilities like macro expand, info macro etc... It's sometimes
useful to unerstand behavior of complicated macros.

Signed-off-by: Dmitrii Bundin <dmitrii.bundin.a@gmail.com>
---
 lib/Kconfig.debug      | 9 +++++++++
 scripts/Makefile.debug | 2 ++
 2 files changed, 11 insertions(+)

Comments

Andrew Morton Aug. 11, 2022, 9:58 p.m. UTC | #1
On Fri,  5 Aug 2022 01:35:04 +0300 Dmitrii Bundin <dmitrii.bundin.a@gmail.com> wrote:

> When compiling with -g3 option and debugging with gdb it provides some
> extra abilities like macro expand, info macro etc... It's sometimes
> useful to unerstand behavior of complicated macros.
> 
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -304,6 +304,15 @@ config DEBUG_INFO_REDUCED
>  	  DEBUG_INFO build and compile times are reduced too.
>  	  Only works with newer gcc versions.
>  
> +config DEBUG_INFO_MAXLEVEL
> +	bool "Maximum debug information level"
> +	depends on !DEBUG_INFO_REDUCED
> +	default n
> +	help
> +	  Sets the maximum level of debug information compilers may generate
> +	  (-g3). Enabling this option will require significantly more disk space
> +	  and increase built time, but it's useful for debugging purposes.
> +
>  config DEBUG_INFO_COMPRESSED
>  	bool "Compressed debugging information"
>  	depends on $(cc-option,-gz=zlib)
> diff --git a/scripts/Makefile.debug b/scripts/Makefile.debug
> index 9f39b0130551..7e1d8beecfc4 100644
> --- a/scripts/Makefile.debug
> +++ b/scripts/Makefile.debug
> @@ -2,6 +2,8 @@ DEBUG_CFLAGS	:=
>  
>  ifdef CONFIG_DEBUG_INFO_SPLIT
>  DEBUG_CFLAGS	+= -gsplit-dwarf
> +else ifdef CONFIG_DEBUG_INFO_MAXLEVEL
> +DEBUG_CFLAGS	+= -g3
>  else
>  DEBUG_CFLAGS	+= -g
>  endif

What happens when the gcc developers add -g4?  Or if a user wants -g2?

In other words, can we make this a Kconfig-selectable level, with the
default `1'?
Dmitrii Bundin Aug. 12, 2022, 12:33 a.m. UTC | #2
> In other words, can we make this a Kconfig-selectable level, with the
> default `1'?

Thanks for pointing this out.

Here is a little note from my side. According to the GCC documentation
the default level is 2. So I would propose to set the default Kconfig
option value to 2 as well to not change the build behavior.

Does this sound reasonable?

Regards,
Dmitrii
On Fri, Aug 12, 2022 at 12:58 AM Andrew Morton
<akpm@linux-foundation.org> wrote:
>
> On Fri,  5 Aug 2022 01:35:04 +0300 Dmitrii Bundin <dmitrii.bundin.a@gmail.com> wrote:
>
> > When compiling with -g3 option and debugging with gdb it provides some
> > extra abilities like macro expand, info macro etc... It's sometimes
> > useful to unerstand behavior of complicated macros.
> >
> > --- a/lib/Kconfig.debug
> > +++ b/lib/Kconfig.debug
> > @@ -304,6 +304,15 @@ config DEBUG_INFO_REDUCED
> >         DEBUG_INFO build and compile times are reduced too.
> >         Only works with newer gcc versions.
> >
> > +config DEBUG_INFO_MAXLEVEL
> > +     bool "Maximum debug information level"
> > +     depends on !DEBUG_INFO_REDUCED
> > +     default n
> > +     help
> > +       Sets the maximum level of debug information compilers may generate
> > +       (-g3). Enabling this option will require significantly more disk space
> > +       and increase built time, but it's useful for debugging purposes.
> > +
> >  config DEBUG_INFO_COMPRESSED
> >       bool "Compressed debugging information"
> >       depends on $(cc-option,-gz=zlib)
> > diff --git a/scripts/Makefile.debug b/scripts/Makefile.debug
> > index 9f39b0130551..7e1d8beecfc4 100644
> > --- a/scripts/Makefile.debug
> > +++ b/scripts/Makefile.debug
> > @@ -2,6 +2,8 @@ DEBUG_CFLAGS  :=
> >
> >  ifdef CONFIG_DEBUG_INFO_SPLIT
> >  DEBUG_CFLAGS += -gsplit-dwarf
> > +else ifdef CONFIG_DEBUG_INFO_MAXLEVEL
> > +DEBUG_CFLAGS += -g3
> >  else
> >  DEBUG_CFLAGS += -g
> >  endif
>
> What happens when the gcc developers add -g4?  Or if a user wants -g2?
>
> In other words, can we make this a Kconfig-selectable level, with the
> default `1'?
diff mbox series

Patch

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 2e24db4bff19..1e8bef3e2a95 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -304,6 +304,15 @@  config DEBUG_INFO_REDUCED
 	  DEBUG_INFO build and compile times are reduced too.
 	  Only works with newer gcc versions.
 
+config DEBUG_INFO_MAXLEVEL
+	bool "Maximum debug information level"
+	depends on !DEBUG_INFO_REDUCED
+	default n
+	help
+	  Sets the maximum level of debug information compilers may generate
+	  (-g3). Enabling this option will require significantly more disk space
+	  and increase built time, but it's useful for debugging purposes.
+
 config DEBUG_INFO_COMPRESSED
 	bool "Compressed debugging information"
 	depends on $(cc-option,-gz=zlib)
diff --git a/scripts/Makefile.debug b/scripts/Makefile.debug
index 9f39b0130551..7e1d8beecfc4 100644
--- a/scripts/Makefile.debug
+++ b/scripts/Makefile.debug
@@ -2,6 +2,8 @@  DEBUG_CFLAGS	:=
 
 ifdef CONFIG_DEBUG_INFO_SPLIT
 DEBUG_CFLAGS	+= -gsplit-dwarf
+else ifdef CONFIG_DEBUG_INFO_MAXLEVEL
+DEBUG_CFLAGS	+= -g3
 else
 DEBUG_CFLAGS	+= -g
 endif