diff mbox series

[v5,1/3] Remove $(cc-option,-gdwarf-4) dependency from CONFIG_DEBUG_INFO_DWARF4

Message ID 20210115210616.404156-2-ndesaulniers@google.com (mailing list archive)
State New
Headers show
Series Kbuild: DWARF v5 support | expand

Commit Message

Nick Desaulniers Jan. 15, 2021, 9:06 p.m. UTC
From: Masahiro Yamada <masahiroy@kernel.org>

The -gdwarf-4 flag is supported by GCC 4.5+, and also by Clang.

You can see it at https://godbolt.org/z/6ed1oW

  For gcc 4.5.3 pane,    line 37:    .value 0x4
  For clang 10.0.1 pane, line 117:   .short 4

Given Documentation/process/changes.rst stating GCC 4.9 is the minimal
version, this cc-option is unneeded.

Note
----

CONFIG_DEBUG_INFO_DWARF4 controls the DWARF version only for C files.

As you can see in the top Makefile, -gdwarf-4 is only passed to CFLAGS.

  ifdef CONFIG_DEBUG_INFO_DWARF4
  DEBUG_CFLAGS    += -gdwarf-4
  endif

This flag is used when compiling *.c files.

On the other hand, the assembler is always given -gdwarf-2.

  KBUILD_AFLAGS   += -Wa,-gdwarf-2

Hence, the debug info that comes from *.S files is always DWARF v2.
This is simply because GAS supported only -gdwarf-2 for a long time.

Recently, GAS gained the support for --dwarf-[3|4|5] options. [1]
And, also we have Clang integrated assembler. So, the debug info
for *.S files might be improved if we want.

In my understanding, the current code is intentional, not a bug.

[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=31bf18645d98b4d3d7357353be840e320649a67d

Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
 lib/Kconfig.debug | 1 -
 1 file changed, 1 deletion(-)

Comments

Sedat Dilek Jan. 15, 2021, 9:47 p.m. UTC | #1
On Fri, Jan 15, 2021 at 10:06 PM Nick Desaulniers
<ndesaulniers@google.com> wrote:
>
> From: Masahiro Yamada <masahiroy@kernel.org>
>
> The -gdwarf-4 flag is supported by GCC 4.5+, and also by Clang.
>
> You can see it at https://godbolt.org/z/6ed1oW
>
>   For gcc 4.5.3 pane,    line 37:    .value 0x4
>   For clang 10.0.1 pane, line 117:   .short 4
>
> Given Documentation/process/changes.rst stating GCC 4.9 is the minimal
> version, this cc-option is unneeded.
>
> Note
> ----
>
> CONFIG_DEBUG_INFO_DWARF4 controls the DWARF version only for C files.
>
> As you can see in the top Makefile, -gdwarf-4 is only passed to CFLAGS.
>
>   ifdef CONFIG_DEBUG_INFO_DWARF4
>   DEBUG_CFLAGS    += -gdwarf-4
>   endif
>
> This flag is used when compiling *.c files.
>
> On the other hand, the assembler is always given -gdwarf-2.
>
>   KBUILD_AFLAGS   += -Wa,-gdwarf-2
>
> Hence, the debug info that comes from *.S files is always DWARF v2.
> This is simply because GAS supported only -gdwarf-2 for a long time.
>
> Recently, GAS gained the support for --dwarf-[3|4|5] options. [1]
> And, also we have Clang integrated assembler. So, the debug info
> for *.S files might be improved if we want.
>
> In my understanding, the current code is intentional, not a bug.
>
> [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=31bf18645d98b4d3d7357353be840e320649a67d
>
> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

Subject misses a "kbuild:" label like in all other patches.
You have:
"Remove $(cc-option,-gdwarf-4) dependency from CONFIG_DEBUG_INFO_DWARF4"

- Sedat -

> ---
>  lib/Kconfig.debug | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index 78361f0abe3a..dd7d8d35b2a5 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -258,7 +258,6 @@ config DEBUG_INFO_SPLIT
>
>  config DEBUG_INFO_DWARF4
>         bool "Generate dwarf4 debuginfo"
> -       depends on $(cc-option,-gdwarf-4)
>         help
>           Generate dwarf4 debug info. This requires recent versions
>           of gcc and gdb. It makes the debug information larger.
> --
> 2.30.0.284.gd98b1dd5eaa7-goog
>
Nick Desaulniers Jan. 15, 2021, 9:51 p.m. UTC | #2
On Fri, Jan 15, 2021 at 1:48 PM Sedat Dilek <sedat.dilek@gmail.com> wrote:
>
> On Fri, Jan 15, 2021 at 10:06 PM Nick Desaulniers
> <ndesaulniers@google.com> wrote:
> >
> > From: Masahiro Yamada <masahiroy@kernel.org>
> >
> > The -gdwarf-4 flag is supported by GCC 4.5+, and also by Clang.
> >
> > You can see it at https://godbolt.org/z/6ed1oW
> >
> >   For gcc 4.5.3 pane,    line 37:    .value 0x4
> >   For clang 10.0.1 pane, line 117:   .short 4
> >
> > Given Documentation/process/changes.rst stating GCC 4.9 is the minimal
> > version, this cc-option is unneeded.
> >
> > Note
> > ----
> >
> > CONFIG_DEBUG_INFO_DWARF4 controls the DWARF version only for C files.
> >
> > As you can see in the top Makefile, -gdwarf-4 is only passed to CFLAGS.
> >
> >   ifdef CONFIG_DEBUG_INFO_DWARF4
> >   DEBUG_CFLAGS    += -gdwarf-4
> >   endif
> >
> > This flag is used when compiling *.c files.
> >
> > On the other hand, the assembler is always given -gdwarf-2.
> >
> >   KBUILD_AFLAGS   += -Wa,-gdwarf-2
> >
> > Hence, the debug info that comes from *.S files is always DWARF v2.
> > This is simply because GAS supported only -gdwarf-2 for a long time.
> >
> > Recently, GAS gained the support for --dwarf-[3|4|5] options. [1]
> > And, also we have Clang integrated assembler. So, the debug info
> > for *.S files might be improved if we want.
> >
> > In my understanding, the current code is intentional, not a bug.
> >
> > [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=31bf18645d98b4d3d7357353be840e320649a67d
> >
> > Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> > Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
> > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
>
> Subject misses a "kbuild:" label like in all other patches.
> You have:
> "Remove $(cc-option,-gdwarf-4) dependency from CONFIG_DEBUG_INFO_DWARF4"

Ack, I wonder how that happened? Ah well, will fix in v6; thanks for
the feedback.

>
> - Sedat -
>
> > ---
> >  lib/Kconfig.debug | 1 -
> >  1 file changed, 1 deletion(-)
> >
> > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> > index 78361f0abe3a..dd7d8d35b2a5 100644
> > --- a/lib/Kconfig.debug
> > +++ b/lib/Kconfig.debug
> > @@ -258,7 +258,6 @@ config DEBUG_INFO_SPLIT
> >
> >  config DEBUG_INFO_DWARF4
> >         bool "Generate dwarf4 debuginfo"
> > -       depends on $(cc-option,-gdwarf-4)
> >         help
> >           Generate dwarf4 debug info. This requires recent versions
> >           of gcc and gdb. It makes the debug information larger.
> > --
> > 2.30.0.284.gd98b1dd5eaa7-goog
> >
Fangrui Song Jan. 15, 2021, 9:59 p.m. UTC | #3
On 2021-01-15, Nick Desaulniers wrote:
>From: Masahiro Yamada <masahiroy@kernel.org>
>
>The -gdwarf-4 flag is supported by GCC 4.5+, and also by Clang.
>
>You can see it at https://godbolt.org/z/6ed1oW
>
>  For gcc 4.5.3 pane,    line 37:    .value 0x4
>  For clang 10.0.1 pane, line 117:   .short 4
>
>Given Documentation/process/changes.rst stating GCC 4.9 is the minimal
>version, this cc-option is unneeded.
>
>Note
>----
>
>CONFIG_DEBUG_INFO_DWARF4 controls the DWARF version only for C files.
>
>As you can see in the top Makefile, -gdwarf-4 is only passed to CFLAGS.
>
>  ifdef CONFIG_DEBUG_INFO_DWARF4
>  DEBUG_CFLAGS    += -gdwarf-4
>  endif
>
>This flag is used when compiling *.c files.
>
>On the other hand, the assembler is always given -gdwarf-2.
>
>  KBUILD_AFLAGS   += -Wa,-gdwarf-2
>
>Hence, the debug info that comes from *.S files is always DWARF v2.
>This is simply because GAS supported only -gdwarf-2 for a long time.
>
>Recently, GAS gained the support for --dwarf-[3|4|5] options. [1]

The gas commit description has a typo. The supported options are -gdwarf-[345] or --gdwarf-[345].
-gdwarf2 and --gdwarf2 are kept for compatibility.

Looks good otherwise.

>And, also we have Clang integrated assembler. So, the debug info
>for *.S files might be improved if we want.
>
>In my understanding, the current code is intentional, not a bug.
>
>[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=31bf18645d98b4d3d7357353be840e320649a67d
>
>Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
>Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
>Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
>---
> lib/Kconfig.debug | 1 -
> 1 file changed, 1 deletion(-)
>
>diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
>index 78361f0abe3a..dd7d8d35b2a5 100644
>--- a/lib/Kconfig.debug
>+++ b/lib/Kconfig.debug
>@@ -258,7 +258,6 @@ config DEBUG_INFO_SPLIT
>
> config DEBUG_INFO_DWARF4
> 	bool "Generate dwarf4 debuginfo"
>-	depends on $(cc-option,-gdwarf-4)
> 	help
> 	  Generate dwarf4 debug info. This requires recent versions
> 	  of gcc and gdb. It makes the debug information larger.
>-- 
>2.30.0.284.gd98b1dd5eaa7-goog
>
Sedat Dilek Jan. 15, 2021, 10:03 p.m. UTC | #4
On Fri, Jan 15, 2021 at 11:00 PM Fangrui Song <maskray@google.com> wrote:
>
> On 2021-01-15, Nick Desaulniers wrote:
> >From: Masahiro Yamada <masahiroy@kernel.org>
> >
> >The -gdwarf-4 flag is supported by GCC 4.5+, and also by Clang.
> >
> >You can see it at https://godbolt.org/z/6ed1oW
> >
> >  For gcc 4.5.3 pane,    line 37:    .value 0x4
> >  For clang 10.0.1 pane, line 117:   .short 4
> >
> >Given Documentation/process/changes.rst stating GCC 4.9 is the minimal
> >version, this cc-option is unneeded.
> >
> >Note
> >----
> >
> >CONFIG_DEBUG_INFO_DWARF4 controls the DWARF version only for C files.
> >
> >As you can see in the top Makefile, -gdwarf-4 is only passed to CFLAGS.
> >
> >  ifdef CONFIG_DEBUG_INFO_DWARF4
> >  DEBUG_CFLAGS    += -gdwarf-4
> >  endif
> >
> >This flag is used when compiling *.c files.
> >
> >On the other hand, the assembler is always given -gdwarf-2.
> >
> >  KBUILD_AFLAGS   += -Wa,-gdwarf-2
> >
> >Hence, the debug info that comes from *.S files is always DWARF v2.
> >This is simply because GAS supported only -gdwarf-2 for a long time.
> >
> >Recently, GAS gained the support for --dwarf-[3|4|5] options. [1]
>
> The gas commit description has a typo. The supported options are -gdwarf-[345] or --gdwarf-[345].
> -gdwarf2 and --gdwarf2 are kept for compatibility.
>
> Looks good otherwise.
>

Good catch Fangrui.
Yesterday, I wondered - after a cut-n-paste from the patch's changelog
- why I did not see anything --dwarfX related in my logs.

- Sedat -

> >And, also we have Clang integrated assembler. So, the debug info
> >for *.S files might be improved if we want.
> >
> >In my understanding, the current code is intentional, not a bug.
> >
> >[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=31bf18645d98b4d3d7357353be840e320649a67d
> >
> >Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> >Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
> >Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> >---
> > lib/Kconfig.debug | 1 -
> > 1 file changed, 1 deletion(-)
> >
> >diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> >index 78361f0abe3a..dd7d8d35b2a5 100644
> >--- a/lib/Kconfig.debug
> >+++ b/lib/Kconfig.debug
> >@@ -258,7 +258,6 @@ config DEBUG_INFO_SPLIT
> >
> > config DEBUG_INFO_DWARF4
> >       bool "Generate dwarf4 debuginfo"
> >-      depends on $(cc-option,-gdwarf-4)
> >       help
> >         Generate dwarf4 debug info. This requires recent versions
> >         of gcc and gdb. It makes the debug information larger.
> >--
> >2.30.0.284.gd98b1dd5eaa7-goog
> >
Masahiro Yamada Jan. 15, 2021, 11:54 p.m. UTC | #5
On Sat, Jan 16, 2021 at 6:51 AM Nick Desaulniers
<ndesaulniers@google.com> wrote:
>
> On Fri, Jan 15, 2021 at 1:48 PM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> >
> > On Fri, Jan 15, 2021 at 10:06 PM Nick Desaulniers
> > <ndesaulniers@google.com> wrote:
> > >
> > > From: Masahiro Yamada <masahiroy@kernel.org>
> > >
> > > The -gdwarf-4 flag is supported by GCC 4.5+, and also by Clang.
> > >
> > > You can see it at https://godbolt.org/z/6ed1oW
> > >
> > >   For gcc 4.5.3 pane,    line 37:    .value 0x4
> > >   For clang 10.0.1 pane, line 117:   .short 4
> > >
> > > Given Documentation/process/changes.rst stating GCC 4.9 is the minimal
> > > version, this cc-option is unneeded.
> > >
> > > Note
> > > ----
> > >
> > > CONFIG_DEBUG_INFO_DWARF4 controls the DWARF version only for C files.
> > >
> > > As you can see in the top Makefile, -gdwarf-4 is only passed to CFLAGS.
> > >
> > >   ifdef CONFIG_DEBUG_INFO_DWARF4
> > >   DEBUG_CFLAGS    += -gdwarf-4
> > >   endif
> > >
> > > This flag is used when compiling *.c files.
> > >
> > > On the other hand, the assembler is always given -gdwarf-2.
> > >
> > >   KBUILD_AFLAGS   += -Wa,-gdwarf-2
> > >
> > > Hence, the debug info that comes from *.S files is always DWARF v2.
> > > This is simply because GAS supported only -gdwarf-2 for a long time.
> > >
> > > Recently, GAS gained the support for --dwarf-[3|4|5] options. [1]
> > > And, also we have Clang integrated assembler. So, the debug info
> > > for *.S files might be improved if we want.
> > >
> > > In my understanding, the current code is intentional, not a bug.
> > >
> > > [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=31bf18645d98b4d3d7357353be840e320649a67d
> > >
> > > Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> > > Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
> > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> >
> > Subject misses a "kbuild:" label like in all other patches.
> > You have:
> > "Remove $(cc-option,-gdwarf-4) dependency from CONFIG_DEBUG_INFO_DWARF4"
>
> Ack, I wonder how that happened? Ah well, will fix in v6; thanks for
> the feedback.



I will apply this in my tree,
adding "kbuild:" and fixing the typo pointed out by Fangrui.

You do not need to resend this one.








> >
> > - Sedat -
> >
> > > ---
> > >  lib/Kconfig.debug | 1 -
> > >  1 file changed, 1 deletion(-)
> > >
> > > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> > > index 78361f0abe3a..dd7d8d35b2a5 100644
> > > --- a/lib/Kconfig.debug
> > > +++ b/lib/Kconfig.debug
> > > @@ -258,7 +258,6 @@ config DEBUG_INFO_SPLIT
> > >
> > >  config DEBUG_INFO_DWARF4
> > >         bool "Generate dwarf4 debuginfo"
> > > -       depends on $(cc-option,-gdwarf-4)
> > >         help
> > >           Generate dwarf4 debug info. This requires recent versions
> > >           of gcc and gdb. It makes the debug information larger.
> > > --
> > > 2.30.0.284.gd98b1dd5eaa7-goog
> > >
>
>
>
> --
> Thanks,
> ~Nick Desaulniers



--
Best Regards
Masahiro Yamada
Masahiro Yamada Jan. 20, 2021, 5:57 a.m. UTC | #6
On Sat, Jan 16, 2021 at 8:54 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Sat, Jan 16, 2021 at 6:51 AM Nick Desaulniers
> <ndesaulniers@google.com> wrote:
> >
> > On Fri, Jan 15, 2021 at 1:48 PM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> > >
> > > On Fri, Jan 15, 2021 at 10:06 PM Nick Desaulniers
> > > <ndesaulniers@google.com> wrote:
> > > >
> > > > From: Masahiro Yamada <masahiroy@kernel.org>
> > > >
> > > > The -gdwarf-4 flag is supported by GCC 4.5+, and also by Clang.
> > > >
> > > > You can see it at https://godbolt.org/z/6ed1oW
> > > >
> > > >   For gcc 4.5.3 pane,    line 37:    .value 0x4
> > > >   For clang 10.0.1 pane, line 117:   .short 4
> > > >
> > > > Given Documentation/process/changes.rst stating GCC 4.9 is the minimal
> > > > version, this cc-option is unneeded.
> > > >
> > > > Note
> > > > ----
> > > >
> > > > CONFIG_DEBUG_INFO_DWARF4 controls the DWARF version only for C files.
> > > >
> > > > As you can see in the top Makefile, -gdwarf-4 is only passed to CFLAGS.
> > > >
> > > >   ifdef CONFIG_DEBUG_INFO_DWARF4
> > > >   DEBUG_CFLAGS    += -gdwarf-4
> > > >   endif
> > > >
> > > > This flag is used when compiling *.c files.
> > > >
> > > > On the other hand, the assembler is always given -gdwarf-2.
> > > >
> > > >   KBUILD_AFLAGS   += -Wa,-gdwarf-2
> > > >
> > > > Hence, the debug info that comes from *.S files is always DWARF v2.
> > > > This is simply because GAS supported only -gdwarf-2 for a long time.
> > > >
> > > > Recently, GAS gained the support for --dwarf-[3|4|5] options. [1]
> > > > And, also we have Clang integrated assembler. So, the debug info
> > > > for *.S files might be improved if we want.
> > > >
> > > > In my understanding, the current code is intentional, not a bug.
> > > >
> > > > [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=31bf18645d98b4d3d7357353be840e320649a67d
> > > >
> > > > Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> > > > Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
> > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> > >
> > > Subject misses a "kbuild:" label like in all other patches.
> > > You have:
> > > "Remove $(cc-option,-gdwarf-4) dependency from CONFIG_DEBUG_INFO_DWARF4"
> >
> > Ack, I wonder how that happened? Ah well, will fix in v6; thanks for
> > the feedback.
>
>
>
> I will apply this in my tree,
> adding "kbuild:" and fixing the typo pointed out by Fangrui.
>
> You do not need to resend this one.
>



Applied to linux-kbuild.


>
>
>
>
>
>
> > >
> > > - Sedat -
> > >
> > > > ---
> > > >  lib/Kconfig.debug | 1 -
> > > >  1 file changed, 1 deletion(-)
> > > >
> > > > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> > > > index 78361f0abe3a..dd7d8d35b2a5 100644
> > > > --- a/lib/Kconfig.debug
> > > > +++ b/lib/Kconfig.debug
> > > > @@ -258,7 +258,6 @@ config DEBUG_INFO_SPLIT
> > > >
> > > >  config DEBUG_INFO_DWARF4
> > > >         bool "Generate dwarf4 debuginfo"
> > > > -       depends on $(cc-option,-gdwarf-4)
> > > >         help
> > > >           Generate dwarf4 debug info. This requires recent versions
> > > >           of gcc and gdb. It makes the debug information larger.
> > > > --
> > > > 2.30.0.284.gd98b1dd5eaa7-goog
> > > >
> >
> >
> >
> > --
> > Thanks,
> > ~Nick Desaulniers
>
>
>
> --
> Best Regards
> Masahiro Yamada
diff mbox series

Patch

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 78361f0abe3a..dd7d8d35b2a5 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -258,7 +258,6 @@  config DEBUG_INFO_SPLIT
 
 config DEBUG_INFO_DWARF4
 	bool "Generate dwarf4 debuginfo"
-	depends on $(cc-option,-gdwarf-4)
 	help
 	  Generate dwarf4 debug info. This requires recent versions
 	  of gcc and gdb. It makes the debug information larger.