lkml.org 
[lkml]   [2018]   [May]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/5] kernel hacking: new config NO_AUTO_INLINE to disable compiler atuo-inline optimizations
    Date
    From: Changbin Du <changbin.du@intel.com>

    This patch add a new kernel hacking option NO_AUTO_INLINE. Selecting
    this option will make compiler not auto-inline kernel functions. By
    enabling this option, all the kernel functions (including static ones)
    will not be optimized out except those marked as inline or always_inline.
    This is useful when you are using ftrace to understand the control flow
    of kernel code or tracing some static functions.

    Signed-off-by: Changbin Du <changbin.du@intel.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    ---
    Makefile | 6 ++++++
    lib/Kconfig.debug | 13 +++++++++++++
    2 files changed, 19 insertions(+)

    diff --git a/Makefile b/Makefile
    index 619a85a..eb694f6 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -775,6 +775,12 @@ KBUILD_CFLAGS += $(call cc-option, -femit-struct-debug-baseonly) \
    $(call cc-option,-fno-var-tracking)
    endif

    +ifdef CONFIG_NO_AUTO_INLINE
    +KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions) \
    + $(call cc-option, -fno-inline-small-functions) \
    + $(call cc-option, -fno-inline-functions-called-once)
    +endif
    +
    ifdef CONFIG_FUNCTION_TRACER
    ifndef CC_FLAGS_FTRACE
    CC_FLAGS_FTRACE := -pg
    diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
    index c40c7b7..90f35ad 100644
    --- a/lib/Kconfig.debug
    +++ b/lib/Kconfig.debug
    @@ -198,6 +198,19 @@ config GDB_SCRIPTS
    instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
    for further details.

    +config NO_AUTO_INLINE
    + bool "Disable compiler atuo-inline optimizations"
    + default n
    + help
    + This will make compiler not auto-inline kernel functions for
    + optimization. By enabling this option, all the kernel functions
    + (including static ones) will not be optimized out except those
    + marked as inline or always_inline. This is useful when you are
    + using ftrace to understand the control flow of kernel code or
    + tracing some static functions.
    +
    + Use only if you want to debug the kernel.
    +
    config ENABLE_WARN_DEPRECATED
    bool "Enable __deprecated logic"
    default y
    --
    2.7.4
    \
     
     \ /
      Last update: 2018-05-01 15:12    [W:7.931 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site