lkml.org 
[lkml]   [2022]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v2] kbuild: add configurable debug info level
    +CC: Fangrui Song <maskray@google.com>




    On Sun, Aug 14, 2022 at 9:25 AM Dmitrii Bundin
    <dmitrii.bundin.a@gmail.com> wrote:
    >
    > Provides a way to configure debug info level (-glevel).
    > Debug level 3 includes extra information such as macro definitions. With
    > level 3 enabled it's possible to expand macros right from the debugging
    > session in gdb simplifying debugging when complicated macros involved.
    > The default level is set to 2 to not change the default build behavior.
    >
    > Signed-off-by: Dmitrii Bundin <dmitrii.bundin.a@gmail.com>
    > ---
    >
    > Changes in v2: https://lore.kernel.org/all/20220804223504.4739-1-dmitrii.bundin.a@gmail.com/
    > - Replace hardcoded -g3 with a configurable debug info level
    >
    > lib/Kconfig.debug | 11 +++++++++++
    > scripts/Makefile.debug | 2 +-
    > 2 files changed, 12 insertions(+), 1 deletion(-)
    >
    > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
    > index 2e24db4bff19..a17c12c20290 100644
    > --- a/lib/Kconfig.debug
    > +++ b/lib/Kconfig.debug
    > @@ -304,6 +304,17 @@ config DEBUG_INFO_REDUCED
    > DEBUG_INFO build and compile times are reduced too.
    > Only works with newer gcc versions.
    >
    > +config DEBUG_INFO_LEVEL
    > + int "Debug info level"
    > + range 0 3
    > + default "2"
    > + help
    > + Sets the level of how much debug information to generate (-glevel).
    > + Level 1 produces minimal debug information without including information
    > + about local variables. Level 3 includes extra information like macro
    > + definitions. Setting up level 3 will require significantly more disk
    > + space and increase built time. Level 0 produces no debug information.
    > +



    We already have CONFIG_DEBUG_INFO_NONE to
    disable the debug info.


    The combination of CONFIG_DEBUG_INFO=y and
    CONFIG_DEBUG_INFO_LEVEL=0 (-g0)
    would emulate CONFIG_DEBUG_INFO_NONE ?



    Using 'int' does not look sensible to me.





    > 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..28beffc42e71 100644
    > --- a/scripts/Makefile.debug
    > +++ b/scripts/Makefile.debug
    > @@ -3,7 +3,7 @@ DEBUG_CFLAGS :=
    > ifdef CONFIG_DEBUG_INFO_SPLIT
    > DEBUG_CFLAGS += -gsplit-dwarf
    > else
    > -DEBUG_CFLAGS += -g
    > +DEBUG_CFLAGS += -g$(CONFIG_DEBUG_INFO_LEVEL)
    > endif
    >
    > ifndef CONFIG_AS_IS_LLVM
    > --
    > 2.17.1
    >


    I want to consult Fangrui Song for this part.


    With this Makefile code, CONFIG_DEBUG_INFO_SPLIT
    takes the presidency over CONFIG_DEBUG_INFO_LEVEL.


    When CONFIG_DEBUG_INFO_SPLIT is enabled (-gsplit-dwarf),
    it always uses the default -g2 level.
    CONFIG_DEBUG_INFO_LEVEL is just ignored silently.



    It might be sensible in older GCC/Clang behavior because
    -gsplit-dwarf implied -g2.


    But, with this commit:
    https://reviews.llvm.org/D80391

    -gsplit-dwarf and -g<level> are orthogonal
    for GCC 11+/Clang 12+, correct?


    I think "splitting debug files" and "debug level"
    should be controlled independently.
    (but it depends on the compiler version, if I understood correctly)






    --
    Best Regards
    Masahiro Yamada

    \
     
     \ /
      Last update: 2022-08-14 04:03    [W:2.508 / U:0.448 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site